yuanzhongqiao / PythonRobotics-CN

机器人算法的 Python 示例代码Python sample codes for robotics algorithms.

Home Page:https://atsushisakai.github.io/PythonRobotics/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

标题图片

Python机器人

GitHub_Action_Linux_CI GitHub_Action_MacOS_CI GitHub_Action_Windows_CI 构建状态 代码科夫

机器人算法的 Python 代码。

目录

这是什么?

这是机器人算法的 Python 代码集合。

特征:

  1. 易于阅读,有助于理解每个算法的基本**。

  2. 选择广泛使用且实用的算法。

  3. 最小的依赖性。

请参阅本文了解更多详细信息:

要求

运行每个示例代码:

对于开发:

文档

本自述文件仅显示了该项目的一些示例。

如果您对每种算法的其他示例或数学背景感兴趣,

您可以在线查看完整的文档:欢迎使用 PythonRobotics 的文档!— PythonRobotics 文档

所有动画 gif 都存储在这里:AtsushiSakai/PythonRoboticsGifs:PythonRobotics 的动画 gif

如何使用

  1. 克隆这个仓库。

    git clone https://github.com/AtsushiSakai/PythonRobotics.git
    
  2. 安装所需的库。

  • 使用康达:

    conda env create -f requirements/environment.yml
    
  • 使用点:

    pip install -r requirements/requirements.txt
    
  1. 在每个目录中执行python脚本。

  2. 如果您喜欢,请为该存储库添加星星 😃。

本土化

扩展卡尔曼滤波器本地化

EKF图片

参考:

粒子过滤器定位

2

这是使用粒子滤波器(PF)的传感器融合定位。

蓝线是真实轨迹,黑线是航位推测轨迹,

红线是带有 PF 的估计轨迹。

假设机器人可以测量距地标的距离 (RFID)。

这些测量用于 PF 定位。

参考:

直方图滤波器定位

3

这是使用直方图滤波器的 2D 定位示例。

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

蓝色网格显示直方图滤波器的位置概率。

在此模拟中,x,y 未知,偏航已知。

该滤波器集成了来自 RFID 的速度输入和范围观测以进行定位。

不需要初始位置。

参考:

测绘

高斯网格图

这是一个二维高斯网格映射示例。

2

射线投射网格图

这是一个 2D 射线投射网格映射示例。

2

激光雷达转网格地图

此示例演示如何将 2D 范围测量转换为网格地图。

2

k-均值对象聚类

这是一个使用 k-means 算法的 2D 对象聚类。

2

矩形拟合

这是一个用于车辆检测的二维矩形。

2

SLAM

同步定位与建图 (SLAM) 示例

迭代最近点 (ICP) 匹配

这是一个具有奇异值分解的 2D ICP 匹配示例。

它可以计算旋转矩阵,以及点与点之间的平移向量。

3

参考:

快速SLAM 1.0

这是一个使用 FastSLAM 1.0 的基于特征的 SLAM 示例。

蓝线是地面实况,黑线是航位推算,红线是使用 FastSLAM 估计的轨迹。

红点是FastSLAM的粒子。

黑点是地标,蓝色十字是FastSLAM估计的地标位置。

3

参考:

路径规划

动态窗口方法

这是使用动态窗口方法的 2D 导航示例代码。

2

基于网格的搜索

迪杰斯特拉算法

这是基于 Dijkstra 算法的最短路径规划的二维网格。

PythonRobotics/figure_1.png 大师 · AtsushiSakai/PythonRobotics

在动画中,青色点是搜索到的节点。

A*算法

这是一个基于二维网格的A星算法最短路径规划。

PythonRobotics/figure_1.png 大师 · AtsushiSakai/PythonRobotics

在动画中,青色点是搜索到的节点。

它的启发式是二维欧几里得距离。

D*算法

这是一个基于二维网格的D星算法最短路径规划。

大师人物·nirnayroy/intelligentrobotics

该动画显示机器人使用 D* 搜索算法找到避开障碍物的路径。

参考:

D* Lite 算法

该算法在发现障碍物时重新路由时找到两点之间的最短路径。它已在此处针对 2D 网格实现。

D* 精简版

该动画展示了机器人在使用 D* Lite 搜索算法发现障碍物时寻找其路径并重新规划路线以避开障碍物。

参考文献:

势场算法

这是使用势场算法的基于二维网格的路径规划。

势场

在动画中,蓝色热图显示了每个网格的潜在价值。

参考:

基于网格的覆盖路径规划

这是基于二维网格的覆盖路径规划模拟。

势场

状态格子规划

该脚本是带有状态格规划的路径规划代码。

该代码使用模型预测轨迹生成器来解决边界问题。

参考:

有偏极性采样

PythonRobotics/figure_1.png 大师 · AtsushiSakai/PythonRobotics

车道采样

PythonRobotics/figure_1.png 大师 · AtsushiSakai/PythonRobotics

概率路线图 (PRM) 规划

PRM

该 PRM 规划器使用 Dijkstra 方法进行图搜索。

动画中,蓝色点是采样点,

青色十字表示用 Dijkstra 方法搜索的点,

红线是PRM的最终路径。

参考:

快速探索随机树(RRT)

恢复时间*

PythonRobotics/figure_1.png 大师 · AtsushiSakai/PythonRobotics

这是带有 RRT* 的路径规划代码

黑色圆圈是障碍物,绿线是搜索到的树,红色十字是起点和目标位置。

参考:

带 reeds-shepp 路径的 RRT*

机器人/animation.gif at master · AtsushiSakai/PythonRobotics

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">)</font></font></p>

使用 RRT* 和 Reeds Shepp 路径规划器对汽车机器人进行路径规划。

LQR-RRT*

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

双积分器运动模型用于 LQR 局部规划器。

LQR_RRT

参考:

五次多项式规划

使用五次多项式进行运动规划。

2

它可以根据五次多项式计算 2D 路径、速度和加速度曲线。

参考:

里德·谢普规划

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

RSP规划

参考:

基于LQR的路径规划

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

RSP规划

Frenet 框架中的最优轨迹

3

这是 Frenet 框架中的最佳轨迹生成。

青色线是目标路线,黑色十字是障碍物。

红线是预测的路径。

参考:

路径追踪

移动到姿势控制

这是移动到姿势控制的模拟

2

参考:

斯坦利控制

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

2

参考:

后轮反馈控制

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

PythonRobotics/figure_1.png 大师 · AtsushiSakai/PythonRobotics

参考:

线性二次调节器 (LQR) 速度和转向控制

使用 LQR 速度和转向控制进行路径跟踪仿真。

3

参考:

模型预测速度和转向控制

具有迭代线性模型预测速度和转向控制的路径跟踪仿真。

MPC图片

参考:

使用 C-GMRES 进行非线性模型预测控制

使用 C-GMRES 的 NMPC 进行运动规划和路径跟踪仿真

3

参考:

手臂导航

N关节臂对点控制

N关节臂进行点控制模拟。

这是一个交互式模拟。

您可以通过左键单击绘图区域来设置末端执行器的目标位置。

3

不过,在此模拟中,N = 10,您可以更改它。

带避障功能的手臂导航

具有避障模拟功能的手臂导航。

3

空中导航

无人机3D轨迹跟踪

这是四旋翼飞行器的 3D 轨迹跟踪模拟。

3

火箭动力着陆

这是火箭动力着陆的 3D 轨迹生成模拟。

3

参考:

双足

带倒立摆的双足规划器

这是一个用于修改倒立摆脚步的双足规划器。

您可以设置足迹,规划器将自动修改这些足迹。

3

执照

麻省理工学院

用例

如果这个项目对您的机器人项目有帮助,请通过创建问题告诉我。

非常欢迎您使用 PythonRobotics 的机器人视频!

这是用户评论和参考的列表:users_comments

贡献

欢迎任何贡献!

请查看此文档:如何贡献 — PythonRobotics 文档

引用

如果您在学术工作中使用该项目的代码,我们鼓励您引用我们的论文

如果您在工业中使用该项目的代码,我们也很乐意听取您的意见;请随时直接与开发人员联系。

支持这个项目

如果您或您的公司愿意支持该项目,请考虑:

如果您想以其他方式支持我们,请联系创建问题。

赞助商

他们为该 OSS 开发提供免费的 IDE 许可证。

他们正在为此 OSS 项目提供 1Password 团队许可证的免费许可证。

作者

About

机器人算法的 Python 示例代码Python sample codes for robotics algorithms.

https://atsushisakai.github.io/PythonRobotics/

License:Other


Languages

Language:Python 100.0%Language:Shell 0.0%