MoveIt Setup Assistant配置
文章目录Ubuntu 24.04 ROS 2 Jazzy 下使用 MoveIt Setup Assistant 配置机械臂1. MSA 是什么2. 前置环境3. Ubuntu 24.04 注意点Wayland 问题4. MSA 配置整体流程5. Start加载机器人模型6. Self-Collisions生成自碰撞矩阵7. Virtual Joints配置虚拟关节8. Planning Groups配置规划组9. Kinematics配置 IK 解算器10. Robot Poses配置命名姿态11. End Effectors 和 Passive Joints12. ROS 2 Controllers配置 ros2_control 控制器13. MoveIt Controllers配置 MoveIt 到控制器的映射14. Configuration Files生成配置包15. MoveIt 配置包启动后的数据流16. 常见问题和排查16.1 MSA 打不开或 3D 窗口黑屏16.2 RViz 中没有机器人模型16.3 RViz 有模型但不能规划16.4 能规划但不能执行16.5 pose 目标失败但 joint/name 成功16.6 修改 kinematics.yaml 后没有变化17. 配置时的关键一致性18. 总结Ubuntu 24.04 ROS 2 Jazzy 下使用 MoveIt Setup Assistant 配置机械臂本文记录一个机械臂 MoveIt 2 配置包的生成流程重点放在 MoveIt Setup AssistantMSA的概念、配置步骤和常见注意点。文中不展开真实 URDF 内容只说明配置思路。1. MSA 是什么MoveIt Setup Assistant简称 MSA是 MoveIt 官方提供的图形化配置工具。它的作用不是建模也不是写控制器而是根据已有的机器人模型生成 MoveIt 所需的配置包。可以把流程理解成URDF / Xacro 机器人模型 ↓ MoveIt Setup Assistant ↓ 生成 *_moveit_config 配置包 ↓ move_group 读取配置 ↓ RViz / API / 测试节点可以进行规划与执行MSA 主要生成或辅助生成这些内容配置文件作用*.srdfMoveIt 语义描述例如规划组、虚拟关节、命名姿态、自碰撞矩阵kinematics.yaml指定 IK 解算器例如 KDL、TRAC-IK、BioIKjoint_limits.yaml关节速度、加速度、位置限制ompl_planning.yamlOMPL 规划器配置moveit_controllers.yaml告诉 MoveIt 轨迹应该发给哪个控制器ros2_controllers.yamlros2_control 控制器配置demo.launch.py启动 move_group、RViz、robot_state_publisher 等节点2. 前置环境本文环境Ubuntu 24.04 ROS 2 Jazzy MoveIt 2安装 MoveIt 和 MSAsudoaptupdatesudoaptinstallros-jazzy-moveit ros-jazzy-moveit-setup-assistant加载 ROS 环境source/opt/ros/jazzy/setup.bash启动 MSAros2 run moveit_setup_assistant moveit_setup_assistant如果模型是 Xacro也可以先生成临时 URDF 再导入 MSAros2 run xacro xacro path/to/robot.urdf.xacro/tmp/robot.urdf然后在 MSA 中选择/tmp/robot.urdf。3. Ubuntu 24.04 注意点Wayland 问题Ubuntu 24.04 默认可能使用 Wayland而 MSA 内部嵌入了 RViz 的 3D 渲染窗口。在 Wayland 下有时会出现模型加载后 3D 窗口无法创建的问题。常见报错包括RenderingAPIException: Invalid parentWindowHandle Unable to create the rendering window after 100 tries检查当前会话类型echo$XDG_SESSION_TYPE如果输出是wayland建议切换到 Xorg注销当前 Ubuntu 桌面会话。回到登录界面后先选择用户名。点击右下角齿轮图标。选择Ubuntu on Xorg。输入密码登录。重新打开终端再启动 MSA。切换后再次检查echo$XDG_SESSION_TYPE如果输出x11一般就可以正常打开 MSA 的 3D 预览窗口。4. MSA 配置整体流程MSA 左侧通常会有这些步骤Start Self-Collisions Virtual Joints Planning Groups Robot Poses End Effectors Passive Joints ROS 2 Controllers MoveIt Controllers Perception Author Information Configuration Files一个基础机械臂项目通常至少需要完成加载模型 ↓ 生成自碰撞矩阵 ↓ 配置虚拟关节 ↓ 配置规划组 ↓ 配置命名姿态 ↓ 配置 IK 解算器 ↓ 配置控制器 ↓ 生成 moveit_config 包5. Start加载机器人模型在Start页面中选择Create New MoveIt Configuration Package然后加载机器人 URDF。这里需要注意检查项说明Link / Joint 是否完整MSA 需要从 URDF 中解析运动链Mesh 路径是否正确推荐使用package://路径Joint limit 是否合理尤其是 prismatic joint 的上下限根 link 是否明确后面配置 Virtual Joint 时会用到3D 预览是否正常如果不显示优先检查 Wayland / XorgMSA 只是读取模型不负责修复模型。如果模型本身 link、joint、mesh 路径有问题后续 MoveIt 配置也会出问题。6. Self-Collisions生成自碰撞矩阵自碰撞矩阵用于告诉 MoveIt哪些 link pair 需要检查碰撞哪些可以忽略。操作Self-Collisions ↓ Generate Collision Matrix ↓ 保持默认采样数即可生成后会写入 SRDF。作用是减少不必要的碰撞检测 避免相邻 link 因模型接触被误判 提高规划效率注意点注意点说明不要随意全禁用碰撞否则避障规划失去意义如果模型尺寸改了需要重新生成自碰撞矩阵如果 collision mesh 太粗糙可能导致误判碰撞7. Virtual Joints配置虚拟关节虚拟关节用于把机器人根 link 连接到世界坐标系。固定底座机械臂通常配置为参数示例Virtual Joint Namevirtual_jointParent FrameworldChild Linkbase_linkTypefixed含义是world ↓ fixed virtual joint base_link ↓ 机械臂运动链如果是移动机器人底盘虚拟关节可能会使用planar或floating。但固定机械臂一般用fixed。8. Planning Groups配置规划组规划组是 MSA 中最关键的一步。MoveIt 不会默认知道“我要规划哪几个关节”。规划组就是告诉 MoveIt这一组 joint / link 构成一条可规划的机械臂本项目中的规划组可以理解为参数示例Group NameikBase Linkbase_linkTip Linklink5Kinematic Solverkdl_kinematics_plugin/KDLKinematicsPlugin这表示MoveIt 对 base_link 到 link5 这条链进行运动规划为什么规划组名字叫ik因为后续 API 测试节点中使用了req.group_nameik所以这里的名字必须和代码、RViz MotionPlanning 插件中的 Planning Group 保持一致。如果 MSA 中规划组叫arm代码里却写ikMoveIt 会找不到规划组规划请求会失败。9. Kinematics配置 IK 解算器MSA 会根据 Planning Group 生成kinematics.yaml。默认常用 KDLik:kinematics_solver:kdl_kinematics_plugin/KDLKinematicsPluginkinematics_solver_search_resolution:0.005kinematics_solver_timeout:0.05含义字段说明ik规划组名称kinematics_solver当前规划组使用的 IK 插件kinematics_solver_timeout单次 IK 求解超时时间kinematics_solver_search_resolution数值搜索分辨率如果要换成 TRAC-IKik:kinematics_solver:trac_ik_kinematics_plugin/TRAC_IKKinematicsPluginkinematics_solver_timeout:0.05solve_type:Speedepsilon:0.00001注意kinematics.yaml 是 move_group 启动时加载的所以修改 IK 插件后必须colcon buildsourceinstall/setup.bash ros2 launch four_dof_arm_moveit_config demo.launch.py只改文件但不重启move_group新的 IK 配置不会生效。10. Robot Poses配置命名姿态命名姿态是给一组关节值起名字。常见姿态姿态名作用home初始位置通常所有关节为 0pose_1测试规划用的目标姿态命名姿态会写入 SRDF。后续可以在 RViz 中直接选择也可以在代码里等价使用一组关节值。概念上named target ↓ 一组 joint values ↓ MoveIt 规划到该关节目标注意命名姿态不是末端 pose。它本质上仍然是关节空间目标。11. End Effectors 和 Passive Joints如果只是单臂规划没有夹爪或工具可以不配置 End Effectors。如果有夹爪可以单独建一个 gripper planning group再在 End Effectors 中把它挂到机械臂末端 link 上。Passive Joints 用于声明“不主动规划但会被动运动”的关节。一般简单机械臂项目中可以不配置。12. ROS 2 Controllers配置 ros2_control 控制器MoveIt 规划出来的是轨迹但真正执行轨迹需要控制器。在 ROS 2 中常见执行链路是MoveIt RobotTrajectory ↓ JointTrajectoryController ↓ ros2_control ↓ 真实硬件 / 仿真硬件 / mock hardware控制器配置中需要保证项目要求控制器类型通常是joint_trajectory_controller/JointTrajectoryController控制器关节列表必须包含规划组里的所有运动关节joint 顺序建议和规划组、代码中的关节顺序一致command interface常用positionstate interface至少需要position示例结构controller_manager:ros__parameters:update_rate:100joint_state_broadcaster:type:joint_state_broadcaster/JointStateBroadcasterik_controller:type:joint_trajectory_controller/JointTrajectoryControllerik_controller:ros__parameters:joints:-joint1-joint2-joint3-joint4-joint5command_interfaces:-positionstate_interfaces:-position-velocity13. MoveIt Controllers配置 MoveIt 到控制器的映射moveit_controllers.yaml用于告诉move_group规划成功后把轨迹发给哪个 FollowJointTrajectory action示例moveit_controller_manager:moveit_simple_controller_manager/MoveItSimpleControllerManagermoveit_simple_controller_manager:controller_names:-ik_controllerik_controller:type:FollowJointTrajectoryaction_ns:follow_joint_trajectorydefault:truejoints:-joint1-joint2-joint3-joint4-joint5这里最容易出错的是控制器名字。必须保证这些地方一致ros2_controllers.yaml 中的控制器名 moveit_controllers.yaml 中的控制器名 启动文件中加载的控制器名例如都叫ik_controller如果名字不一致MoveIt 可能能规划成功但执行阶段失败。14. Configuration Files生成配置包最后在 MSA 的Configuration Files页面选择输出目录。推荐命名robot_name_moveit_config例如four_dof_arm_moveit_config放到工作空间~/moveit_ws/src/four_dof_arm_moveit_config点击Generate Package生成后编译cd~/moveit_ws colcon buildsourceinstall/setup.bash启动 demoros2 launch four_dof_arm_moveit_config demo.launch.py如果 RViz 中能看到机器人模型并且 MotionPlanning 面板可以选择规划组说明配置包基本可用。15. MoveIt 配置包启动后的数据流配置包生成后运行demo.launch.py时整体数据流是URDF / SRDF / YAML ↓ robot_state_publisher 发布 TF ↓ move_group 加载 RobotModel、PlanningScene、IK、OMPL、Controller ↓ RViz 或 API 发送规划请求 ↓ 如果是 pose 目标先调用 IK ↓ OMPL 搜索可行路径 ↓ 生成 RobotTrajectory ↓ MoveItSimpleControllerManager 找到 ik_controller ↓ JointTrajectoryController 执行轨迹 ↓ joint_state_broadcaster 发布 /joint_states ↓ RViz 根据 /joint_states TF 更新显示简化理解模型配置解决“机器人是什么” 规划组解决“规划哪几个关节” IK 配置解决“pose 怎么变成 joint” OMPL 解决“怎么从起点走到终点” controller 配置解决“轨迹发给谁执行”16. 常见问题和排查16.1 MSA 打不开或 3D 窗口黑屏优先检查echo$XDG_SESSION_TYPEUbuntu 24.04 下建议使用Ubuntu on Xorg不要优先使用 Wayland。16.2 RViz 中没有机器人模型检查ros2 topicecho/robot_description ros2 topicecho/joint_states ros2 run tf2_tools view_frames常见原因URDF 没有正确加载 robot_state_publisher 没启动 joint_state_broadcaster 没启动 TF 树断开 fixed frame 选错16.3 RViz 有模型但不能规划检查Planning Group 是否选对 SRDF 中是否有对应 group kinematics.yaml 中 group 名是否一致 joint_limits 是否合理 起点是否碰撞 目标是否超出关节范围16.4 能规划但不能执行检查ros2 control list_controllers ros2 action list|grepfollow_joint_trajectory重点看JointTrajectoryController 是否 active moveit_controllers.yaml 控制器名是否正确 控制器 action namespace 是否正确 关节列表是否一致16.5 pose 目标失败但 joint/name 成功这通常说明运动规划链路是通的 控制器执行链路是通的 问题集中在 IK 求解或目标位姿可达性排查顺序确认 tip link 是否正确 确认 pose 的 frame_id 是否正确 确认目标是否超出工作空间 确认姿态约束是否过紧 换不同 seed 测试 对比 KDL / TRAC-IK / BioIK16.6 修改 kinematics.yaml 后没有变化原因通常是move_group没重启。正确流程colcon buildsourceinstall/setup.bash ros2 launch four_dof_arm_moveit_config demo.launch.pyMoveIt 的 IK 插件是在move_group启动时加载的不是每次请求动态读取。17. 配置时的关键一致性MoveIt 配置最怕“名字不一致”。需要重点检查名称必须一致的位置Planning GroupSRDF、kinematics.yaml、代码中的group_name、RViz 选择项Base LinkURDF 根链路、Virtual Joint、Planning GroupTip LinkPlanning Group、IK 请求中的ik_link_nameJoint NamesURDF、SRDF、controller yaml、测试代码Controller Nameros2_controllers.yaml、moveit_controllers.yaml、启动文件Frame IDRViz Fixed Frame、pose 请求、TF 树本项目中需要特别保持一致的是规划组ik 规划链base_link - link5 控制器ik_controller 目标末端link5 参考坐标系base_link18. 总结MSA 的本质是把一个已有机器人模型转化为 MoveIt 能使用的配置包。完整配置链路可以总结为URDF / Xacro ↓ MSA 加载模型 ↓ 生成 SRDF、规划组、自碰撞矩阵、命名姿态 ↓ 配置 IK、OMPL、joint limits ↓ 配置 ros2_control 和 MoveIt controller ↓ 启动 demo.launch.py ↓ RViz / API 调用 move_group 进行规划执行MSA 能解决的是 MoveIt 配置问题但不替代 URDF 建模也不替代控制器调试。在 Ubuntu 24.04 上最值得提前注意的是 Wayland 图形环境问题在 MoveIt 配置本身最值得反复检查的是规划组、link、joint、controller 名称的一致性。

相关新闻

分库分表架构下数据库连接数优化实战

分库分表架构下数据库连接数优化实战

1. 分库分表架构下的连接数爆炸问题 去年双十一大促前,我们的订单系统突然出现数据库连接耗尽告警。当时系统采用Sharding-JDBC进行分库,共部署了8个MySQL实例,每个实例16个库。随着机器扩容到200台,单个MySQL实例的连接数直接突破…

2026/10/15 9:09:58 阅读更多 →
AI教材生成如何降低查重率:技术策略与实践

AI教材生成如何降低查重率:技术策略与实践

1. AI教材生成的核心挑战与突围方向教育行业正在经历一场由AI驱动的变革浪潮,教材编写这个传统上需要教育专家耗时数月的工作,现在通过智能算法可以在几小时内完成初稿。但随之而来的问题是:当所有人都开始使用类似的AI工具生成教材时&#x…

2026/10/17 12:12:40 阅读更多 →
三星 Galaxy Z Fold 8 Ultra 与 Z Fold 7 对比:谁更耐用、续航久、拍摄强?

三星 Galaxy Z Fold 8 Ultra 与 Z Fold 7 对比:谁更耐用、续航久、拍摄强?

三星 Galaxy Z Fold 8 Ultra 登场!与 Z Fold 7 对比,谁更值得买?火热的折叠屏手机旺季已至,三星终于携其最新款 Galaxy Z Fold 8 Ultra、Z Fold 8 和 Z Flip 8 加入战局。如果你正打算升级手机,后两款机型有不少值得考…

2026/10/17 9:51:08 阅读更多 →

最新新闻

C语言第一题:从输入输出到编译运行的完整工程实践

C语言第一题:从输入输出到编译运行的完整工程实践

简介:本资源是王道训练营C方向基础编程训练题集(第1题),面向C/C初学者、考研备考学生及算法入门学习者,聚焦语法基础、逻辑思维与经典题型实战。内容涵盖20道C语言核心练习题(如分段函数计算、水仙花数判定…

2026/10/17 22:06:08 阅读更多 →
操作系统实验课实战指南:进程调度、内存管理与文件系统核心实现

操作系统实验课实战指南:进程调度、内存管理与文件系统核心实现

1. 操作系统实验课到底在折腾什么1.1 从“一脸懵”到“有点数”的认知转变操作系统实验课,很多人第一次打开实验指导书的时候,脑子里就三个字:看不懂。进程调度、内存管理、文件系统、信号量、死锁检测,这些词单独拆开每个字都认识…

2026/10/17 22:06:08 阅读更多 →
3ds Max森林插件Forest Pack 7散布引擎原理与性能优化实战

3ds Max森林插件Forest Pack 7散布引擎原理与性能优化实战

简介:这份PDF是3ds Max森林树木植物散布插件Forest Pack 7的官方帮助文档,面向建筑可视化、游戏开发与影视特效领域的三维设计师,尤其适合需要搭建大规模自然或城市景观的中高级用户。Forest Pack作为最流行的3ds Max植物散布插件&#xff0c…

2026/10/17 22:05:06 阅读更多 →
为什么关键词工具总是慢两周?new-term-radar:AI新词雷达完全指南

为什么关键词工具总是慢两周?new-term-radar:AI新词雷达完全指南

【免费下载链接】new-term-radar Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them. 项目地址: https://gitcode.com/gh_mirrors/ne/new-term-radar 点击查…

2026/10/17 22:05:06 阅读更多 →
移动端调试工具实战:vConsole、Eruda与Spy-Debugger选型指南

移动端调试工具实战:vConsole、Eruda与Spy-Debugger选型指南

做H5/WAP开发的人应该都有过这种体验:桌面上把页面调得妥妥当当,一扔到手机里就“原形毕露”,报错信息看不到、接口状态不知道、元素位置对不上。PC端一个F12能解决的事,到移动端要同时面对浏览器兼容、真机差异、WebView内核差异…

2026/10/17 22:05:06 阅读更多 →
Ajax请求中hide与show时序控制:浏览器渲染机制与四种解决方案

Ajax请求中hide与show时序控制:浏览器渲染机制与四种解决方案

1. 从一个“按钮点下去没反应”的经典场景说起做前端开发的人,几乎都遇到过这样一种情况:用户点了一个按钮,你希望先把某个区域隐藏起来,等数据从服务端回来之后再显示新的内容。逻辑上看起来天衣无缝——先hide(),再发…

2026/10/17 22:05:06 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →