系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
文章目录
前言
机器人局部轨迹规划相关教程及博客请关注专栏:
https://blog.csdn.net/qq_35635374/article/details/138174730
本文先对局部轨迹规划导读做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
一、图形运算专题
1、点、曲线与图形相关运算实现
介绍图形相关运算的原理及源码实现,包括角度的相关运算、向量的相关运算、点与直线的相关运算、线段的相关运算、多边形的相关运算、几何图形的生成运算、曲线的曲率及后处理相关运算等等,简单的运算可源码实现不必调用几何图形库实现,这样工程更高效!
https://blog.csdn.net/qq_35635374/article/details/126183829
2、相关计算机图形学计算的库介绍
先介绍计算机图形学库的类型、适用场景及优劣分析,包括polyscope C++库、Boost C++库、OpenMesh库、geometry-central库、CGAL库、opencv库、OpenCascade库、Visualization Toolkit库、VCG Library库等等
再介绍三方库的调用方法与步骤
https://blog.csdn.net/qq_35635374/article/details/131580926
https://blog.csdn.net/qq_35635374/article/details/138732734
二、路径插值与抽稀专题
路径插值与抽稀是互斥的两个功能,并介绍路径曲线插值、拟合和逼近的区别。
https://blog.csdn.net/qq_35635374/article/details/127718216
1、路径点线性插值方法
先介绍实现路径插值的相关算法,包括:线性/双线性插值算法、多项式曲线插值&平滑算法。
https://blog.csdn.net/qq_35635374/article/details/138290850
2、常用的路径抽稀算法
再介绍实现路径抽稀的相关算法,包括:步距抽稀算法、等长抽稀算法、垂直限制抽稀算法、道格拉斯-普克(Douglas-Peuker)DPR抽稀算法、去除共线点抽稀算法、基于曲率的路径抽稀算法等等。
https://blog.csdn.net/qq_35635374/article/details/138290872
三、路径平滑滤波与拟合专题
介绍轨迹平滑最优的考虑因素(即平滑的轨迹要考虑什么指标),作为轨迹平滑的引入,简单介绍轨迹平滑的一些常用方法,如算术滤波平滑的方法、滤波器平滑的方法、基于地图的平滑的方法、采用曲线拟合的进行插值与平滑的方法、使用优化理论的方式进行平滑的方法等等
https://blog.csdn.net/qq_35635374/article/details/124196808
1、算术滤波平滑的方式
介绍常用的算术滤波平滑的原理即源码实现,包括滑动窗口滤波算法、限幅滤波算法、中位值滤波算法、算术平均滤波算法、中位值平均滤波算法、一阶滞后滤波算法、加权递推平均滤波算法、消抖滤波算法、低通数字滤波算法等等
https://blog.csdn.net/qq_35635374/article/details/138290947
2、使用滤波器进行滤波平滑
https://blog.csdn.net/qq_35635374/article/details/138291056
3、基于地图的平滑算法–佛洛依德路径平滑算法(FLOYD)
常见的基于图搜索的的算法(如a*算法)会探索出有“锯齿”的路径,佛洛依德路径平滑算法能较好平滑“锯齿”的路径,因此常用于图搜索路径的后端处理。
https://blog.csdn.net/qq_35635374/article/details/138291161
4、使用曲线拟合的进行插值与平滑
特定类型的曲线具有各自的特性,不同的曲线函数性质可用于进行路径平滑与插值。
这里介绍了常用的曲线拟合方法原理及源码实现,包括双圆弧轨迹插值拟合算法、正余弦曲线插值拟合算法、三\五次多项式曲线(三\五次样条)拟合算法、贝塞尔曲线算法、B样条曲线算法等等
https://blog.csdn.net/qq_35635374/article/details/138291096
5、使用优化理论的方式进行平滑
介绍使用梯度下降与非线性优化两种方式进行路径平滑,其中使用梯度下降的方式进行路径平滑比较轻量化,使用非线性优化的方式进行路径平滑还可以考虑兼顾其他性能指标,因此更适合复杂的场景。
介绍mini_snap的时间分配曲线优化生成轨迹算法
介绍以梯度下降的方式进行路径平滑的常用方法,包括梯度下降(SGD)原理、随机梯度下降原理、共轭梯度下降算法、五点中值梯度下降算法、连续点之间转角的平方和梯度下降算法等等。
再介绍使用非线性优化的方式进行路径平滑的常用方法,包括Hybrid A*的后端轨迹优化算法、Apollo基于优化的全局路径平滑的二次规划QP算法等等
https://blog.csdn.net/qq_35635374/article/details/138291015
涉及优化的一些理论和部署可以进一步转战下面这个专栏
https://blog.csdn.net/qq_35635374/category_11745384.html
四、速度规划专题
1、介绍基于逻辑实现速度规划和基于曲线实现速度规划的两种速度规划方法
介绍基于逻辑实现速度规划和基于曲线实现速度规划的两种速度规划方法,其中基于逻辑实现速度规划的方法,车速优先响应传感器数据,进而安全性问题依赖硬件传感器而不是依赖算法。
基于曲线实现速度规划的方法先介绍double S直线速度规划
https://blog.csdn.net/qq_35635374/article/details/131613027
2、基于Frenet车道线坐标系,速度解耦进行局部规划专题
(1)在ST图中进行横纵速度轨迹探索&优化
针对自动驾驶车的场景,介绍基于Frenet车道线坐标系下,进行横纵速度轨迹探索&优化
第一套思想:在笛卡尔坐标系进行路径规划,路径映射到st图和lt图上(变成了速度轨迹),障碍物也映射到st图和lt图上,对速度轨迹进行形变优化,得到优化的速度输出
第二套思想:障碍物也映射到st图和lt图上,在st图和lt图上做速度采样,生成速度轨迹(簇),通过平滑速度轨迹曲线,得到优化的速度输出(步骤更简单,因为用简单速度采样的方式代替了路径规划)
案例一:在Frenet车道线坐标系下,使用Jerk最优化问题在ST图中对规划出来的速度轨迹进行平滑,实现局部规划的动态效果
https://blog.csdn.net/qq_35635374/article/details/127720450
案例二:在Frenet车道线坐标系下,先使用DP的算法进行速度轨迹探索,再使用QP优化的方式在ST图中对规划出来的速度轨迹进行平滑,实现局部规划的动态效果
https://blog.csdn.net/qq_35635374/article/details/131613432
(2)EM_planner最大期望滚动优化算法
介绍EM_planner实现的流程,包括期望最大化Expectation Maximum的最优理论、EM_planner的optimizer具体的步骤、EM_planner的程序流程及关键步骤
https://blog.csdn.net/qq_35635374/article/details/138296059
(3)车道具体场景的设计核心思想
从场景需求出发,介绍车道具体场景的设计核心思想,包括实现变道、超车、切车并道的场景需求等等
https://blog.csdn.net/qq_35635374/article/details/138296092
五、线性加权轨迹代价损失评分,轨迹多选一专题
介绍局部路径规划的第一种核心思想:通过设计多项子代价损失函数,并对子代价损失函数代价归一化后进行线性加权,根据代价评分轨迹多选一的轨迹优化设计思想。
并介绍该局部路径规划思想的应用案例及步骤,包括DWA_planner规划算法、OpenPlanner规划算法等等。
进一步介绍该局部路径规划思想结合图搜索路径探索思想和后端非线性优化的算法:lexicographic_planner规划算法等等。
https://blog.csdn.net/qq_35635374/article/details/127755905
1、滑动窗口DWA_planner
介绍了DWA_planner规划算法的原理、源码分析、工程部署经验及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295599
2、【多选一】OpenPlanner规划算法
介绍了OpenPlanner规划算法的原理及导航整体框架、源码分析、工程部署经验及算法优缺点,作为导航的知识补充,还介绍了行为状态生成器进行导航决策
https://blog.csdn.net/qq_35635374/article/details/138295437
3、lexicographic_planner
介绍一种结合了局部局采样和图搜索思想的算法如何应用在局部路径上,介绍了lexicographic_planner规划算法的原理及整体流程、源码分析、工程部署经验及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295476
4、regular state lattice in unstructured environment
介绍一种结合了局部局采样和图搜索思想的算法如何应用在局部路径上,详细分析算法搜索的原理及源码,遍历搜索算法包括在笛卡尔坐标系的regular state lattice算法、在frenet坐标系的Lattice算法,常常应用于车道线场景的变道和超车场景中。
https://blog.csdn.net/qq_35635374/article/details/138290492
六、基于控制的方法实现轨迹避障专题
介绍局部路径规划的第二种核心思想:基于控制的方法实现轨迹避障。
并介绍该局部路径规划思想的应用案例及步骤,包括基于超声波与碰撞的几何方形绕障算法,BUG绕障算法、DWA_planner规划算法、飞思卡尔相机识别灰度障碍物与PID巡线控制算法等等
https://blog.csdn.net/qq_35635374/article/details/131612680
1、应激式BUG局部避障算法
介绍了BUG规划算法的原理、源码分析、工程部署经验及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295570
2、滑动窗口DWA_planner
介绍了DWA_planner规划算法的原理、源码分析、工程部署经验及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295599
3、感知控制的似然场局部规划
介绍了一个深层的神经网络来模仿人类的运动模式的避障控制算法,还有基于感知数据局部路径的避障控制算法
https://blog.csdn.net/qq_35635374/article/details/138792157
https://blog.csdn.net/qq_35635374/article/details/139304967
七、基于优化理论,梯度下降迭代优化使得轨迹形变专题
介绍局部路径规划的第三种核心思想:通过设计多项子代价损失函数,对一条路径进行非线性优化使其发生形变,实现障碍物避让的设计思想和设计步骤。
并介绍该局部路径规划思想的应用案例及步骤,包括Teb_planner规划算法、硬约束(飞行走廊)轨迹优化算法、软约束轨迹优化算法
https://blog.csdn.net/qq_35635374/article/details/131613564
2、常用的优化方法
作为知识引入,简单介绍常用的优化方法,包括基于梯度下降(Gradient)算法、基于无梯度(导数)的优化算法、凸优化的优化算法
https://blog.csdn.net/qq_35635374/article/details/138295668
3、求解优化问题的工具库
作为工程部署经验引入,简单介绍常用求解优化问题的工具库的使用步骤
https://blog.csdn.net/qq_35635374/article/details/138295722
4、Teb_planner
介绍了Teb_planner规划算法的原理、源码分析、工程部署经验及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295741
5、硬约束(飞行走廊)轨迹优化
介绍了无人机硬约束(飞行走廊)轨迹优化规划算法的原理及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295763
6、软约束轨迹优化(把硬约束转换成软约束)
介绍了无人机软约束轨迹优化规划算法的原理及算法优缺点
https://blog.csdn.net/qq_35635374/article/details/138295789
八、基于地图的方法–VFH、VFH+、VFH*算法专题
介绍局部路径规划的第四种核心思想:基于人工势场图做局部路径规划,首先介绍什么是人工势场,在介绍常用的基于人工势场图的局部路径规划算法,包括Virtual Force Field (VFF)算法、VFH+算法、VFH*算法的原理及代码实现
https://blog.csdn.net/qq_35635374/article/details/131613118
九、生成局部路径的专题
https://blog.csdn.net/qq_35635374/article/details/135100460
十、优化理论拓展阅读专题
https://blog.csdn.net/qq_35635374/category_11745384.html
局部规划各算法性能分析
1、基于采样的路径规划失败率会比基于图搜索的路径失败率要高
2、基于状态空间的采样方法效果比基于控制空间的方法好,不会出现频繁的打角不稳定情况(固定参数的控制采样就是降维成空间采样)
3、基于优化的方法算力要求较高,但适应性能也较好(基本不会出现跳变),基于优化理论的规划算法比较依赖算力且容易出现发散过不了安全检查的问题
触发局部避障的条件
1、pure_pursuit做采样DWA做安全检查,pure_pursuit安全检查失败才用DWA做状态空间采样
2、执行路径是否被占据做安全检查