图形化设计运动规划环境:OMG-tools GUI从SVG地图导入到一键仿真3步搞定
【免费下载链接】omg-toolsOptimal Motion Generation-tools: motion planning made easy项目地址: https://gitcode.com/gh_mirrors/om/omg-tools
OMG-tools(Optimal Motion Generation-tools)是一款让运动规划变得简单的 Python 工具箱。它内置的图形化环境编辑器 EnvironmentGUI 让你几乎不用手写代码:导入一张 SVG 地图、鼠标点击布置障碍与起终点、点击 Ready 一键仿真,3 步就能得到一条平滑避障的运动轨迹。
1分钟认识 EnvironmentGUI 图形化界面
EnvironmentGUI 基于 tkinter 实现,源码位于 omgtools/gui/gui.py,界面由三部分组成:
- 网格画布:以米为单位的环境,障碍物自动吸附到网格交点
- 左侧按钮区:Ready(完成设计)、Load(载入已保存环境)、Load SVG(导入 SVG 地图)、Remove(删除障碍)
- 参数区:选择圆形/矩形、输入尺寸与速度、勾选 Bounce(运动障碍物反弹)
操作约定很简单:
| 操作 | 作用 |
|---|---|
| 左键单击画布 | 放置当前选中的障碍物 |
| 右键单击两次 | 依次设置起点、终点(点错可再点两次覆盖) |
| 方向箭头按钮 | 微调最近选中障碍物的位置 |
| 勾选 Save + 点 Ready | 将环境保存为.pickle文件,下次 Load 秒开 |
🗺️ 第1步:导入SVG地图,自动识别障碍物
已有 CAD 图纸或 Inkscape 手绘地图?点击Load SVG按钮,选择你的.svg文件即可,核心解析逻辑在 omgtools/gui/svg_reader.py(SVGReader 类,支持 line、polyline、rect、circle 四种基础图形)。
导入时 GUI 会依次弹出两个问题:
- 是否转换为 GCode?回答 yes 直接把 SVG 转成
.nc加工文件;回答 no 则作为规划环境使用 - 1 米对应多少像素?再输入横向、纵向网格数(如
30,30),GUI 会把像素坐标自动换算成米
项目自带 3 个示例地图,官方推荐参数可以直接抄:
| SVG 文件 | 像素/米 | 网格数 |
|---|---|---|
| drawing.svg | 25 | 30,30 |
| maze_small.svg | 5 | 30,30 |
| maze_big.svg | 2 | 100,100 |
如果第 1 个问题回答 yes,SVG 中的路径会被转成带朝向箭头的 GCode 轨迹,效果类似下图的赛道轨迹生成:
🖱️ 第2步:鼠标布置障碍与起终点
SVG 导入的障碍物是静止的,但你可以继续手动添加运动障碍物来模拟动态场景:
- 选择 Circle 或 Rectangle,填好尺寸
- 填入 x/y 速度(如
0.2, -0.1),需要碰撞反弹就勾选 Bounce - 左键单击网格交点放置,方向箭头可微调位置
随后右键点两次确定起点和终点,点Ready关闭 GUI 生成环境对象(源码:build_environment 方法)。记得勾选 Save,环境会以当前脚本同名.pickle文件保存下来:
⚡ 第3步:一键仿真,实时看轨迹
GUI 只负责"出题",真正跑规划的是 vast_environment_example1.py,流程分四步:
gui.get_environment()取出环境对象,get_clicked_positions()取出起终点- A* 全局规划器在网格上先找一条粗路径作为走廊
- SchedulerProblem 沿走廊做多帧滚动优化,输出满足速度/加速度约束的平滑轨迹
Simulator.run()实时绘制场景动画与速度曲线
运行方式:python vast_environment_example1.py打开 GUI 后,点Load选择同目录下的 vast_environment_example1.pickle,再点Ready,仿真窗口随即弹出:
新手常见坑与实用技巧
- SVG 解析有限制:目前仅支持 line / polyline / rect / circle 组成的图(见 vast_environment_example1.py 注释),复杂路径建议先简化
- 大迷宫跑得慢:maze_big 建议调高车辆速度上限(示例中
vmax为 1.2 m/s),可选配 ma57 线性求解器加速 - 导出 GIF 动画:
save_movie('scene', format='gif')需要额外安装 imagemagick - 安装:
pip install omg-tools(依赖 numpy / scipy / matplotlib),GUI 需要系统已装 tkinter(Debian/Ubuntu:sudo apt install python3-tk)
📁 延伸阅读:vast_environment_example_maze.py 展示了纯迷宫场景的完整配置,schedulerproblem.py 是多帧滚动优化的核心实现。
【免费下载链接】omg-toolsOptimal Motion Generation-tools: motion planning made easy项目地址: https://gitcode.com/gh_mirrors/om/omg-tools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考