news 2026/8/22 13:30:01

图形化设计运动规划环境:OMG-tools GUI从SVG地图导入到一键仿真3步搞定

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图形化设计运动规划环境:OMG-tools GUI从SVG地图导入到一键仿真3步搞定

图形化设计运动规划环境: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 会依次弹出两个问题:

  1. 是否转换为 GCode?回答 yes 直接把 SVG 转成.nc加工文件;回答 no 则作为规划环境使用
  2. 1 米对应多少像素?再输入横向、纵向网格数(如30,30),GUI 会把像素坐标自动换算成米

项目自带 3 个示例地图,官方推荐参数可以直接抄:

SVG 文件像素/米网格数
drawing.svg2530,30
maze_small.svg530,30
maze_big.svg2100,100

如果第 1 个问题回答 yes,SVG 中的路径会被转成带朝向箭头的 GCode 轨迹,效果类似下图的赛道轨迹生成:

🖱️ 第2步:鼠标布置障碍与起终点

SVG 导入的障碍物是静止的,但你可以继续手动添加运动障碍物来模拟动态场景:

  1. 选择 Circle 或 Rectangle,填好尺寸
  2. 填入 x/y 速度(如0.2, -0.1),需要碰撞反弹就勾选 Bounce
  3. 左键单击网格交点放置,方向箭头可微调位置

随后右键点两次确定起点和终点,点Ready关闭 GUI 生成环境对象(源码:build_environment 方法)。记得勾选 Save,环境会以当前脚本同名.pickle文件保存下来:

⚡ 第3步:一键仿真,实时看轨迹

GUI 只负责"出题",真正跑规划的是 vast_environment_example1.py,流程分四步:

  1. gui.get_environment()取出环境对象,get_clicked_positions()取出起终点
  2. A* 全局规划器在网格上先找一条粗路径作为走廊
  3. SchedulerProblem 沿走廊做多帧滚动优化,输出满足速度/加速度约束的平滑轨迹
  4. 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 13:27:06

BDSup2Sub:位图字幕转换工具,一次搞定 SUP、VobSub、DVD-SUP 互转

BDSup2Sub:位图字幕转换工具,一次搞定 SUP、VobSub、DVD-SUP 互转 【免费下载链接】BDSup2Sub Blu-Ray/DVD subtitle editor 项目地址: https://gitcode.com/gh_mirrors/bd/BDSup2Sub 不同平台的字幕格式互不兼容,蓝光 SUP、DVD-SUP、…

作者头像 李华
网站建设 2026/8/22 13:25:32

如何用 DDrawCompat 修复老游戏黑屏与画面撕裂

如何用 DDrawCompat 修复老游戏黑屏与画面撕裂 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompat DDrawCo…

作者头像 李华
网站建设 2026/8/22 13:25:23

Win_ISO_Patching_Scripts 三步 ISO 补丁集成,生成最新安装镜像

Win_ISO_Patching_Scripts 三步 ISO 补丁集成,生成最新安装镜像 【免费下载链接】Win_ISO_Patching_Scripts Win_ISO_Patching_Scripts 项目地址: https://gitcode.com/gh_mirrors/wi/Win_ISO_Patching_Scripts 新装的 Windows 要逐个下载安装上百个累积更新…

作者头像 李华
网站建设 2026/8/22 13:25:21

使用 LLaMA-Factory 训练 MoE 模型:混合专家微调完整实战指南

使用 LLaMA-Factory 训练 MoE 模型:混合专家微调完整实战指南 【免费下载链接】LlamaFactory Unified Efficient Fine-Tuning of 100 LLMs & VLMs (ACL 2024) 项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory 显存是大模型微调的第一道坎…

作者头像 李华