初识OMG-tools:终极Python运动规划工具箱,20+实例带你一次看懂它能做什么
【免费下载链接】omg-toolsOptimal Motion Generation-tools: motion planning made easy项目地址: https://gitcode.com/gh_mirrors/om/omg-tools
OMG-tools(Optimal Motion Generation-tools)是一个开源的 Python 运动规划工具箱,让"运动规划变简单":你只需几行代码,就能为机器人、无人机、AGV 小车等建立运动模型,在带障碍物的环境中求解出光滑、实时、避障的运动轨迹,并直接仿真、绘图甚至导出视频。它基于样条(spline)优化方法,兼顾单智能体的模型预测控制(MPC)与多智能体的分布式规划,是入门运动规划领域难得的"低门槛、高上限"工具。
为什么选择 OMG-tools?
很多新手接触运动规划时,要么被复杂的优化数学劝退,要么只能跑现成算法无法改造成自己的场景。OMG-tools 用一套统一的对象模型把这件事拆成了 4 个直观的概念:
| 概念 | 含义 | 对应模块 |
|---|---|---|
| 🚗车辆(Vehicle) | 要规划的对象:全向车、Dubins 车、四旋翼、拖车、编队 | omgtools/vehicles/ |
| 🏭环境(Environment) | 房间形状 + 静态/动态障碍物 | omgtools/environment/ |
| 🧮问题(Problem) | 点对点、编队、会合、调度等任务类型 | omgtools/problems/ |
| ▶️执行(Execution) | 仿真器、绘图层、实时部署器 | omgtools/execution/ |
底层优化由 CasADi 完成(求解器默认 ipopt),并支持 C 代码生成加速。所有能力只需from omgtools import *一行即可调用。
快速上手:三步安装 + 最小示例
一键安装步骤
OMG-tools 已发布在 PyPI,一条命令即可安装(会自动带上 CasADi 依赖):
sudo pip install omg-tools如需保存 GIF 动画,再额外安装 ImageMagick;追求更快的求解速度可安装 HSL 线性求解器(ma57)。开发模式下建议克隆仓库后使用pip install -e .。
最短示例代码:从 A 点到 B 点
以下就是 readme.md 中的经典入门示例,约 20 行完成了"建车 → 建环境 → 加障碍物 → 求解 → 看动画"的完整闭环:
from omgtools import * # 1. 创建车辆并设置起点/终点 vehicle = Holonomic() vehicle.set_initial_conditions([-1.5, -1.5]) vehicle.set_terminal_conditions([2., 2.]) vehicle.set_options({'safety_distance': 0.1}) # 2. 创建环境(5x5 方形房间)并添加障碍物 environment = Environment(room={'shape': Square(5.)}) rectangle = Rectangle(width=3., height=0.2) environment.add_obstacle(Obstacle({'position': [-2.1, -0.5]}, shape=rectangle)) environment.add_obstacle(Obstacle({'position': [1.7, -0.5]}, shape=rectangle)) # 3. 构建点对点问题并初始化 problem = Point2point(vehicle, environment) problem.init() # 4. 仿真、绘图并保存动画 simulator = Simulator(problem) problem.plot('scene') simulator.run() problem.save_movie('scene')运行后你会看到小车平滑地绕过两个长条障碍物,并实时避开那个"突然动起来的圆"——这正是 OMG-tools 的招牌能力:滚动时域内的实时重规划。
核心模块速览
omgtools/basics/:几何图元(shape.py)、样条曲线(spline.py)、优化层(optilayer.py),是整个工具箱的"地基"omgtools/vehicles/:15 个现成车型,包括Holonomic、Quadrotor、Bicycle、Trailer、Fleet(多车编队容器)等,继承即可扩展自己的车型omgtools/environment/:房间 + 障碍物建模,障碍物支持自定义速度轨迹,从而模拟动态障碍omgtools/problems/:Point2point、Formation、RendezVous、SchedulerProblem,以及DistributedProblem等分布式/双分解多智能体算法omgtools/gui/:支持读取 SVG / GCode 文件自动生成规划问题,把 CAD 图纸直接变成轨迹任务omgtools/export/:把规划器导出为 C++ 代码嵌入你自己的控制系统
20+ 实例清单:一次看懂它能做什么
examples/目录是最好的"能力地图",以下按场景分类(每个文件都可独立运行,跑完自动弹出动画):
🎯 单智能体点对点规划
| 示例 | 场景亮点 |
|---|---|
| p2p_holonomic.py | 全向车基础入门 |
| p2p_holonomic_3d.py | 3D 空间运动 |
| p2p_quadrotor.py / p2p_3dquadrotor.py | 四旋翼平面 / 3D 规划 |
| p2p_dubins.py | Dubins 车(不可倒车车辆) |
| p2p_bicycle.py | 自行车运动学模型 |
| p2p_agv.py / p2p_agv2.py | AGV 自动泊车 |
| p2p_trailer.py | 拖挂车规划(含铰接角约束) |
🏃 动态环境 & 实时避障
| 示例 | 场景亮点 |
|---|---|
| p2p_holonomic_blocking.py | 行驶中道路突然被堵死 |
| p2p_holonomic_disturbances.py | 带输入扰动与模型失配的鲁棒性 |
| annoying_obstacle.py | "捣乱"障碍物追逐测试 |
| p2p_holonomic_interveh_avoidance.py | 车辆间相互避让 |
| revolving_door.py | 穿越旋转门(经典动态障碍) |
🚁 多智能体编队与调度
| 示例 | 场景亮点 |
|---|---|
| formation_holonomic.py | 分布式编队控制 |
| formation_dubins.py | Dubins 车队相对编队 |
| formation_quadrotor.py | 四旋翼编队 |
| formation_quadrotor_rotating_wall.py | 编队穿越旋转墙 |
| rendezvous_holonomic_export.py | 多车会合 + 代码导出 |
| schedulerproblem_example1.py 等 3 个 | 调度类问题(含 Dubins 版本) |
| compare_distributed_vs_central_quadrotors.py | 分布式 vs 集中式算法对比 |
🏭 大场景 & 工业应用
| 示例 | 场景亮点 |
|---|---|
| p2p_holonomic_warehouse.py | 大型仓库路径规划 |
| gui_examples/vast_environment_example1.py | 超大环境多坐标系规划(ICRA 论文复现) |
| examples/GCode_examples/ | 读取 .nc 刀路文件生成 CNC 轨迹(含赛车场、锚形件等) |
| examples/ros_example/ | 与 ROS / Gazebo 联动的 P3D 小车实战工程 |
新手学习路线(建议按序完成)
- 跑通教程:先运行 tutorial_example.py,注释极其详尽,讲清了 OptiLayer、车辆、环境、问题的全部概念
- 改参数:修改起点终点、障碍物位置和数量,观察轨迹变化
- 换车型:把
Holonomic换成Quadrotor或Bicycle,体会运动学约束差异 - 上难度:挑战 revolving_door.py 与 p2p_holonomic_blocking.py,理解实时重规划
- 多智能体:进入编队与调度示例,感受分布式优化之美
- 工程化:参考 deployer_example.py 学习用 Deployer 做实时部署,用 export 模块导出 C++ 代码
写在最后
OMG-tools 由鲁汶大学 MECO 团队开发,背后是 ECC、IFAC World Congress 等多篇顶会顶刊论文,并被 LGPLv3 协议开源——既能快速出效果,又能放心读源码学原理。对于想入门样条运动规划、模型预测控制、多智能体协同的工程师和研究生来说,它几乎是当前最友好的 Python 起点。
💡 提示:所有示例的运行结果都会自动生成动画与信号图,配合
examples/中的源码阅读,是理解运动规划算法最直观的方式。祝你在 OMG-tools 的世界里玩得开心!
【免费下载链接】omg-toolsOptimal Motion Generation-tools: motion planning made easy项目地址: https://gitcode.com/gh_mirrors/om/omg-tools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考