python画心形代码大全_Python代码合集看点 机器人算法、自动导航算法算法大全...

fd0ded535f31545dcdb6725aeb4f98e3.png

aca164e64f59c309e8fecdedd7a679dc.gif

导读:本文包含机器人算法、自动导航算法的Python代码合集。其主要特点有以下三点:选择了在实践中广泛应用的算法;依赖最少、容易阅读,容易理解每个算法的基本思想。希望阅读本文后能对你有所帮助。文章来源:图灵人工智能。

引  文

325afa977ffe17811c66e3d498958680.png

环境需求怎样使用 本地化
  • 扩展卡尔曼滤波本地化
  • 无损卡尔曼滤波本地化
  • 粒子滤波本地化
  • 直方图滤波本地化
映射
  • 高斯网格映射
  • 光线投射网格映射
  • k均值物体聚类
  • 圆形拟合物体形状识别
SLAM
  • 迭代最近点匹配
  • EKF SLAM
  • FastSLAM 1.0
  • FastSLAM 2.0
  • 基于图的SLAM
路径规划
  • 动态窗口方式
  • 基于网格的搜索
  • 迪杰斯特拉算法
  • A*算法
  • 势场算法
  • 模型预测路径生成
  • 路径优化示例
  • 查找表生成示例
  • 状态晶格规划
  • 均匀极性采样(Uniform polar sampling)
  • 偏差极性采样(Biased polar sampling)
  • 路线采样(Lane sampling)
  • 随机路径图(PRM)规划
  • Voronoi路径图规划
  • 快速搜索随机树(RRT)
  • 基本RRT
  • RRT*
  • 基于Dubins路径的RRT
  • 基于Dubins路径的RRT*
  • 基于reeds-shepp路径的RRT*
  • Informed RRT*
  • 批量Informed RRT*
  • 三次样条规划
  • B样条规划
  • 贝济埃路径规划
  • 五次多项式规划
  • Dubins路径规划
  • Reeds Shepp路径规划
  • 基于LQR的路径规划
  • Frenet Frame中的最优路径
路径跟踪
  • 纯追迹跟踪
  • 史坦利控制
  • 后轮反馈控制
  • 线性二次regulator(LQR)转向控制
  • 线性二次regulator(LQR)转向和速度控制
项目支持

1

环境需求

  • Python 3.6.x
  • numpy
  • scipy
  • matplotlib
  • pandas
  • cvxpy 0.4.x

2

怎样使用

1、安装必要的库; 2、克隆本代码仓库; 3、执行每个目录下的python脚本; 4、如果你喜欢,则收藏本代码库:)

3

本地化

扩展卡尔曼滤波本地化

8db4c74a0b582dcb14d9e06d2aa65fc3.png

该算法利用扩展卡尔曼滤波器(Extended Kalman Filter, EKF)实现传感器混合本地化。蓝线为真实路径,黑线为导航推测路径(dead reckoning trajectory),绿点为位置观测(如GPS),红线为EKF估算的路径。红色椭圆为EKF估算的协方差。

相关阅读: 概率机器人学 http://www.probabilistic-robotics.org/

无损卡尔曼滤波本地化

d21ae66277524b9f4051467eb9d33d84.png

该算法利用无损卡尔曼滤波器(Unscented Kalman Filter, UKF)实现传感器混合本地化。

线和点的含义与EKF模拟的例子相同。

相关阅读: 利用无差别训练过的无损卡尔曼滤波进行机器人移动本地化 https://www.researchgate.net/publication/267963417_Discriminatively_Trained_Unscented_Kalman_Filter_for_Mobile_Robot_Localization

粒子滤波本地化

7f6f90c6c642284d0d0879fc5bff5ef7.png

该算法利用粒子滤波器(Particle Filter, PF)实现传感器混合本地化。蓝线为真实路径,黑线为导航推测路径(dead reckoning trajectory),绿点为位置观测(如GPS),红线为PF估算的路径。该算法假设机器人能够测量与地标(RFID)之间的距离。PF 本地化会用到该测量结果。

相关阅读: 概率机器人学 http://www.probabilistic-robotics.org/

直方图滤波本地化

f9ca893af7e782e6788773dbdc26ae74.png

该算法是利用直方图滤波器(Histogram filter)实现二维本地化的例子。红十字是实际位置,黑点是RFID的位置。蓝色格子是直方图滤波器的概率位置。在该模拟中,x,y是未知数,yaw已知。滤波器整合了速度输入和从 RFID 获得距离观测数据进行本地化。不需要初始位置。

相关阅读: 概率机器人学 http://www.probabilistic-robotics.org/

4

映      射

高斯网格映射

本算法是二维高斯网格映射(Gaussian grid mapping)的例子。

6916fc46d3eb4d8961fb3ac193515164.gif

光线投射网格映射

本算法是二维光线投射网格映射(Ray casting grid map)的例子。

b091b134831145d469ab96cf8f356189.gif

k均值物体聚类

本算法是使用k均值算法进行二维物体聚类的例子。

e745a1ac322f4910b3524fc7fb6d7320.gif

圆形拟合物体形状识别

本算法是使用圆形拟合进行物体形状识别的例子。

5cf1758577c7d881d479a503058fa23a.gif

蓝圈是实际的物体形状。红叉是通过距离传感器观测到的点。红圈是使用圆形拟合估计的物体形状。

5

SLAM

同时本地化和映射(Simultaneous Localization and Mapping,SLAM)的例子。

迭代最近点匹配

本算法是使用单值解构进行二维迭代最近点(Iterative Closest Point,ICP)匹配的例子。

它能计算从一些点到另一些点的旋转矩阵和平移矩阵。

085df4c1386878ff4f3492df5df74fd7.gif

相关阅读: 机器人运动介绍:迭代最近点算法 https://cs.gmu.edu/~kosecka/cs685/cs685-icp.pdf

EKF SLAM

这是基于扩展卡尔曼滤波的 SLAM 示例。

蓝线是真实路径,黑线是导航推测路径,红线是 EKF SLAM 估计的路径。

绿叉是估计的地标。

99c02b64867e3c8e856bb88b355ec860.png

相关阅读: 概率机器人学 http://www.probabilistic-robotics.org/

FastSLAM 1.0

这是用 FastSLAM 1.0 进行基于特征的 SLAM 的示例。

蓝线是实际路径,黑线是导航推测,红线是 FastSLAM 的推测路径。

红点是 FastSLAM 中的粒子。

黑点是地标,蓝叉是 FastLSAM 估算的地标位置。

43a74f9a8ad3ea4dd504af60d7df8c93.png

相关阅读: 概率机器人学 http://www.probabilistic-robotics.org/

FastSLAM 2.0

这是用FastSLAM 2.0进行基于特征的SLAM的示例。

动画的含义与FastSLAM 1.0的情况相同。

f5fe013a8aee9502f84d2d8cc3305bd9.png

相关阅读: 概率机器人学 http://www.probabilistic-robotics.org/ Tim Bailey的SLAM模拟 http://www-personal.acfr.usyd.edu.au/tbailey/software/slam_simulations.htm

基于图的SLAM

这是基于图的 SLAM 的示例。

蓝线是实际路径。

黑线是导航推测路径。

红线是基于图的 SLAM 估算的路径。

黑星是地标,用于生成图的边。

4044fc45ba919885f8837ca88155a76b.gif

相关阅读: 基于图的SLAM入门 http://www2.informatik.uni-freiburg.de/~stachnis/pdf/grisetti10titsmag.pdf

6

路径规划

动态窗口方式

这是使用动态窗口方式(Dynamic Window Approach)进行二维导航的示例代码。

5e97223a847113b2563c5a88f74a3467.png

相关阅读: 用动态窗口方式避免碰撞 https://www.ri.cmu.edu/pub_files/pub1/fox_dieter_1997_1/fox_dieter_1997_1.pdf

基于网格的搜索

  • 迪杰斯特拉算法

这是利用迪杰斯特拉(Dijkstra)算法实现的基于二维网格的最短路径规划。

441ff65fc9906d47658379e8d5a85156.png

动画中青色点为搜索过的节点。

  • A*算法

下面是使用A星算法进行基于二维网格的最短路径规划。

4dcee4b99176a51feacf40b54fe4d264.png

动画中青色点为搜索过的节点。启发算法为二维欧几里得距离。

  • 势场算法

下面是使用势场算法进行基于二维网格的路径规划。

ffa26d4d4287baea76c18fdde592bcc4.png

动画中蓝色的热区图显示了每个格子的势能。

相关阅读: 机器人运动规划:势能函数 https://www.cs.cmu.edu/~motionplanning/lecture/Chap4-Potential-Field_howie.pdf

模型预测路径生成

下面是模型预测路径生成的路径优化示例。算法用于状态晶格规划(state lattice planning)。

路径优化示例

c0c9112e2b0e987f6592c2d88ad6e1eb.gif

查找表生成示例

f266ce4459a0b249071e5840af06daae.png

相关阅读: 用于带轮子的机器人的最优不平整地形路径生成 http://journals.sagepub.com/doi/pdf/10.1177/0278364906075328

状态晶格规划

这个脚本使用了状态晶格规划(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)

711ae4e105094e5812abc9bb7c7b97fb.gif

偏差极性采样(Biased polar sampling)

e8bbad4374819f32090c559aed6d8216.gif

路线采样(Lane sampling)

b367724b1c879f12706e91427b1ca971.gif

随机路径图(PRM)规划

b7ce8422a53facadbc04f1d4ed8413d4.png

这个随机路径图(Probabilistic Road-Map,PRM)规划算法在图搜索上采用了迪杰斯特拉方法。动画中的蓝点为采样点。青色叉为迪杰斯特拉方法搜索过的点。红线为PRM的最终路径。

相关阅读: 随机路径图 https://en.wikipedia.org/wiki/Probabilistic_roadmap

Voronoi路径图规划

5e205453682a2113bbb3fd35ec7083cb.png

这个Voronoi路径图(Probabilistic Road-Map,PRM)规划算法在图搜索上采用了迪杰斯特拉方法。动画中的蓝点为Voronoi点。青色叉为迪杰斯特拉方法搜索过的点。红线为Voronoi路径图的最终路径。

相关阅读: 机器人运动规划 https://www.cs.cmu.edu/~motionplanning/lecture/Chap5-RoadMap-Methods_howie.pdf

快速搜索随机树(RRT)

  • 基本RRT

c85231516a4449c3346ec25247dd81fc.png

这是个使用快速搜索随机树(Rapidly-Exploring Random Trees,RRT)的简单路径规划代码。黑色圆为障碍物,绿线为搜索树,红叉为开始位置和目标位置。

  • RRT*

d27aefb33d34e9191a94190bdd3f1425.png

这是使用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

2cb3f9e300013e09e524d78f295606c4.png

为汽车形机器人提供的使用RRT和dubins路径规划的路径规划算法。

  • 基于Dubins路径的RRT*

7897f7718fcbf3a1c31e000a16d6f64b.png

为汽车形机器人提供的使用RRT*和dubins路径规划的路径规划算法。

  • 基于reeds-shepp路径的RRT*

300dd6bb4e1025c60827527ebd629141.png

为汽车形机器人提供的使用RRT*和reeds shepp路径规划的路径规划算法。

  • Informed RRT*

71a9b3e9e883125b3d18666476351b68.png

这是使用Informed RRT*的路径规划代码。青色椭圆为Informed RRT*的启发采样域。

相关阅读: Informed RRT*:通过对可接受的椭球启发的直接采样实现最优的基于采样的路径规划 https://arxiv.org/pdf/1404.2334.pdf
  • 批量Informed RRT*

9026a0383d5bda44bdf7dca867fd15e3.gif

这是使用批量Informed RRT*的路径规划代码。

相关阅读: 批量Informed树(BIT*):通过对隐含随机几何图形进行启发式搜索实现基于采样的最优规划 https://arxiv.org/abs/1405.5848
  • 闭合回路RRT*

使用闭合回路RRT*(Closed loop RRT*)实现的基于车辆模型的路径规划。

6cc1049f856269bb24ec4b23112f4065.png

这段代码里,转向控制用的是纯追迹算法(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局部规划采用了双重积分运动模型。

127bc3009ab2efdd99f03f49a35f4f2d.gif

相关阅读: LQR-RRT*:使用自动推导扩展启发实现最优基于采样的运动规划 http://lis.csail.mit.edu/pubs/perez-icra12.pdf MahanFathi/LQR-RRTstar:LQR-RRT*方法用于单摆相位中的随机运动规划 https://github.com/MahanFathi/LQR-RRTstar

三次样条规划

这是段三次路径规划的示例代码。

这段代码根据x-y的路点,利用三次样条生成一段曲率连续的路径。

每个点的指向角度也可以用解析的方式计算。

aa840e543ef1865ccd1b25edbe6fba5f.png

c68c2dc484f5b83c74421ed1c958a58c.png

d0a351616800c66ea3045b0c9ec1edf6.png

B样条规划

11c08be4cf387f064410f1d041ac8931.png

这是段使用B样条曲线进行规划的例子。输入路点,它会利用B样条生成光滑的路径。第一个和最后一个路点位于最后的路径上。

相关阅读: B样条 https://en.wikipedia.org/wiki/B-spline

Eta^3样条路径规划

7a290e45006773b5e9397416f76e7de7.gif

这是使用Eta ^ 3样条曲线的路径规划。

相关阅读: eta^3-Splines for the Smooth Path Generation of Wheeled Mobile Robots https://ieeexplore.ieee.org/document/4339545/

贝济埃路径规划

贝济埃路径规划的示例代码。根据四个控制点生成贝济埃路径。

2248c8d123ee26a280a4218d9e98030a.png

改变起点和终点的偏移距离,可以生成不同的贝济埃路径:

8cd52f023512a0e504389ce0a203e5cf.png

相关阅读: 根据贝济埃曲线为自动驾驶汽车生成曲率连续的路径 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.294.6438&rep=rep1&type=pdf

五次多项式规划

利用五次多项式进行路径规划。

522ab821bc8415257636309f66a94813.png

它能根据五次多项式计算二维路径、速度和加速度。

相关阅读: 用于Agv In定位的局部路径规划和运动控制 http://ieeexplore.ieee.org/document/637936/

Dubins路径规划

Dubins路径规划的示例代码。

7761ade993bd2436c25aa4f92d7914b5.gif

相关阅读: Dubins路径 https://en.wikipedia.org/wiki/Dubins_path

Reeds Shepp路径规划

Reeds Shepp路径规划的示例代码。

2bbab5ff76f3916d53ad8cca41a2533d.gif

相关阅读: 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

基于LQR的路径规划

为双重积分模型使用基于LQR的路径规划的示例代码。

f10cfc77c0085f7c7e69c7b3d4f0e7c7.gif

Frenet Frame中的最优路径

791e03c59bb43aa0b00abee82a2000bd.gif

这段代码在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

路径跟踪

姿势控制跟踪

这是姿势控制跟踪的模拟。

d62452968c984fb65c2f21fb9e2de9a2.png

相关阅读: 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

纯追迹跟踪

使用纯追迹(pure pursuit)转向控制和PID速度控制的路径跟踪模拟。

5494c8e62ea81c2b629e961a1fb852b2.png

红线为目标路线,绿叉为纯追迹控制的目标点,蓝线为跟踪路线。

相关阅读: 城市中的自动驾驶汽车的运动规划和控制技术的调查 https://arxiv.org/abs/1604.07446

史坦利控制

使用史坦利(Stanley)转向控制和PID速度控制的路径跟踪模拟。

1606c79903e0cbf0112bbd66753e6011.png

相关阅读:

史坦利:赢得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

后轮反馈控制

利用后轮反馈转向控制和PID速度控制的路径跟踪模拟。

6df24e4d49931624c6444a7f4e996a21.png

相关阅读: 城市中的自动驾驶汽车的运动规划和控制技术的调查 https://arxiv.org/abs/1604.07446

线性二次regulator(LQR)转向控制

使用LQR转向控制和PID速度控制的路径跟踪模拟。

fb4394936c42b44284d01ae4b09d13dd.png

相关阅读: ApolloAuto/apollo:开源自动驾驶平台 https://github.com/ApolloAuto/apollo

线性二次regulator(LQR)转向和速度控制

使用LQR转向和速度控制的路径跟踪模拟。

1303abc38c034ec6e814bbc17dae4c68.png

相关阅读: 完全自动驾驶:系统和算法 - IEEE会议出版物 http://ieeexplore.ieee.org/document/5940562/

模型预测速度和转向控制

使用迭代线性模型预测转向和速度控制的路径跟踪模拟。

5db9cfc68bacb4102ec7c49d9d8a7b13.png

这段代码使用了cxvxpy作为最优建模工具。

相关阅读: 车辆动态和控制 | Rajesh Rajamani | Springer  http://www.springer.com/us/book/9781461414322 MPC课程资料 - MPC Lab @ UC-Berkeley  http://www.mpc.berkeley.edu/mpc-course-material

8

项目支持

可以通过 Patreon对该项目进行经济支持。如果你在Patreon上支持该项目,则可以得到关于本项目代码的邮件技术支持。本文作者包括有Atsushi Sakai (@Atsushi_twi),Daniel Ingram,Joe Dinius,Karan Chawla,Antonin RAFFIN,Alexis Paques。
原文: https://atsushisakai.github.io/PythonRobotics/#what-is-this

声 明:本栏目信息来源及内容仅作为学术课题研究、技术交流等用途,不作为商业用途;文章观点仅供分享交流,不代表本公众号的立场,转载请注明出处,如涉及版权等问题,请您告知gdbdmiotii@126.com,我们将及时沟通处理。

f93ba6bb7642a13d5eef47181ba1c5ac.png

6d90123926d14143ac5433cc507a6cca.png

22bbbdc386dd0f5adcc3f9a614c5785e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值