下面是模型预测路径生成的路径优化示例。
算法用于状态晶格规划(state lattice planning)。
路径优化示例
查找表生成示例
相关阅读:
用于带轮子的机器人的最优不平整地形路径生成
http://journals.sagepub.com/doi/pdf/10.1177/0278364906075328
6.4 状态晶格规划
这个脚本使用了状态晶格规划(state lattice planning)实现路径规划。
这段代码通过模型预测路径生成来解决边界问题。
相关阅读:
用于带轮子的机器人的最优不平整地形路径生成
http://journals.sagepub.com/doi/pdf/10.1177/0278364906075328
用于复杂环境下的高性能运动机器人导航的可行运动的状态空间采样
http://www.frc.ri.cmu.edu/~alonzo/pubs/papers/JFR_08_SS_Sampling.pdf
均匀极性采样**(Uniform polar sampling)**
偏差极性采样(Biased polar sampling)
路线采样(Lane sampling)
6.5 随机路径图(PRM)规划
这个随机路径图(Probabilistic Road-Map,PRM)规划算法在图搜索上采用了迪杰斯特拉方法。
动画中的蓝点为采样点。
青色叉为迪杰斯特拉方法搜索过的点。
红线为PRM的最终路径。
相关阅读:
随机路径图
https://en.wikipedia.org/wiki/Probabilistic_roadmap
6.6 Voronoi路径图规划
这个Voronoi路径图(Probabilistic Road-Map,PRM)规划算法在图搜索上采用了迪杰斯特拉方法。
动画中的蓝点为Voronoi点。
青色叉为迪杰斯特拉方法搜索过的点。
红线为Voronoi路径图的最终路径。
相关阅读:
机器人运动规划
https://www.cs.cmu.edu/~motionplanning/lecture/Chap5-RoadMap-Methods_howie.pdf
6.7 快速搜索随机树(RRT)
基本RRT
这是个使用快速搜索随机树(Rapidly-Exploring Random Trees,RRT)的简单路径规划代码。
黑色圆为障碍物,绿线为搜索树,红叉为开始位置和目标位置。
RRT*
这是使用RRT*的路径规划代码。
黑色圆为障碍物,绿线为搜索树,红叉为开始位置和目标位置。
相关阅读:
最优运动规划的基于增量采样的算法
https://arxiv.org/abs/1005.0416
最优运动规划的基于采样的算法
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.419.5503&rep=rep1&type=pdf
基于Dubins路径的RRT
为汽车形机器人提供的使用RRT和dubins路径规划的路径规划算法。
基于Dubins路径的RRT*
为汽车形机器人提供的使用RRT*和dubins路径规划的路径规划算法。
基于reeds-shepp路径的RRT*
为汽车形机器人提供的使用RRT*和reeds shepp路径规划的路径规划算法。
Informed RRT*
这是使用Informed RRT*的路径规划代码。
青色椭圆为Informed RRT*的启发采样域。
相关阅读:
Informed RRT*:通过对可接受的椭球启发的直接采样实现最优的基于采样的路径规划
https://arxiv.org/pdf/1404.2334.pdf
批量Informed RRT*
这是使用批量Informed RRT*的路径规划代码。
相关阅读:
批量Informed树(BIT*):通过对隐含随机几何图形进行启发式搜索实现基于采样的最优规划
https://arxiv.org/abs/1405.5848
闭合回路RRT*
使用闭合回路RRT*(Closed loop RRT*)实现的基于车辆模型的路径规划。
这段代码里,转向控制用的是纯追迹算法(pure-pursuit algorithm)。
速度控制采用了PID。
相关阅读:
使用闭合回路预测在复杂环境内实现运动规划
http://acl.mit.edu/papers/KuwataGNC08.pdf)
应用于自动城市驾驶的实时运动规划
http://acl.mit.edu/papers/KuwataTCST09.pdf
[1601.06326]采用闭合回路预测实现最优运动规划的基于采样的算法
https://arxiv.org/abs/1601.06326
LQR-RRT*
这是个使用LQR-RRT*的路径规划模拟。
LQR局部规划采用了双重积分运动模型。
相关阅读:
LQR-RRT*:使用自动推导扩展启发实现最优基于采样的运动规划
http://lis.csail.mit.edu/pubs/perez-icra12.pdf
MahanFathi/LQR-RRTstar:LQR-RRT*方法用于单摆相位中的随机运动规划
https://github.com/MahanFathi/LQR-RRTstar
6.8 三次样条规划
这是段三次路径规划的示例代码。
这段代码根据x-y的路点,利用三次样条生成一段曲率连续的路径。
每个点的指向角度也可以用解析的方式计算。
6.9 B样条规划
这是段使用B样条曲线进行规划的例子。
输入路点,它会利用B样条生成光滑的路径。
第一个和最后一个路点位于最后的路径上。
相关阅读:
B样条
https://en.wikipedia.org/wiki/B-spline
6.10 Eta^3样条路径规划
这是使用Eta ^ 3样条曲线的路径规划。
相关阅读:
eta^3-Splines for the Smooth Path Generation of Wheeled Mobile Robots
https://ieeexplore.ieee.org/document/4339545/
6.11 贝济埃路径规划
贝济埃路径规划的示例代码。
根据四个控制点生成贝济埃路径。
改变起点和终点的偏移距离,可以生成不同的贝济埃路径:
相关阅读:
根据贝济埃曲线为自动驾驶汽车生成曲率连续的路径
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.294.6438&rep=rep1&type=pdf
6.12 五次多项式规划
利用五次多项式进行路径规划。
它能根据五次多项式计算二维路径、速度和加速度。
相关阅读:
用于Agv In定位的局部路径规划和运动控制
http://ieeexplore.ieee.org/document/637936/
6.13 Dubins路径规划
Dubins路径规划的示例代码。
相关阅读:
Dubins路径
https://en.wikipedia.org/wiki/Dubins_path
6.14 Reeds Shepp路径规划
Reeds Shepp路径规划的示例代码。
相关阅读:
15.3.2 Reeds-Shepp曲线
http://planning.cs.uiuc.edu/node822.html
用于能前进和后退的汽车的最优路径
https://pdfs.semanticscholar.org/932e/c495b1d0018fd59dee12a0bf74434fac7af4.pdf
ghliu/pyReedsShepp:实现Reeds Shepp曲线
https://github.com/ghliu/pyReedsShepp
6.15 基于LQR的路径规划
为双重积分模型使用基于LQR的路径规划的示例代码。
6.16 Frenet Frame中的最优路径
这段代码在Frenet Frame中生成最优路径。
青色线为目标路径,黑色叉为障碍物。
红色线为预测的路径。
相关阅读:
Frenet Frame中的动态接到场景中的最优路径生成
https://www.researchgate.net/profile/Moritz_Werling/publication/224156269_Optimal_Trajectory_Generation_for_Dynamic_Street_Scenarios_in_a_Frenet_Frame/links/54f749df0cf210398e9277af.pdf
Frenet Frame中的动态接到场景中的最优路径生成
https://www.youtube.com/watch?v=Cj6tAQe7UCY
七、路径跟踪
7.1 姿势控制跟踪
这是姿势控制跟踪的模拟。
相关阅读:
Robotics, Vision and Control - Fundamental Algorithms In MATLAB® Second, Completely Revised, Extended And Updated Edition | Peter Corke | Springer
https://www.springer.com/us/book/9783319544120
7.2 纯追迹跟踪
使用纯追迹(pure pursuit)转向控制和PID速度控制的路径跟踪模拟。
红线为目标路线,绿叉为纯追迹控制的目标点,蓝线为跟踪路线。
相关阅读:
城市中的自动驾驶汽车的运动规划和控制技术的调查
https://arxiv.org/abs/1604.07446
7.3 史坦利控制
使用史坦利(Stanley)转向控制和PID速度控制的路径跟踪模拟。
相关阅读:
史坦利:赢得DARPA大奖赛的机器人
http://robots.stanford.edu/papers/thrun.stanley05.pdf
用于自动驾驶机动车路径跟踪的自动转向方法
https://www.ri.cmu.edu/pub_files/2009/2/Automatic_Steering_Methods_for_Autonomous_Automobile_Path_Tracking.pdf
7.4 后轮反馈控制
利用后轮反馈转向控制和PID速度控制的路径跟踪模拟。
相关阅读:
城市中的自动驾驶汽车的运动规划和控制技术的调查
https://arxiv.org/abs/1604.07446
7.5 线性二次regulator(LQR)转向控制
使用LQR转向控制和PID速度控制的路径跟踪模拟。
相关阅读:
ApolloAuto/apollo:开源自动驾驶平台
https://github.com/ApolloAuto/apollo
7.6 线性二次regulator(LQR)转向和速度控制
使用LQR转向和速度控制的路径跟踪模拟。
相关阅读:
完全自动驾驶:系统和算法 - IEEE会议出版物
http://ieeexplore.ieee.org/document/5940562/
7.7 模型预测速度和转向控制
使用迭代线性模型预测转向和速度控制的路径跟踪模拟。
这段代码使用了cxvxpy作为最优建模工具。
相关阅读:
车辆动态和控制 | Rajesh Rajamani | Springer
http://www.springer.com/us/book/9781461414322
MPC课程资料 - MPC Lab @ UC-Berkeley
http://www.mpc.berkeley.edu/mpc-course-material
八、项目支持
可以通过Patreon(https://www.patreon.com/myenigma)对该项目进行经济支持。
如果你在Patreon上支持该项目,则可以得到关于本项目代码的邮件技术支持。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!