机器人算法的 Python 代码。
这是机器人算法的 Python 代码集合。
特征:
-
易于阅读,有助于理解每个算法的基本思想。
-
选择广泛使用且实用的算法。
-
最小的依赖性。
请参阅本文了解更多详细信息:
运行每个示例代码:
对于开发:
-
pytest(用于单元测试)
-
pytest-xdist(用于并行单元测试)
-
mypy(用于类型检查)
-
sphinx(用于文档生成)
-
pycodestyle(用于代码风格检查)
本自述文件仅显示了该项目的一些示例。
如果您对每种算法的其他示例或数学背景感兴趣,
您可以在线查看完整的文档:欢迎使用 PythonRobotics 的文档!— PythonRobotics 文档
所有动画 gif 都存储在这里:AtsushiSakai/PythonRoboticsGifs:PythonRobotics 的动画 gif
-
克隆这个仓库。
git clone https://github.com/AtsushiSakai/PythonRobotics.git
-
安装所需的库。
-
使用康达:
conda env create -f requirements/environment.yml
-
使用点:
pip install -r requirements/requirements.txt
-
在每个目录中执行python脚本。
-
如果您喜欢,请为该存储库添加星星 😃。
参考:
这是使用粒子滤波器(PF)的传感器融合定位。
蓝线是真实轨迹,黑线是航位推测轨迹,
红线是带有 PF 的估计轨迹。
假设机器人可以测量距地标的距离 (RFID)。
这些测量用于 PF 定位。
参考:
这是使用直方图滤波器的 2D 定位示例。
红十字是真实位置,黑点是RFID位置。
蓝色网格显示直方图滤波器的位置概率。
在此模拟中,x,y 未知,偏航已知。
该滤波器集成了来自 RFID 的速度输入和范围观测以进行定位。
不需要初始位置。
参考:
这是一个二维高斯网格映射示例。
这是一个 2D 射线投射网格映射示例。
此示例演示如何将 2D 范围测量转换为网格地图。
这是一个使用 k-means 算法的 2D 对象聚类。
这是一个用于车辆检测的二维矩形。
同步定位与建图 (SLAM) 示例
这是一个具有奇异值分解的 2D ICP 匹配示例。
它可以计算旋转矩阵,以及点与点之间的平移向量。
参考:
这是一个使用 FastSLAM 1.0 的基于特征的 SLAM 示例。
蓝线是地面实况,黑线是航位推算,红线是使用 FastSLAM 估计的轨迹。
红点是FastSLAM的粒子。
黑点是地标,蓝色十字是FastSLAM估计的地标位置。
参考:
这是使用动态窗口方法的 2D 导航示例代码。
这是基于 Dijkstra 算法的最短路径规划的二维网格。
在动画中,青色点是搜索到的节点。
这是一个基于二维网格的A星算法最短路径规划。
在动画中,青色点是搜索到的节点。
它的启发式是二维欧几里得距离。
这是一个基于二维网格的D星算法最短路径规划。
该动画显示机器人使用 D* 搜索算法找到避开障碍物的路径。
参考:
该算法在发现障碍物时重新路由时找到两点之间的最短路径。它已在此处针对 2D 网格实现。
该动画展示了机器人在使用 D* Lite 搜索算法发现障碍物时寻找其路径并重新规划路线以避开障碍物。
参考文献:
这是使用势场算法的基于二维网格的路径规划。
在动画中,蓝色热图显示了每个网格的潜在价值。
参考:
这是基于二维网格的覆盖路径规划模拟。
该脚本是带有状态格规划的路径规划代码。
该代码使用模型预测轨迹生成器来解决边界问题。
参考:
该 PRM 规划器使用 Dijkstra 方法进行图搜索。
动画中,蓝色点是采样点,
青色十字表示用 Dijkstra 方法搜索的点,
红线是PRM的最终路径。
参考:
这是带有 RRT* 的路径规划代码
黑色圆圈是障碍物,绿线是搜索到的树,红色十字是起点和目标位置。
参考:
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">)</font></font></p>
使用 RRT* 和 Reeds Shepp 路径规划器对汽车机器人进行路径规划。
这是使用 LQR-RRT* 的路径规划模拟。
双积分器运动模型用于 LQR 局部规划器。
参考:
使用五次多项式进行运动规划。
它可以根据五次多项式计算 2D 路径、速度和加速度曲线。
参考:
Reeds Shepp 路径规划的示例代码。
参考:
使用基于 LQR 的双积分器模型路径规划的示例代码。
这是 Frenet 框架中的最佳轨迹生成。
青色线是目标路线,黑色十字是障碍物。
红线是预测的路径。
参考:
这是移动到姿势控制的模拟
参考:
采用 Stanley 转向控制和 PID 速度控制的路径跟踪模拟。
参考:
具有后轮反馈转向控制和 PID 速度控制的路径跟踪模拟。
参考:
使用 LQR 速度和转向控制进行路径跟踪仿真。
参考:
具有迭代线性模型预测速度和转向控制的路径跟踪仿真。
参考:
使用 C-GMRES 的 NMPC 进行运动规划和路径跟踪仿真
参考:
N关节臂进行点控制模拟。
这是一个交互式模拟。
您可以通过左键单击绘图区域来设置末端执行器的目标位置。
不过,在此模拟中,N = 10,您可以更改它。
具有避障模拟功能的手臂导航。
这是四旋翼飞行器的 3D 轨迹跟踪模拟。
这是火箭动力着陆的 3D 轨迹生成模拟。
参考:
这是一个用于修改倒立摆脚步的双足规划器。
您可以设置足迹,规划器将自动修改这些足迹。
麻省理工学院
如果这个项目对您的机器人项目有帮助,请通过创建问题告诉我。
非常欢迎您使用 PythonRobotics 的机器人视频!
这是用户评论和参考的列表:users_comments
欢迎任何贡献!
请查看此文档:如何贡献 — PythonRobotics 文档
如果您在学术工作中使用该项目的代码,我们鼓励您引用我们的论文
如果您在工业中使用该项目的代码,我们也很乐意听取您的意见;请随时直接与开发人员联系。
如果您或您的公司愿意支持该项目,请考虑:
如果您想以其他方式支持我们,请联系创建问题。
他们为该 OSS 开发提供免费的 IDE 许可证。
他们正在为此 OSS 项目提供 1Password 团队许可证的免费许可证。