路径规划——曲线拟合详解(二):贝塞尔曲线、B样条曲线与QP优化( Fast-Planner算法核心部分)

1. 贝塞尔曲线

(1). 贝塞尔曲线的作用

贝塞尔曲线的作用是给定控制点,通过控制点生成对应的曲线进行轨迹拟合,输入为点,输出为受到控制点约束而产生的轨迹。

(2). 贝塞尔曲线的数学表达式

假设给定N个控制点,得到的为N-1阶的贝塞尔曲线,具体如下所示:

综上,可以推导出N+1个点所控制的N阶贝塞尔曲线表达式:

n阶贝塞尔曲线求导后仍然是n-1阶贝塞尔曲线,控制点为原控制点的组合

(3). 伯恩斯坦基多项式 

可以看作是二项式展开!!!

n阶伯恩斯坦基多项式求导后仍然是n-1伯恩斯坦基函数

(4). 贝塞尔曲线的性质

(5). 贝塞尔曲线的缺点

 2、B样条曲线

下面这个博主视频给我启发很大 

详解样条曲线(上)(包含贝塞尔曲线)-CSDN博客

(1). B样条曲线的优点

和Bezier曲线一样也是通过逼近一组控制点来产生曲线,但是B样条多项式的次数可独立于控制点数目(有一定限制),且允许局部控制曲线或曲面。

(2). B样条曲线的数学表达式

假设有N个控制点:

这些控制点用于定义样条曲线的走向、界限分为,则k阶B样条的定义为:

(3). B样条曲线的递推式 

(4). B样条曲线的性质

B样条多项式的次数可独立于控制点的数目(有一定限制),且允许局部控制曲线和曲面生成曲线,本质上是找一组基,各个点是坐标,线性组合。或者理解为在控制点前添加一个权重,然后累加即可。

3、B样条的导数

先讲clamped B样条

既然B样条是贝塞尔曲线的扩展,那么必然要继承贝塞尔曲线一些优良的性质。贝塞尔曲线的导数还是贝塞尔, B样条的导数还是B样条。

接下来看推导公式:

B样条公式

基函数求导

基函数求导为低一阶的基函数求导

最终的基函数求导

因此,可知,B样条的导数还是B样条, 依然保留B样条的优良特性。

控制点减1,阶数减1,那么节点数目必然是减2. 对于clamped B样条,只要是去除第一个和最后一个节点就ok了,因此clamped B样条的求导还是clamped B样条,这个性质使其方便计算,应用广泛。

4. B样条曲线的应用(Fast-Planner算法)

笔者之前已经深入总结了Fast-Planner算法原理、代码、仿真配置、真机测试的过程,笔记在下面,大家点击跳转即可,吃透Fast-Planner算法基本算是熟练掌握搜索、优化的过程了,希望对大家有所帮助!

(1). Fast算法原理与关键代码

路规算法详细解读(一)—— FAST-Planner重要部分代码解读_fast planner解析-CSDN博客文章浏览阅读1.5k次,点赞7次,收藏26次。由于最近的研究需要,需要对Fast-planner和Ego-planner的代码了解,所以写出这篇代码解读文章,本文持续更新。废话不多说了,上干货!本文基于以下大佬的代码解析基础上去阅读、理解、总结而成。三大主要部分。_fast planner解析https://blog.csdn.net/weixin_43793717/article/details/134360566?spm=1001.2014.3001.5502

(2). Fast算法仿真配置与真机测试

深入解读Fast-Planner算法看这一篇就够!(含Ubuntu20.04 + Ros noetic 环境下 Fast-planner 算法仿真环境的配置与真机效果演示。)_fast planner算法-CSDN博客文章浏览阅读3.6k次,点赞11次,收藏65次。学习Fast-Planner必读文章,本文包含了论文解读、仿真环境配置、真机测试的详细步骤与问题解答,此文是笔者对于Fast-Planner算法理解的叙述与仿真的记录,所有内容皆是原创,假设论文解读已超过万字,所有内容都是笔者一个一个敲出来的,希望对大家理解Fast-Planner算法能够有所帮助。_fast planner算法https://blog.csdn.net/weixin_43793717/article/details/131072185?spm=1001.2014.3001.5501

总结

至此,路径规划——曲线拟合详解结束,到目前为止我们总结了搜索方法、曲线拟合,其实路径规划的核心思想真正意义上来说是优化问题的求解,具体的优化问题解决方法可以跳转到笔者深蓝学院数值优化课程的学习笔记(含有深蓝学院课程PPT),不收费了,大家自取就好。希望笔者的努力能够给入门的朋友带来帮助,如果在看的过程中有什么问题可以留言给笔者,笔者都是手敲内容难免有错,还望大家多多担待~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Segment Anything Model】十三:Meta的最新工作EfficientSAM,微调到自己的数据集,代码。

🍉 博主微信 cvxiayixiao 还有其他专栏点击头像查询 🍓 【Segment Anything Model】计算机视觉检测分割任务专栏。 🍑 【公开数据集预处理】特别是医疗公开数据集的接受和预处理,提供代码讲解。 🍈 【opencv图像处理】…

【LeetCode热题100】118. 杨辉三角(动态规划)

一.题目要求 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

Android Studio gradle-8.4 配置 GreenDao

1.配置项目下的build buildscript {repositories {mavenCentral()}dependencies {classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0")classpath ("org.greenrobot:greendao-gradle-plugin:3.3.1") // 使用最新版本} } 2.配置app下的build i…

跨越网络边界:借助C++编写的下载器程序,轻松获取Amazon商品信息

背景介绍 在数字化时代,数据是新的石油。企业和开发者都在寻找高效的方法来收集和分析网络上的信息。亚马逊,作为全球最大的电子商务平台之一,拥有丰富的商品信息,这对于市场分析和竞争情报来说是一个宝贵的资源。 问题陈述 然…

持续交付工具Argo CD的部署使用

Background CI/CD(Continuous Integration/Continuous Deployment)是一种软件开发流程,旨在通过自动化和持续集成的方式提高软件交付的效率和质量。它包括持续集成(CI)和持续部署(CD)两个主要阶…

自定义gitlog格式

git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! 在使用git查看lo…

【御控物联】JavaScript JSON结构转换(16):对象To数组——综合应用

文章目录 一、JSON结构转换是什么?二、术语解释三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

php反序列化题目

[NewStarCTF 公开赛赛道]UnserializeOne 分析代码,最终需要调用到 file_get_contents 即可获得flag 从后往前分析 触发 __invoke 需要 以调用函数的方式调用一个对象 可以找到Start类 里的__isset中可以将类当作函数调用 所以需要调用到 __isset 就需要 isset()…

提示工程中的10个设计模式

我们可以将提示词定义为向大型语言模型(Large Language Model,LLM)提供的一个查询或一组指令,这些指令随后使模型能够维持一定程度的自定义或增强,以改进其功能并影响其输出。我们可以通过提供细节、规则和指导来引出更有针对性的输出&#x…

组合数(费马小定理, 快速幂)

给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(1097)的值。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一组 a 和 b。 输出格式 共 n 行,每行输出一个询问的解。 数据范围 1≤n≤10000, 1≤…

iOS代码加固与保护方法详解 - 提升iOS应用安全性的关键步骤

憧憬blog主页 在强者的眼中,没有最好,只有更好。我们是移动开发领域的优质创作者,同时也是阿里云专家博主。 ✨ 关注我们的主页,探索iOS开发的无限可能! 🔥我们与您分享最新的技术洞察和实战经验&#xff0…

基于大模型的态势认知智能体

源自:指挥控制与仿真 作者:孙怡峰, 廖树范, 吴疆 李福林 “人工智能技术与咨询” 发布 摘要 针对战场态势信息众多、变化趋势认知困难的问题,提出基于大模型的态势认知智能体框架和智能态势认知推演方法。从认知概念出发,结合智能体的抽象性、具…

大厂高频面试题复习JAVA学习笔记-JUC多线程及高并发(上)

目录 0 JUC基础概念 wait/sleep的区别 并发与并行的区别 线程的六个状态 JUC结构 ​编辑 1 请谈谈你对volatile的理解 JMM(java内存模型) 可见性 不保证原子性 有序性​编辑 指令重排 哪些地方用到volatile: 双端检查机制DLC …

MySQL-6.表的高级查询(多表查询、子查询、表复制、合并查询、表外连接)

6.1 多表查询 基于两个或以上表的查询,默认从表1取出一行,与表2的每一行组合,返回的记录数为表1表2,默认返回的结果为笛卡尔集,需写出正确的WHERE条件进行筛选。 多表查询的条件不能少于表的个数-1,否则会…

LeetCode刷题之105. 从前序与中序遍历序列构造二叉树

文章目录 1.题目描述2. 分析2.1 前序遍历2.1.1 什么是前序遍历?2.1.2 前序遍历有什么特点? 2.2 中序遍历2.2.1 什么是中序遍历2.2.2 中序遍历有什么特点? 2.3 后序遍历2.3.1 什么是后序遍历?2.3.2 特点 2.4 总结 3. 解法 1.题目描…

漏洞挖掘 | 两个src案例分享

案例一 - 存储型XSS 文前废话:某天正在刷着**社区的帖子,突然间评论区的一条评论引起了我的注意,类似于下面这样 其中字体是蓝色的&#xff0c;这种评论在html标签中代码格式是<a>这是文字</a>这样的链接个格式。 同时评论区XSS漏洞的高发区,想着可能会有操作点 …

每日一题|字符迁移【算法赛】|字符数组+前缀和+差分

每日一题|字符迁移【算法赛】 字符迁移 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&#xff0c;希望有朝一日我们积累的滴水可以击穿顽石。 字符迁移 注意&#xff1a; 预习知识&#xf…

【InternLM 实战营第二期笔记】使用茴香豆搭建你的RAG智能助理

RAG RAG是什么 RAG&#xff08;Retrieval Augmented Generation&#xff09;技术&#xff0c;通过检索与用户输入相关的信息片段&#xff0c;并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺乏透明、可追…

C++STL(list类)

文章目录 1.list类的介绍2.list的基本用法2.1 基本用法2.2 迭代器失效2.3 reverse(逆置)2.3 sort(排序)2.4 unique(去重)2.5 splice(转移) 3.list的底层(模拟实现)3.1 list的3.2 修改链表问题3.3 完整代码 1.list类的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列…

vue快速入门(十)v-bind动态属性绑定

注释很详细&#xff0c;直接上代码 上一篇 新增内容 图片切换逻辑动态绑定的完整写法与简写方法 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…