第八课:机器人操作系统与软件架构(工业机器人实操版)
目标:用 ROS 2 + ros2_control + MoveIt 2 搭出一条可用链路:
-
上位机规划轨迹 → 下发轨迹 → 工业机器人执行 → 反馈关节状态 → 可视化/调试 → 集成夹爪与工位 I/O
-
先跑通“最小闭环”,再逐步加视觉、力控、节拍优化。
8.1 ROS 概述(结合工业机器人你必须理解的“系统拼装方式”)
ROS 是什么?在工业机器人里解决什么问题?
-
ROS 更像“机器人软件中间件 + 工具链 + 生态”。在工业机器人项目里,它主要解决:模块化协作,复用与生态,工程化工具,跨硬件支持。
8.2 ROS 2 开发环境搭建(工业现场建议的“稳态组合”)
版本建议
-
新项目优先 ROS 2;Jazzy Jalisco 是 LTS,并在 ROS 2 官方列表里标注 EOL 到 May 2029。
-
ROS 1 Noetic 已确认 EOL 为 2025-05-31(存量维护可用,别再新起炉灶)。
工业现场电脑与网络建议(非常实操)
-
建议两张网卡:1) 机器人控制器专网(Robot LAN);2) 工厂网(Office/SCADA)。
-
时间同步:多机系统一定要保证时间一致,否则 TF、传感器融合、轨迹执行很容易“看起来没错但就是不稳”。
8.3 工业机器人软件架构:从“能动”到“能干活”的分层模板
五层结构(最清晰、最抗维护)
-
硬件层:机器人本体、控制柜、夹爪、相机、力传感器、PLC IO。
-
驱动层:ROS 驱动(把硬件变成 ROS 话题/服务)。
-
控制层(ros2_control):标准化硬件接口 + 控制器(轨迹控制、状态发布)。
-
规划层(MoveIt 2):碰撞检测、逆解、路径规划、轨迹时间参数化。
-
任务层:状态机/调度(取放、工位切换、异常恢复、节拍优化)。
8.4 工业机器人实操主线:ROS 2 + ros2_control + MoveIt 2 跑通一条“真实执行链路”
实操:搭建一个工业机器人工作站(Pick & Place 示例)
Step 0:确认你的机器人“能被外部控制”
-
工业机器人通常有三类接入方式:厂商提供 ROS 2 驱动(最省心)、ROS-Industrial 生态的驱动/接口、自写硬件接口(ros2_control hardware interface)。
Step 1:把“机器人模型”准备好(URDF/SRDF 是一切的底座)
-
你需要两个东西:1) URDF(几何+关节+连杆+惯量);2) SRDF(语义)。
Step 2:用 MoveIt Setup Assistant 生成 MoveIt 配置包
-
你在 Setup Assistant 里至少要完成:规划组(manipulator)、末端执行器(gripper)、虚拟关节(world -> base_link)、碰撞矩阵。
Step 3:搭 ros2_control(让 MoveIt 有“标准执行通道”)
-
ros2_control 是 ROS 2 的“实时控制框架”,把硬件控制统一成标准接口。
-
“最小可用”控制配置(示例 YAML 思路):
controller_manager:
ros__parameters:
update_rate: 250
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
arm_controller:
type: joint_trajectory_controller/JointTrajectoryController
arm_controller:
ros__parameters:
joints:
- joint_1
- joint_2
- joint_3
- joint_4
- joint_5
- joint_6
command_interfaces:
- position
state_interfaces:
- position
- velocity
Step 4:先在仿真里跑通(强烈建议)
-
验证 URDF / SRDF / 控制器 / MoveIt 配置是否正确。
-
仿真可以用 Gazebo,但注意 Gazebo Classic(Gazebo 11)在 2025-01-29 之后 EOL,官方建议迁移到新 Gazebo。
Step 5:接真机(以 UR 的流程举例,方便你理解“真实链路长什么样”)
-
启动 ROS 驱动节点,控制器状态可以用ros2 control list_controllers查看。
-
启动 MoveIt 2,规划轨迹 → 执行 → 看机器人运动与反馈是否一致。
Step 6:把“工业工位”加进来:夹爪、治具、传送带、PLC I/O
-
夹爪接入:方式A(夹爪自带驱动),方式B(PLC统一控制)。
-
工位碰撞体:MoveIt 的规划管线需要 RobotModel + PlanningScene。
Step 7:做一个完整任务(Pick & Place 流程模板)
-
1) 回零/安全位(Home) 2) 等待上料信号(PLC/视觉/传送带到位) …
Step 8:调试与排障(最常见 10 个问题)
-
调试步骤:从 ROS 状态、TF 检查到控制器设置。