python带通滤波求系数_卡尔曼滤波器代码python


史上最全Python算法合集_最新Python基础学习教程_Python学习路线

目录

一、环境需求

二、怎样使用

三、本地化

3.1

3.2

3.3

3.4

四、映射

4.1

4.2

4.3

4.4

五、SLAM

5.1

5.2

5.3

5.4

5.5

六、路径规划

6.1

6.2

  • 迪杰斯特拉算法
  • A*算法
  • 势场算法

6.3

  • 路径优化示例
  • 查找表生成示例

6.4

  • 均匀极性采样(Uniform polar sampling)
  • 偏差极性采样(Biased polar sampling)
  • 路线采样(Lane sampling)

6.5

6.6

6.7

  • 基本RRT
  • RRT*
  • 基于Dubins路径的RRT
  • 基于Dubins路径的RRT*
  • 基于reeds-shepp路径的RRT*
  • Informed RRT*
  • 批量Informed RRT*
  • 闭合回路RRT*
  • LQR-RRT*

6.8

6.9

6.10

6.11

6.12

6.13

6.14

6.15

6.16

七、路径跟踪

7.1

7.2

7.3

7.4

7.5

7.6

7.7

八、项目支持

一、环境需求

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

二、怎样使用

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

三、本地化

3.1 扩展卡尔曼滤波本地化


python带通滤波求系数_史上最全采样方法详细解读与代码实现_02


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

蓝线为真实路径,黑线为导航推测路径(dead reckoning trajectory),绿点为位置观测(如GPS),红线为EKF估算的路径。

红色椭圆为EKF估算的协方差。

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

3.2 无损卡尔曼滤波本地化


python带通滤波求系数_史上最全采样方法详细解读与代码实现_03


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

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

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

3.3 粒子滤波本地化


python带通滤波求系数_python带通滤波求系数_04


该算法利用粒子滤波器(Particle Filter, PF)实现传感器混合本地化。

蓝线为真实路径,黑线为导航推测路径(dead reckoning trajectory),绿点为位置观测(如GPS),红线为PF估算的路径。

该算法假设机器人能够测量与地标(RFID)之间的距离。

PF本地化会用到该测量结果。

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

3.4 直方图滤波本地化


python带通滤波求系数_卡尔曼滤波器代码python_05


该算法是利用直方图滤波器(Histogram filter)实现二维本地化的例子。

红十字是实际位置,黑点是RFID的位置。

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

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

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

不需要初始位置。

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

四、映射

4.1 高斯网格映射

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


python带通滤波求系数_卡尔曼滤波器代码python_06


4.2 光线投射网格映射

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


python带通滤波求系数_算法速学速用大辞典 pdf_07


4.3 k均值物体聚类

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


python带通滤波求系数_算法速学速用大辞典 pdf_08


4.4 圆形拟合物体形状识别

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


python带通滤波求系数_椭球矩阵python_09


蓝圈是实际的物体形状。

红叉是通过距离传感器观测到的点。

红圈是使用圆形拟合估计的物体形状。

五、SLAM

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

5.1 迭代最近点匹配

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

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


python带通滤波求系数_算法速学速用大辞典 pdf_10


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

5.2 EKF SLAM

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

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

绿叉是估计的地标。


python带通滤波求系数_算法速学速用大辞典 pdf_11


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

5.3 FastSLAM 1.0

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

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

红点是FastSLAM中的粒子。

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_12


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

5.4 FastSLAM 2.0

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

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


python带通滤波求系数_椭球矩阵python_13


相关阅读:
概率机器人学 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估算的路径。

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


python带通滤波求系数_椭球矩阵python_14


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

六、路径规划

6.1 动态窗口方式

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_15


6.2 基于网格的搜索

  • 迪杰斯特拉算法

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_16


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

  • A*算法

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


python带通滤波求系数_python带通滤波求系数_17


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

启发算法为二维欧几里得距离。

  • 势场算法

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


python带通滤波求系数_卡尔曼滤波器代码python_18


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

6.3 模型预测路径生成

下面是模型预测路径生成的路径优化示例。

算法用于状态晶格规划 (state lattice planning) 。

  • 路径优化示例


python带通滤波求系数_椭球矩阵python_19


  • 查找表生成示例


python带通滤波求系数_python带通滤波求系数_20


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

6.4 状态晶格规划

这个脚本使用了状态晶格规划(state lattice planning)实现路径规划。

这段代码通过模型预测路径生成来解决边界问题。

  • 均匀极性采样 (Uniform polar sampling)


python带通滤波求系数_椭球矩阵python_21


  • 偏差极性采样 (Biased polar sampling)


python带通滤波求系数_史上最全采样方法详细解读与代码实现_22


  • 路线采样(Lane sampling)


python带通滤波求系数_python带通滤波求系数_23


6.5 随机路径图(PRM)规划


python带通滤波求系数_python带通滤波求系数_24


这个随机路径图(Probabilistic Road-Map,PRM)规划算法在图搜索上采用了迪杰斯特拉方法。

动画中的蓝点为采样点。

青色叉为迪杰斯特拉方法搜索过的点。

红线为PRM的最终路径。

6.6 Voronoi路径图规划


python带通滤波求系数_史上最全采样方法详细解读与代码实现_25


这个Voronoi路径图(Probabilistic Road-Map,PRM)规划算法在图搜索上采用了迪杰斯特拉方法。

动画中的蓝点为Voronoi点。

青色叉为迪杰斯特拉方法搜索过的点。

红线为Voronoi路径图的最终路径。

6.7 快速搜索随机树(RRT)

  • 基本RRT


python带通滤波求系数_史上最全采样方法详细解读与代码实现_26


这是个使用快速搜索随机树(Rapidly-Exploring Random Trees,RRT)的简单路径规划代码。

黑色圆为障碍物,绿线为搜索树,红叉为开始位置和目标位置。

  • RRT*


python带通滤波求系数_python带通滤波求系数_27


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

黑色圆为障碍物,绿线为搜索树,红叉为开始位置和目标位置。

  • 基于Dubins路径的RRT


python带通滤波求系数_python带通滤波求系数_28


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

  • 基于Dubins路径的RRT*


python带通滤波求系数_算法速学速用大辞典 pdf_29


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

  • 基于reeds-shepp路径的RRT*


python带通滤波求系数_卡尔曼滤波器代码python_30


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

  • Informed RRT*


python带通滤波求系数_算法速学速用大辞典 pdf_31


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

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

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

  • 批量Informed RRT*


python带通滤波求系数_算法速学速用大辞典 pdf_32


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

  • 闭合回路RRT*

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


python带通滤波求系数_卡尔曼滤波器代码python_33


这段代码里,转向控制用的是纯追迹算法(pure-pursuit algorithm)。

速度控制采用了PID。

相关阅读:
使用闭合回路预测在复杂环境内实现运动规划 http:// acl.mit.edu/papers/Kuwa taGNC08.pdf )
应用于自动城市驾驶的实时运动规划 http:// acl.mit.edu/papers/Kuwa taTCST09.pdf
[1601.06326]采用闭合回路预测实现最优运动规划的基于采样的算法 https:// arxiv.org/abs/1601.0632 6

  • LQR-RRT*

这是个使用LQR-RRT*的路径规划模拟。

LQR局部规划采用了双重积分运动模型。


python带通滤波求系数_史上最全采样方法详细解读与代码实现_34


6.8 三次样条规划

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

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

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_35


python带通滤波求系数_python带通滤波求系数_36


python带通滤波求系数_算法速学速用大辞典 pdf_37


6.9 B样条规划


python带通滤波求系数_python带通滤波求系数_38


这是段使用B样条曲线进行规划的例子。
输入路点,它会利用B样条生成光滑的路径。

第一个和最后一个路点位于最后的路径上。

6.10 Eta^3样条路径规划


python带通滤波求系数_卡尔曼滤波器代码python_39


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

6.11 贝济埃路径规划

贝济埃路径规划的示例代码。

根据四个控制点生成贝济埃路径。


python带通滤波求系数_椭球矩阵python_40


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


python带通滤波求系数_算法速学速用大辞典 pdf_41


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

6.12 五次多项式规划

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_42


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

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

6.13 Dubins路径规划

Dubins路径规划的示例代码。


python带通滤波求系数_卡尔曼滤波器代码python_43


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

6.14 Reeds Shepp路径规划

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


python带通滤波求系数_python带通滤波求系数_44


相关阅读:
15.3.2 Reeds-Shepp曲线 http:// planning.cs.uiuc.edu/no de822.html
用于能前进和后退的汽车的最优路径 https:// pdfs.semanticscholar.org /932e/c495b1d0018fd59dee12a0bf74434fac7af4.pdf
ghliu/pyReedsShepp:实现Reeds Shepp曲线 https:// github.com/ghliu/pyReed sShepp

6.15 基于LQR的路径规划

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


python带通滤波求系数_卡尔曼滤波器代码python_45


6.16 Frenet Frame中的最优路径


python带通滤波求系数_卡尔曼滤波器代码python_46


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

青色线为目标路径,黑色叉为障碍物。

红色线为预测的路径。

相关阅读:
Frenet Frame中的动态接到场景中的最优路径生成 https://www. researchgate.net/profil e/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 姿势控制跟踪

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


python带通滤波求系数_卡尔曼滤波器代码python_47


相关阅读:
Robotics, Vision and Control - Fundamental Algorithms In MATLAB® Second, Completely Revised, Extended And Updated Edition | Peter Corke | Springer https://www. springer.com/us/book/97 83319544120

7.2 纯追迹跟踪

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


python带通滤波求系数_椭球矩阵python_48


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

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

7.3 史坦利控制

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


python带通滤波求系数_卡尔曼滤波器代码python_49


相关阅读:
史坦利:赢得DARPA大奖赛的机器人 http:// robots.stanford.edu/pap ers/thrun.stanley05.pdf
用于自动驾驶机动车路径跟踪的自动转向方法 https://www. ri.cmu.edu/pub_files/20 09/2/Automatic_Steering_Methods_for_Autonomous_Automobile_Path_Tracking.pdf

7.4 后轮反馈控制

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


python带通滤波求系数_椭球矩阵python_50


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

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

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_51


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

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

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


python带通滤波求系数_史上最全采样方法详细解读与代码实现_52


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

7.7 模型预测速度和转向控制

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


python带通滤波求系数_卡尔曼滤波器代码python_53


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