当前位置:网站首页 > 国际新闻 > 正文

强烈推荐必看款!一文观察Python必备50种算法(附解析)

admin 0

本文是一些机器人算法(特别是主动导航算法)的Python代码合集。

其主要特色有以下三点:挑选了在实践中广泛应用的算法;依靠最少;简略阅览,简略了解每个算法的根本思想。期望阅览本文后能对你有所协助。

前排友谊提示,文章较长,主张保藏后再看。

欢迎我们参加小编创立的Python行主母罗苏拉业沟通群,有大牛答疑,有资源共享,有企业招人!是一个十分不错的沟通基地!群号:683380553

目录

一、环境需求

二、怎样运用

三、本地化

3.1 扩展卡尔曼滤波本地化

3.2 无损卡尔曼滤波本地化

3.3 粒子滤波本地化

3.4 直方图滤波本地化

四、映射

4.1 高斯网格映射

4.2 光线投射网格映射

4.3 k均值物体聚类

4.4 圆形拟合物体形状辨认

五、SL伊美惠女装AM

5.1 迭代最近点匹配

5.2 EKF SLAM

5.3 FastSLAM 1.0

5.4 FastSLAM 2.0

5.5 依据图的SLAM

六、途径规划

6.1 动态窗口办法

6.2 依据网格的查找

迪杰斯特拉算法

A*算法

势场算法

6.3 模型猜测途径生成

途径优化示例

查找表生成示例

6.4 状况晶格规划

均匀极性采样(Uniform polar sampling)

误差极性采样(Biased polar sampling)

道路采样(Lane sampling)

6.5 随机途径图(PRM)规划

6.6 Voronoi途径图规划

6.7 快速查找随机树(RRT)

根本RRT

RRT*

依据Dubins途径的RRT

依据Dubins途径的RRT*

依据reeds-shepp途径的RRT*

Informed RRT*

批量Informed RRT*

闭合回路RRT*

LQR-RRT*

6.8 三次样条规划

6.9 B样条规划

6.10 Eta^3样条途径规划

6.11 贝济埃途径规划

6.12 五次多项式规划

6.13 Dubins途径规划

6.14 Reeds Shepp途径规划

6.15 依据LQR的途径规划

6.16 Frenet Frame中的最优途径

七、途径盯梢

7.1 姿态操控盯梢

7.2纯追迹盯梢

7.3 史坦利操控

7.4 后轮反应操控

7.牛仔裤系列5 线性二次regulator(LQR)转向操控

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

7.7 模型猜测速度和转向操控

八戒不住、项目支撑

一、环境需求

Python 3.6.x

numpy

scipy

matplotlib

pandas

cvxpy 0.4.x

二、怎样运用

1.装置必要的库;

2.克隆本代码库房;

3.履行每个目录下的python脚本;

4.假如你喜爱,则保藏本代码库:

三、本地化

3.1 扩展卡尔曼滤波本地化



该算法运用扩展卡尔曼滤波器(Extended Kalman Filter, EKF)完成传感器混合本地化。

蓝线为实在途径,黑线为导航估测途径(dead reckoning trajectory),绿点为方位观测(如GPS),红线为EKF预算的途径。

赤色椭圆为EKF预算的协方佐鸣r18差。

相关阅览:

概率机器人学

http://www.probabilistic-robotics.org/

3.2 无损卡尔曼滤波本地化



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

线和点的意义与EKF模仿的比如相同。

相关阅览:

运用无差别训练过的无损卡尔曼滤波进行机器人移动本地化

https://www.research强烈推荐必看款!一文查询Python必备50种算法(附解析)gate.net/publication/267963417_Discriminatively_Trained_Unscented_Kalman_Filter_for_Mobile_Robot_Localization

3.3 粒子滤波本地化



该算法运用粒子滤波器(Particle Filter, PF)完成传感器混合本地化。

蓝线为实在途径,黑线为导航估测途径(dead reckoning trajectory),绿点为方位观测(如GPS),红线为PF预算的途径。

该算法假定机器人能够丈量与地标(RFID)之间的间隔。

PF本地化会用到该丈量成果。

相关阅览:

概率机器人学

http://www.probabilistic-robotics.org/

3.4 直方图滤波本地化



该算法是运用直方图滤波器(Histogram filter)完成二维本地化的比如。

红十字是实践方位,黑点暮霭凝香是RFID的方位。

蓝色格子是直方图滤波器的概率方位。

在该模仿中,x,y是未知数,yaw已知。

滤波器整合了速度输入和从RFID取得间隔观测数据进行本地化。

不需要初始方位。

相关阅览:

概率机器人学

http://www.probabilistic-robotics.org/

四、映射

4.1 高斯网格映射

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



4.2 光线投射网格映射

本算法是二维光线投射网格映射(Ray cast强烈推荐必看款!一文查询Python必备50种算法(附解析)ing grid map)的比如。



4.3 k均值物体聚类

本算法是运用k均值算法进行二维物体聚类的比如。



4.4 圆形拟合物体形状辨认

本算法是运用圆形拟合进行物体形状辨认的比如。



蓝圈是实践的物体形状。

红叉是经过间隔传感器观测到的点。

红圈是运用圆形拟合估量的物体形状。

五、SLAM

一起本地化和映射(Simultaneous Localization and Mapping,SLAM)的比如。

5.1 迭代最近点匹配

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

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



相关阅览:

机器人运动介绍:迭代最近点算法

https://cs.gmu.edu/~kosecka/cs685/cs685-icp.pdf

5.2 EKF SLAM

这是依据扩展卡尔曼滤波的SLAM示例。

蓝线是实在途径,黑线是导航估测途径,红线是EKF SLAM估量的途径。

绿叉是估量的地标。



相关阅览:

概率机器人学

http://www.probabilistic-robotics.org/

5.3 FastSLAM 1.0

这是用FastSLAM 1.0进行依据特征的SLAM的示例。

蓝线是实践途径,黑线是导航估测,红线是FastSLAM的估测途径。

红点是FastSLAM中的粒子。

黑点是地标,蓝叉是FastLSAM预算的地标方位。



相关阅览:

概率机器人学

http://www.probabilistic-robotics.org/

5.4 FastSLAM 2.0

这是用FastSLAM 2.0进行依据特征的SLAM的示例。

动画的意义与FastSLAM 1.0的状况相同。



相关阅览:

概率机器人学

http://www.probabilistic-robotics.org/

Tim Bailey的SLAM模仿

http://www-personal.acfr.usyd.edu.au/tbailey/software/slam_simulations.htm

5.5 依据图的SLAM

这是依据图的SLAM的示例。

蓝线是实践途径。

黑线是导航估测途径。

红线是依据图的SLAM预算的途径。

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



相关阅览:

依据图的SLAM入门

http://w强烈推荐必看款!一文查询Python必备50种算法(附解析)ww2.informatik.uni-freiburg.de/拘谨器~stachnis/pdf/grisetti10titsmag.pdf

六、途径规划

6.1 动态窗口办法

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



相关阅览:

用动态窗口办法防止磕碰

https://www.ri.cmu.edu/pub_files/pub1/fox_dieter_1997_1/fox_dieter_1997_1.pdf

6.2 依据网格的查找

迪杰斯特拉算法

这是运用迪杰斯特拉(Dijkstra)算法完成的依据二维网格的最短途径规划。



动画中青色点为查找过的节点。

A*算法

下面是运用A星算法进行依据二维网格的最短途径规划。



动画中青色点为查找过的节点。

启示算法为二维欧几里得间隔。

势场算法

下面是运用势场算法进行依据二维网格的途径规划。



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

相关阅览:

机器人运动规划:势能函数

https://www.cs.cmu.edu/~motionplanning/lecture/Chap4-Potential-Field_howie.pdf

6.3 模型猜测途径生成

下面是模型猜测途径生成的途径优化示例。

算法用于状况晶格规划(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.0强烈推荐必看款!一文查询Python必备50种算法(附解析)416

最优运动规划的依据采样的算法

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.419.55蕨间访谈03&rep=rep1&type=pdf

依据Dubins途径的RRT



为轿车形机器人供给的运用RRT和dubins途径规划的途径规划算法。

依据Dubins途径的RRT*



为轿车形机器人供给的运用RRT*和dubins途径规划的途径规划算法。

依据reeds-shepp途径的RRT*



为轿车形机器人供给的运用RRT*和reeds shepp途径规划的途径规划算法。

Informed RRT*



这是运用Informed R探望祭品村落的掘墓人RT*的途径规划代码。

青色椭圆为Informed RRT*的启示采样域。

相关阅览:

Informed RRT*:经过对可接受的椭球启示的直接采样完成最优的依据采样的途径规划

https:mc锁哥//arxiv.org/pdf/1404.2334.pdf

批量Informed RRT*



这是运用批量Informed RRT*的途径规划代码。

相关阅览:

批量Informed树(BIT*):经过对隐含随大铁人17号机几何图形进行启示式查找完成依据采样的最优规划

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 R黑道狂枭eeds-Shepp曲线

http://planning.cs.uiuc.edu/node822.html

用于能行进和撤退的轿车的最优途径

https://pdfs.semanticscholar.org/932e/c495b1d0018fd5强烈推荐必看款!一文查询Python必备50种算法(附解析)9dee12a0bf74434fac7af4.pdf

ghliu/pyReedsShepp:完成Reeds Shepp曲线

https://github.com/ghliu/pyReedsShepp

6.15 依据LQR的途径规划

为两层积分模型使强烈推荐必看款!一文查询Python必备50种算法(附解析)用依据LQR的途径规划的示例代码。



6.16 Frenet Frame中的最优途径



这段代码在Frenet Frame中生成最优途径。

青色线为方针途径,黑色叉为障碍物。

红obad木马色线为猜测的途径。

相关阅览:

Frenet Frame中的动态接到场景中的最优途径生成

https://www.researchgate.net/profile/Moritz_Werling/publication/224156269_Optimal_Trajectory_Generation_for_Dynamic_Street_Scenarios_in_a_Fr董晴多大了enet_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 强烈推荐必看款!一文查询Python必备50种算法(附解析)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)转向操控和P黄播盒子ID速度操控的途径盯梢模仿。