软件集成ROS2(支持离线示教机械臂)逻辑记录

📅 2026/7/2 0:42:45
软件集成ROS2(支持离线示教机械臂)逻辑记录
一、整体架构总览三层结构Qt 前端交互层 → rosbridge通信中转 → ROS2 后台运算控制层我用的是windows的wsl2全程数据流拖拽生成目标位姿 → 网络转发 → 逆运动学 路径规划 避障 → 结果回传前端展示二、各模块详细职责Qt 前端运行在 Windows用户操作界面核心工作:人机交互加载 3D 仿真场景、机械臂模型支持鼠标拖拽机械臂末端做离线示教。生成并发送指令数据,拖拽后实时算出末端空间位姿坐标 姿态封装为 PoseStamped 消息通过 WebSocket 发给 rosbridge对应话题/bp/teach_target_pose。接收后端数据 界面展示:接收 /bp/preview_joint_states解析 6 轴关节角度界面展示IK 解算结果、实时驱动 3D 机械臂模型姿态变化接收 /bp/planned_trajectory解析运动轨迹界面标记规划路径、统计轨迹接收次数区分系统原生关节状态和 IK 预览数据做状态提示。简单概括:只做 “操作 发请求 显结果”不做任何复杂计算。rosbridge通信中间层跑在 ROS2 服务器 192.16.10.238核心工作Windows Qt 无法直接使用 ROS2 原生 DDS 通信它是协议 数据格式转换器一侧对接 Qt使用 WebSocket 协议端口 9090接收 Qt 传来的 JSON 格式数据格式转换把 JSON 转为 ROS2 标准消息通过 ROS2 DDS 发布对应话题反向转发把 ROS2 后端输出的话题数据转回 JSON通过 WebSocket 回传给 Qt。简单概括纯 “传话翻译”不参与计算、不处理业务逻辑。ROS2 后台核心运算层跑在 Ubuntu 22.04 ROS2 Humble由自定义业务节点 MoveIt2 组合而成整条链路的计算核心订阅话题监听/bp/teach_target_pose拿到前端发来的机械臂末端目标位姿。逆运动学 IK 解算根据末端位姿反推机械臂每个关节的角度。碰撞检测 路径规划 避障结合场景里的设备外壳、摇臂、转台等障碍物用 MoveIt2 算法算出整条安全运动轨迹。发布结果话题发布 /bp/preview_joint_statesIK 算出的关节角度供前端预览姿态发布 /bp/planned_trajectory完整运动轨迹数据供前端展示路径。简单概括接收请求、做 IK 解算、避障、路径规划把计算结果发回前端。三、正常完整数据流闭环用户拖拽 Qt 里的机械臂末端 → 前端生成目标位姿 → 发 /bp/teach_target_poserosbridge 转协议 格式 → ROS2 后台收到位姿数据后台执行IK 解算 → 碰撞 / 避障检测 → 路径规划后台主动发布两个结果话题/bp/preview_joint_states关节角/bp/planned_trajectory运动轨迹rosbridge 再次转译数据 → 回传给 Qt 前端前端解析数据更新 3D 模型、界面状态、计数流程走完。