0 - 简介与安装 - Python运动规划库教程(Python Motion Planning)
简介
运动规划(Motion planning)是在起点和终点之间无冲突地规划机器人状态序列的过程。
运动规划主要包括路径规划(Path planning)和轨迹规划(Trajectory planning)。
路径规划(Path Planning):基于路径约束(如障碍物),规划机器人从起点到终点无冲突行驶的最优路径序列。轨迹规划(Trajectory planning):在已知路径序列的基础上,结合运动学、动力学约束,规划机器人沿全局路径运动的状态。
本仓库提供了常见运动规划算法的Python实现,包括基于 N 维栅格的路径规划算法、用于路径跟踪的控制器、轨迹优化器、支持 2D 和 3D 的可视化工具,以及一个用于测试控制器的简易物理仿真器。
仓库Github地址:https://github.com/ai-winter/python_motion_planning/
仓库文档地址:https://ai-winter.github.io/python_motion_planning/latest/
欢迎 Star, Fork 和 Contribute!
快速开始
概览
源码文件结构如下所示:
python_motion_planning ├─common | ├─env | | ├─map | | ├─robot | | └─world | ├─utils | └─visualizer ├─controller | └─path_tracker ├─path_planner | ├─graph_search | ├─sample_search | └─hybrid_search └─traj_optimizer └─curve_generator安装
(可选)本代码在 python=3.10 环境下测试通过,其他相近版本理论上也可使用。推荐使用conda安装依赖。
conda create-npmppython=3.10conda activate pmp安装本仓库,请在终端中运行以下命令:
pipinstallpython-motion-planning演示
路径规划器
图搜索(Graph Search)
| 规划器 | 2D 栅格 | 3D 栅格 |
|---|---|---|
| Dijkstra | ||
| GBFS | ||
| A* | ||
| JPS | ||
| Theta* | ||
| Lazy Theta* |
采样搜索(Sample Search)
| 规划器 | 2D 栅格 | 3D 栅格 |
|---|---|---|
| RRT | ||
| RRT* | ||
| RRT-Connect |
混合搜索(Hybrid Search)
| 规划器 | 2D 栅格 | 3D 栅格 |
|---|---|---|
| Voronoi Planner |
控制器
我们提供了一个带有简单物理仿真的玩具级模拟器,用于测试控制器(路径跟踪器)。该模拟器支持多智能体/多机器人。可用的机器人类型包括CircularRobot(全向移动)和DiffDriveRobot(仅支持前进和后退)。目前仅提供 2D 模拟器,3D 模拟器尚未实现。
在以下演示中,蓝色的机器人 1 为CircularRobot,橙色的机器人 2 为DiffDriveRobot。
| 控制器 | 2D | 3D |
|---|---|---|
| Path Tracker | 未实现 | |
| Pure Pursuit | 未实现 | |
| PID | 未实现 | |
| APF | 未实现 | |
| DWA | 未实现 | |
| RPP | 未实现 |
轨迹优化器
曲线生成器
基于路径点
| 生成器 | 2D | 3D |
|---|---|---|
| Cubic Spline | 未实现 | |
| BSpline | 未实现 |
基于位姿点
| 生成器 | 2D | 3D |
|---|---|---|
| Polynomia | 未实现 | |
| Bezier | 未实现 | |
| Dubins | 未实现 | |
| Reeds-Shepp | 未实现 |
