轮臂机器人-运动控制软件架构方案学习笔记
基于图片
outputs/research_review_v1_0/assets/motion_control_software_architecture_image_v1.png提取、补充与扩展,并新增轮臂机器人增强版架构图。当前整理日期:2026-06-14。

1. 图中内容提取
图片标题为"运动控制软件架构方案"。它把机器人运动控制软件拆成上下分层、左右闭环的体系:
text
工厂/任务接口
MES / WMS / Open-RMF / VDA5050 / 工单系统
↓↑
系统主干
ROS 2 / DDS / 生命周期 / 参数 / 日志
↓↑
运动规划
Nav2 底盘导航 / MoveIt 2 机械臂规划 / 视觉伺服 / 抓取规划
↓↑
控制抽象
ros2_control / 控制器管理 / 资源管理 / 硬件接口 / 传动与执行模型
↓↑
实时执行
RT 控制器 / EtherCAT / CAN-FD / MCU / PLC / 安全 I/O
↓↑
安全边界
急停 / 禁区 / 速度-力-空间约束 / 人工确认
左右两个侧翼:
- 仿真验证:Gazebo 做系统联调,MuJoCo 做接触控制,Isaac Sim/Lab 做视觉与并行仿真。
- 数据闭环:RViz、Foxglove、PlotJuggler、rosbag、指标脚本、失败案例库。
底部原则:
规划与控制分层,实时安全链路独立,大模型不进入关节级闭环。
这张图的核心判断很正确:机器人系统不是一个"大模型/大脑"直接驱动电机的链条,而是"任务编排、状态感知、规划、控制、实时执行、安全保护、数据复盘"共同组成的工程系统。
2. 总体架构理解
2.1 为什么要分层
机器人运动控制有三类时间尺度:
| 层级 | 典型周期 | 主要职责 | 失败代价 |
|---|---|---|---|
| 工厂任务层 | 秒级到分钟级 | 接单、调度、任务分配、与 MES/WMS/工单系统交互 | 任务延迟、资源冲突 |
| 机器人系统层 | 10 ms 到秒级 | 节点通信、状态管理、参数、日志、行为树、任务状态机 | 状态不一致、恢复困难 |
| 规划层 | 10 ms 到秒级 | 全局路径、局部避障、机械臂轨迹、抓取策略、视觉伺服 | 绕路、卡死、误抓 |
| 控制抽象层 | 1 ms 到 10 ms | 控制器切换、关节/底盘接口、轨迹跟踪、资源仲裁 | 轨迹跳变、接口冲突 |
| 实时执行层 | 100 us 到 1 ms 级 | 伺服环、总线通信、驱动器同步、安全 I/O | 碰撞、伤人、设备损坏 |
| 安全层 | 独立硬件链路 | 急停、安全门、限速、限力、区域限制、确认复位 | 人身安全事故 |
分层的关键价值是"变化隔离":工厂调度改了,不应该改电机控制;视觉算法换了,不应该破坏安全链路;大模型增加语义能力,不应该获得直接写关节力矩的权限。
2.2 推荐的工程边界
- ROS 2 适合做机器人中上层软件骨架,但不等于实时操作系统。关节级伺服、驱动器同步、安全停机应放在 RT 控制器、PLC、安全控制器、驱动器或 MCU 中。
- DDS 适合分布式通信和 QoS 策略,但无线网络、跨网段和高带宽图像流仍要单独设计:域 ID、发现机制、QoS、压缩、录包策略都要纳入架构。
- 大模型适合做任务理解、异常解释、日志总结、操作辅助、代码/参数建议,不适合直接进入 1 kHz 关节级闭环。
- 仿真不是"演示环境",而是设计、回归测试、故障复现和数据生成环境。
2.3 作为轮臂机器人架构的适配性评估
原图作为轮臂机器人的基础架构是合理的,因为它已经覆盖了任务接口、ROS 2 主干、Nav2、MoveIt 2、ros2_control、实时执行、安全、仿真和数据闭环。但它还不够"轮臂专用":轮臂机器人不是简单的"AMR + 机械臂",核心难点在底盘和机械臂的耦合。
原图合理之处:
- Nav2 负责底盘导航、避障、到点。
- MoveIt 2 负责机械臂规划、碰撞检查、轨迹生成。
- ros2_control 可以统一底盘、机械臂、升降轴、夹爪和传感器接口。
- RT 控制器、MCU、PLC、驱动器负责底层实时执行。
- 安全 I/O、急停、禁区、限速区独立于 ROS 2。
- Gazebo / Isaac / MuJoCo 支撑仿真验证。
- rosbag / Foxglove / PlotJuggler 支撑数据闭环。
主要缺口:
| 缺口 | 为什么对轮臂机器人关键 |
|---|---|
| 底盘-机械臂协同层 | 底盘停在哪里、机械臂怎么伸、是否稳定,不能只靠 Nav2 和 MoveIt 各自独立解决 |
| 作业位姿选择 | 抓取成功率高度依赖底盘停靠点、机械臂可达性、视野、障碍物和定位误差 |
| 精定位 / 对接 | Nav2 到点精度通常不足以支撑抓取、插接、开门、按按钮等任务 |
| 状态估计与标定 | 需要统一 map、odom、base_link、arm_base、camera、tool0 等坐标链 |
| 稳定性与负载约束 | 机械臂伸展、升降柱高度、负载质量、坡度和底盘驻车都会影响安全 |
| 接触控制 / 力控 | 插拔、开门、擦拭、按钮、装配等任务需要阻抗/导纳控制和退出策略 |
| 行为树与失败恢复 | 真实任务包含等待、重试、取消、暂停、人工确认、异常升级,不是单次规划执行 |
因此增强版架构新增了"任务执行层""状态估计与标定层""轮臂协同层",并把"接触规划、精定位、稳定性与负载、安全防倾覆、失败库"显式纳入架构。这样它更适合真实轮臂机器人产品,而不是只适合演示型移动操作平台。
推荐采用三阶段演进:
| 阶段 | 架构模式 | 适合场景 |
|---|---|---|
| 解耦式 | Nav2 到点,底盘停稳,MoveIt 执行机械臂动作 | 固定工位、搬箱、上下料、低风险任务 |
| 松耦合 | Nav2 粗定位,视觉/标签/激光精定位,机械臂视觉伺服补偿 | 货架拣选、机台操作、门/按钮/抽屉 |
| 强耦合 | 底盘、机械臂、升降轴作为整体做全身规划和协调控制 | 移动中操作、动态目标、狭窄空间、高灵活任务 |
工程上建议先落地解耦式或松耦合式。强耦合全身规划价值高,但对建模、控制、安全和测试要求明显更高。
3. 各层详细说明
3.1 工厂/任务接口层
图中写的是:MES / WMS / Open-RMF / VDA5050 / 工单系统。
这一层回答"机器人为什么动、去哪里、搬什么、什么时候动、和谁协同"。
MES / WMS / 工单系统
- MES 管制造过程:工序、设备状态、生产节拍、质量追溯。
- WMS 管仓储物流:库位、库存、入库、出库、拣选、补货。
- 工单系统管任务生命周期:创建、派发、暂停、取消、确认、异常处理。
机器人接入时通常不要让 MES/WMS 直接控制机器人运动,而应经过任务网关或调度层转换成机器人可执行的任务,例如:
yaml
task:
type: transport
pickup: station_A
dropoff: station_B
payload: tray_12
constraints:
latest_finish: 2026-06-14T10:30:00+08:00
priority: high
Open-RMF
Open-RMF 是面向多机器人、多厂商、多基础设施互操作的开源框架。它强调的不只是"车队管理",还包括门、电梯、楼宇系统等基础设施资源协调。适合医院、机场、园区、仓储、工厂等多机器人场景。
适用位置:
- 多车队任务分配与交通协同。
- 多品牌 AMR/服务机器人接入。
- 电梯、门禁、充电桩、站点等共享资源管理。
- 与厂内业务系统之间做调度中台。
局限:
- 需要为每类机器人编写 fleet adapter。
- 对实时底层控制无意替代。
- 适合"楼宇/园区/物流调度",不是机械臂关节控制框架。
VDA5050
VDA5050 是 AGV/AMR 与中央控制系统之间的通信标准,2026 年 GitHub 主分支标注为 Version 3.0.0。它的目标是让不同厂商移动机器人能被同一个上层调度系统下发订单、接收状态。
典型通信对象:
- Master Control / Fleet Manager:中央调度。
- AGV/AMR:车端控制系统。
- MQTT broker:常见传输中间件。
- 订单、节点、边、动作、状态、电池、错误码等消息。
适用位置:
- 多品牌 AMR 接入 WMS/MES。
- 物流任务抽象与中央调度。
- 车端导航仍由各厂家本体软件或 ROS 2/Nav2 执行。
局限:
- 它标准化的是任务和状态接口,不定义机器人内部控制栈。
- 复杂动作、特殊载具、异形环境仍会产生厂商扩展字段。
- 现场验收要重点测试版本兼容、错误码语义、恢复流程。
3.2 ROS 2 / DDS 系统主干层
图中写的是:ROS 2 / DDS / 生命周期 / 参数 / 日志。
这一层回答"机器人内部软件如何组织、通信、启动、配置、观测"。
ROS 2
ROS 2 是机器人软件的组件化骨架:节点、话题、服务、动作、参数、launch、包管理、消息定义、坐标变换、可视化等都围绕它展开。ROS 2 设计中把 DDS 作为底层通信能力之一,ROS on DDS 说明了使用 DDS/RTPS 的动机:分布式发现、发布订阅、QoS、标准化和多厂商实现。
在运动控制架构中,ROS 2 适合承载:
- 传感器数据流:相机、激光雷达、IMU、编码器摘要。
- 状态估计:里程计、定位、地图、TF。
- 规划与行为:Nav2、MoveIt 2、行为树、任务节点。
- 控制接口:ros2_control、轨迹 action、控制器切换。
- 调试运维:参数、日志、诊断、bag 录制。
不适合直接承载:
- 硬实时安全停机链路。
- 伺服驱动器内部电流环、速度环。
- 对丢包/延迟极敏感的裸力矩闭环,除非有 RT Linux、实时 executor、共享内存、严格 QoS 和完整测试。
DDS 与 QoS
DDS 的价值不只是"能发消息",而是能描述通信策略。常见 QoS 关注点:
- Reliability:传感器高频数据常用 best effort,任务/状态命令常用 reliable。
- Durability:地图、静态配置可用 transient local;实时控制流通常不需要旧数据。
- Deadline / Liveliness:用于检测周期性数据是否断流。
- History / Depth:控制内存与延迟,避免队列积压导致过期控制。
工程建议:
- 图像/点云与控制命令分域、分 QoS 策略。
- 机器人本体内部网络与工厂 IT 网络隔离,中间用网关桥接。
- 关键任务要用消息时间戳、序列号、超时与幂等机制。
生命周期、参数、日志
ROS 2 生命周期设计 适合工业机器人,因为它让节点具备明确状态:未配置、已配置、激活、失活、清理、关闭、错误处理。
推荐做法:
- 传感器节点、控制节点、规划节点都采用生命周期管理。
- 启动流程按依赖拓扑:硬件驱动 -> 状态估计 -> 地图/规划 -> 行为层 -> 任务接口。
- 参数分三类:出厂参数、现场参数、运行时参数。运行时可调参数必须有范围、单位、默认值和变更记录。
- 日志要能关联:任务 ID、机器人 ID、软件版本、地图版本、参数版本、bag 文件、异常码。
3.3 运动规划层
图中写的是:Nav2 底盘导航 / MoveIt 2 机械臂规划 / 视觉伺服 / 抓取规划。
这一层回答"从当前状态到目标状态怎么走"。
Nav2 底盘导航
Nav2 是 ROS 2 生态的主流移动机器人导航框架,文档中将导航概念拆成行为树、规划器、控制器、平滑器、恢复行为、代价地图、定位与 SLAM 等模块。
典型流水线:
text
任务目标 / Pose Goal
-> 行为树 BT Navigator
-> 全局规划 Planner Server
-> 路径平滑 Smoother Server
-> 局部控制 Controller Server
-> 速度命令 cmd_vel
-> 底盘控制器 / 驱动器
重点模块:
- 全局规划:A*、Smac Planner、路线图等。
- 局部控制:DWB、MPPI、Regulated Pure Pursuit 等。
- 代价地图:静态层、障碍层、膨胀层、keepout 区、speed limit 区。
- 行为树:导航、重规划、恢复、取消、失败处理。
- 定位:AMCL、SLAM Toolbox、VIO/LiDAR SLAM、融合里程计。
工程关注点:
- 地图不是只有一张图片,还应包含禁区、限速区、单行线、站点、充电点、门/电梯资源。
- 导航成功率很大程度取决于定位质量、底盘模型、障碍物感知延迟、局部控制器参数。
- AMR 项目要区分"交通调度路线"和"车端局部避障":上层给路径约束,下层保留安全避障权。
MoveIt 2 机械臂规划
MoveIt 2 是 ROS 2 的机械臂运动规划与操作平台,覆盖运动规划、操作、3D 感知、运动学、控制和导航。
典型流水线:
text
任务目标 / 抓取目标
-> Planning Scene / 碰撞环境
-> IK / 约束检查
-> Motion Planner / OMPL、Pilz、CHOMP、STOMP、cuMotion 等
-> Trajectory Processing / 时间参数化、速度加速度限制
-> FollowJointTrajectory
-> ros2_control JointTrajectoryController
重点模块:
- Robot Model:URDF/SRDF、关节限制、规划组、末端工具。
- Planning Scene:碰撞对象、占据体、附着物体。
- Kinematics:IKFast、KDL、TRAC-IK、PickNik/厂商插件。
- Planning Pipeline:规划器、约束采样、碰撞检测、轨迹后处理。
- MoveIt Task Constructor:复杂抓取/装配任务的阶段式规划。
工程关注点:
- MoveIt 规划出来的是"可行轨迹",不是最终安全保证。真实执行还要经过控制器限速、碰撞监控、力/扭矩限制、安全 PLC。
- 机械臂抓取需要把视觉标定、手眼标定、夹具 TCP、工装坐标、物体模型、碰撞体都纳入版本管理。
- MoveIt 适合规划和轨迹生成;高带宽力控、柔顺控制、打磨/插接等接触任务常需要更底层的阻抗/导纳控制器。
视觉伺服
视觉伺服把视觉误差转成运动修正,常见形式:
- IBVS:Image-Based Visual Servoing,直接用图像特征误差闭环。
- PBVS:Position-Based Visual Servoing,先估计目标 3D 位姿再闭环。
- Eye-in-hand:相机在机械臂末端。
- Eye-to-hand:相机固定在外部。
架构位置:
- 慢速视觉伺服可以放在 ROS 2 节点中生成小步位姿目标。
- 高频视觉/力混合控制应放在实时控制器或厂商控制器扩展中。
- 视觉结果必须携带时间戳和坐标系,避免"旧目标驱动新动作"。
抓取规划
抓取规划不是单一算法,而是感知、候选生成、可达性、碰撞、夹具控制、失败恢复的组合。
推荐拆解:
text
物体检测 / 分割
-> 位姿估计 / 点云补全
-> 抓取候选生成
-> IK 与碰撞过滤
-> 接近路径 / 退出路径
-> 夹具动作
-> 抓取确认
-> 失败重试 / 放弃 / 人工确认
常见失败源:
- 手眼标定误差。
- 物体反光、透明、遮挡。
- 夹具模型不准,碰撞体过于乐观。
- 目标位姿延迟或坐标系错误。
- 抓取后物体附着模型没有更新,导致后续轨迹碰撞判断错误。
3.4 轮臂协同层
轮臂协同层是增强版架构相对于原图最重要的补充。它位于状态估计/标定与运动规划之间,也可以理解为 Nav2、MoveIt 2、视觉伺服、抓取规划之上的"协调裁判"。它不直接替代 Nav2 或 MoveIt 2,而是决定这些模块如何组合。
轮臂协同层回答的问题:
- 底盘应该停在哪里,机械臂才最容易抓取或操作?
- 底盘是否需要精定位、对接、驻车或低速保持?
- 机械臂当前姿态、负载和伸展半径是否会造成倾覆风险?
- 是否需要底盘和机械臂同时运动,还是先停稳再操作?
- 目标是否处于相机视野内,抓取姿态是否满足夹具和工装约束?
- 失败后是重导航、重拍照、换抓取、退回安全位,还是请求人工确认?
作业位姿选择
作业位姿选择是轮臂机器人的关键能力。普通 AMR 只要到达站点附近即可,轮臂机器人还要保证机械臂可达、视野可见、夹具姿态可行、轨迹无碰撞。
推荐流程:
text
任务目标 / 工位 / 物体粗位置
-> 候选底盘位姿采样
-> 导航可达性检查
-> 机械臂 IK 与可达性检查
-> 视野与遮挡检查
-> 底盘、机械臂、夹具、环境碰撞检查
-> 稳定性与负载约束检查
-> 选择最优作业位姿
评分指标可以包括:
| 指标 | 含义 |
|---|---|
| 导航代价 | 到该位姿的路径长度、拥堵、禁区、转弯空间 |
| 操作可达性 | IK 成功率、关节余量、末端姿态质量 |
| 视野质量 | 目标是否可见、角度是否合适、遮挡是否小 |
| 碰撞余量 | 机械臂、底盘、夹具、货架、人员之间的距离 |
| 稳定性 | 负载、伸展半径、升降柱高度、地面坡度 |
| 恢复能力 | 失败后是否容易撤退、重试或人工介入 |
精定位与对接
Nav2 的全局导航和局部避障通常不能保证厘米级、角度级作业精度。轮臂机器人到达工位后,通常需要二阶段定位:
text
Nav2 粗定位
-> 低速接近
-> AprilTag / ArUco / 反光板 / 视觉特征 / LiDAR 对齐
-> docking controller 或局部闭环
-> 底盘驻车 / 刹车 / 稳定确认
-> 机械臂操作
适用场景:
- 货架拣选、料箱取放、机台上下料。
- 操作按钮、门把手、抽屉、电梯面板。
- 充电、对接、交接货、托盘定位。
全身规划与松耦合协调
轮臂协同可以分三类:
| 类型 | 做法 | 推荐程度 |
|---|---|---|
| 解耦式 | 底盘先到点并停稳,机械臂再规划执行 | 工程首选,稳定、可验证 |
| 松耦合 | 底盘粗定位,视觉/标签精定位,机械臂视觉伺服微调 | 推荐用于多数真实作业 |
| 强耦合 | 底盘、机械臂、升降轴一起作为全身系统规划/控制 | 能力强,但建模、安全和测试成本高 |
大多数轮臂产品不应一开始追求强耦合全身控制。更务实的路线是先把"到点、精定位、驻车、操作、恢复"做扎实,再逐步引入移动中操作。
稳定性与负载约束
固定机械臂的基座默认稳定,轮臂机器人的基座会移动、刹车、倾斜、受载荷影响。协同层必须显式处理:
- 机械臂伸展半径和末端负载。
- 升降柱高度和重心变化。
- 底盘驻车、刹车、支撑脚或防滑状态。
- 地面坡度、摩擦、加速度限制。
- 急停时的姿态和制动距离。
- 抓取后物体附着模型和质量更新。
这些约束一部分可以进入 MoveIt 2 的碰撞和关节限制,一部分应进入安全控制器、PLC 或运动控制器,不能只依赖上层软件。
接触任务与力控
当轮臂机器人执行插拔、开门、按按钮、擦拭、装配、拉抽屉等任务时,位置控制不再够用,需要接触状态检测和力控策略:
- 末端力/扭矩传感器或关节电流估计。
- 阻抗控制、导纳控制、力位混合控制。
- 接触前减速、接触后限力。
- 超力、卡滞、滑脱、碰撞的退出策略。
- 接触任务的仿真验证和真实数据回放。
对于高频力控,控制闭环应尽量靠近实时控制器或原厂控制器,不要依赖普通 ROS 节点承担 1 kHz 级安全闭环。
3.5 控制抽象层:ros2_control
图中写的是:ros2_control / 控制器管理 / 硬件接口 / 传动与执行模型。
ros2_control 是 ROS 2 生态里连接"上层控制器"和"硬件驱动"的标准框架。其入门文档把核心架构分为 Controller Manager、Resource Manager、Controllers、User Interfaces、Hardware Components。
核心角色:
| 组件 | 作用 |
|---|---|
| Controller Manager | 管理控制器加载、配置、激活、失活;执行控制循环的 read-update-write |
| Resource Manager | 管理硬件组件、生命周期、状态接口、命令接口 |
| Controller | 轨迹控制、速度控制、差速底盘控制、力控等插件 |
| Hardware Interface | 把真实硬件、仿真硬件、厂商 SDK、总线设备包装成统一接口 |
| Transmission / Joint Limit | 描述执行器与关节映射、限位、传动关系 |
典型数据流:
text
HardwareInterface.read()
-> state interfaces: position / velocity / effort / gpio / sensor
Controller.update()
-> command interfaces: position / velocity / effort / acceleration
HardwareInterface.write()
-> EtherCAT / CAN / TCP / vendor SDK / MCU
优点:
- 统一仿真与实机控制接口。
- 控制器插件可复用。
- 可把底盘、机械臂、夹爪、传感器统一成资源。
- 与 MoveIt 2、Nav2、Gazebo 集成自然。
风险与注意:
- 不要把所有硬件都粗暴塞进一个接口。复杂机器人应按执行链路、更新频率、失效模式拆分。
- 控制器切换要定义停机姿态、速度过渡、命令保持策略。
- 硬件接口必须明确 command timeout:上层断流时是保持、刹车、停机还是降级。
- 真实驱动器的限位和安全功能不能只依赖 ROS 层软件限位。
3.6 实时执行层
图中写的是:RT 控制器 / EtherCAT / CAN-FD / MCU / PLC / 安全 I/O。
这一层回答"怎么稳定、同步、确定性地驱动物理硬件"。
RT 控制器
RT 控制器可以是:
- 工业 PC + PREEMPT_RT Linux。
- Xenomai / RTOS。
- 厂商机器人控制柜。
- PLC / PAC / 运动控制器。
- MCU / DSP / FPGA。
关键指标:
- 控制周期:例如 1 kHz、500 Hz、250 Hz。
- 抖动:最大 jitter 比平均延迟更重要。
- 超时:通信超时后的安全动作。
- 时间同步:驱动器、传感器、控制器时钟一致性。
- Watchdog:上层掉线时独立停机。
EtherCAT
EtherCAT 是工业自动化中常见的实时以太网现场总线。适合多轴同步伺服、分布式 I/O、力控传感器、驱动器控制。
适合场景:
- 多关节机械臂。
- 高动态底盘。
- 多驱动器同步。
- I/O 与运动控制强耦合设备。
工程关注点:
- 主站周期与伺服周期匹配。
- Distributed Clocks 时间同步。
- ESI/ENI 配置版本管理。
- 网络拓扑、屏蔽接地、掉站恢复。
- FSoE / Safety over EtherCAT 可用于安全通信,但仍需安全认证链路。
CAN-FD
CAN-FD 是经典 CAN 的扩展,提升载荷和数据速率。适合中低带宽但可靠性要求高的分布式执行器、传感器、底盘模块。
适合场景:
- 轮毂电机、舵轮、夹爪、小型关节模组。
- 电池、BMS、低速 I/O。
- 成本敏感、线束简单的移动机器人。
局限:
- 带宽低于 EtherCAT。
- 多轴高频同步能力有限。
- 报文设计、仲裁优先级、总线负载率需要仔细计算。
MCU / PLC / 安全 I/O
- MCU 适合贴近执行器的低层控制:电机 FOC、编码器读取、硬件滤波、急停输入。
- PLC 适合工厂现场的顺序逻辑、I/O 汇聚、安全互锁、与产线设备联动。
- 安全 I/O 适合急停、安全门、光幕、激光扫描仪、安全继电器、安全 PLC。
推荐边界:
- ROS 2 给 PLC 发"请求"和"状态",PLC 决定是否允许设备动作。
- 安全 PLC/安全继电器直接切断使能链路,而不是等 ROS 节点响应。
- MCU/驱动器内部要有独立速度/电流/温度/位置保护。
3.7 安全边界层
图中写的是:急停 / 禁区 / 速度-力-空间约束 / 人工确认。
安全边界不是普通软件模块,而是跨机械、电气、控制、流程的系统工程。
急停
急停必须满足:
- 硬件独立,不依赖 ROS 2、Wi-Fi、上位机进程。
- 触发后进入确定状态:安全扭矩关闭、抱闸、受控停机或安全停止类别。
- 需要明确复位流程:谁复位、在哪里复位、复位后是否需要重新 homing。
禁区与空间约束
移动机器人常见:
- keepout zone:绝对禁入区。
- speed zone:限速区。
- one-way lane:单向通道。
- docking zone:精定位/低速对接区。
机械臂常见:
- 工作空间限制。
- 轴限位、软限位、硬限位。
- 工具中心点 TCP 约束。
- 人机协作的速度与分离距离限制。
速度、力、空间联合约束
协作机器人或移动操作机器人不能只看位置,还要联合考虑:
- 速度:接近人或设备时降速。
- 力/力矩:接触力阈值、碰撞检测。
- 空间:安全扫描区域、动态保护区。
- 任务语义:搬重物、热工件、尖锐工具时安全等级不同。
人工确认
必须人工确认的情况:
- 进入维护模式。
- 安全链路复位。
- 机器人从未知状态恢复。
- 抓取失败后可能夹住异物。
- 地图/禁区/速度区被修改。
4. 仿真验证体系
图中左侧包括 Gazebo、MuJoCo、Isaac Sim/Lab。
4.1 Gazebo:系统联调
Gazebo 是 ROS 生态常用仿真器,适合做系统级联调:URDF/SDF 模型、传感器、底盘、Nav2、ros2_control、RViz 联动。
适合:
- 移动机器人导航验证。
- 传感器话题、TF、URDF、控制接口调通。
- 多机器人任务演示。
- CI 中的轻量回归测试。
不适合单独承担:
- 高精度接触动力学。
- 大规模并行强化学习训练。
- 照片级视觉数据生成。
4.2 MuJoCo:接触控制与动力学
MuJoCo 是面向多关节动力学与接触的物理引擎,适合研究接触丰富任务、强化学习、动力学辨识、控制算法验证。官方文档强调其广义坐标、接触动力学、MJCF/URDF、预分配内存和高性能仿真能力。
适合:
- 腿足机器人、灵巧手、柔顺接触。
- 插接、推拉、滑动、碰撞等接触任务。
- 强化学习与模型预测控制的快速迭代。
局限:
- 与 ROS 2 工程栈集成不如 Gazebo 自然。
- 视觉真实性不是主打。
- 模型参数需要认真校准,否则 sim-to-real 差距明显。
4.3 Isaac Sim / Isaac Lab:视觉与并行仿真
NVIDIA Isaac Sim 面向高保真机器人仿真、合成数据、RTX 传感器、USD 场景和 ROS 2 集成。Isaac ROS 是 NVIDIA 加速的 ROS 2 包集合,覆盖视觉 SLAM、深度估计、分割、姿态估计、cuMotion、NITROS 等。
适合:
- 合成数据生成。
- 相机、深度、LiDAR 的视觉算法验证。
- GPU 加速感知流水线。
- 大规模并行训练与 sim-to-real 工作流。
- Isaac ROS + MoveIt/cuMotion 的机械臂规划加速。
局限:
- 资源消耗高,部署复杂。
- 对 GPU、驱动、容器、版本兼容要求高。
- 不应把仿真中的感知效果直接等同于现场可靠性。
4.4 仿真验证分级
| 验证类型 | 目标 | 推荐工具 |
|---|---|---|
| 单元级 | 控制器、规划器、坐标变换、参数边界 | gtest/pytest、ros2 launch test |
| 组件级 | Nav2、MoveIt、ros2_control 插件 | Gazebo、RViz、rosbag replay |
| 接触动力学 | 抓取、插接、腿足、柔顺控制 | MuJoCo、Isaac Lab |
| 视觉感知 | 合成数据、传感器视角、遮挡 | Isaac Sim、真实数据回放 |
| 系统级 | 多机器人、任务调度、异常恢复 | Gazebo + Open-RMF / 仿真车队 |
| HIL | 控制器实物、驱动器、PLC、安全 I/O | RT 控制器 + 仿真上位机 |
| 现场试运行 | 真实地图、真实人员、真实工况 | 限速、围栏、灰度任务 |
5. 数据闭环体系
图中右侧包括 RViz、Foxglove、PlotJuggler、rosbag、指标脚本、失败案例库。
5.1 RViz
RViz 是 ROS 生态最基础的空间调试工具,适合看:
- TF 坐标树。
- 机器人模型。
- 点云、激光、图像。
- 路径、轨迹、代价地图。
- 目标位姿、碰撞体、Marker。
RViz 适合现场快速调试,但不适合作为长期数据平台。
5.2 Foxglove
Foxglove 是面向机器人和物理 AI 的多模态日志记录、上传、组织和可视化平台,支持 MCAP、ROS bag、时间序列、文本日志、视频、3D、地图等。
适合:
- 多机器人日志管理。
- 远程调试和复盘。
- 共享布局、事件标注、按设备/时间/话题检索。
- 研发、测试、现场运维之间协作。
5.3 PlotJuggler
PlotJuggler 是时间序列可视化工具,支持 ROS/ROS 2、rosbag、实时 topic、CSV、ULog、MQTT、ZeroMQ、WebSocket 等。
适合:
- 控制曲线分析:目标/反馈/误差。
- 速度、加速度、力矩、电流、温度趋势。
- 事件前后窗口对比。
- 用 Lua/内置变换快速计算指标。
5.4 rosbag / MCAP
录包策略建议:
- 必录:任务状态、机器人状态、TF、目标、路径、控制命令、反馈、错误码、参数快照。
- 选择录:图像、点云、高频关节状态。高带宽数据要按触发条件或环形缓存录制。
- 每个 bag 要绑定:软件版本、地图版本、参数版本、机器人编号、任务 ID、现场环境。
5.5 指标脚本
建议建立自动指标:
| 类型 | 指标 |
|---|---|
| 导航 | 成功率、平均耗时、重规划次数、急停次数、最小障碍距离、定位跳变次数 |
| 机械臂 | 轨迹误差、规划成功率、执行超时、碰撞检查失败、抓取成功率 |
| 控制 | 周期抖动、命令延迟、超时次数、控制饱和、限位触发 |
| 系统 | 节点重启、CPU/GPU/内存、DDS 丢包、日志错误率 |
| 安全 | 急停、禁区接近、限速触发、人工确认次数 |
5.6 失败案例库
失败案例库应该至少包含:
- 失败场景描述。
- 触发条件。
- 关联 bag / 视频 / 日志。
- 根因分类:感知、定位、规划、控制、硬件、流程、人员操作。
- 临时规避与永久修复。
- 是否加入回归测试。
这比单纯"调参经验"更有价值,因为它能让团队持续降低重复故障。
6. 主流机器人厂家与平台方案分类
6.1 开源通用平台:ROS 2 生态
代表:ROS 2、Nav2、MoveIt 2、ros2_control、Gazebo、Open-RMF、ROS-Industrial。
特点:
- 开放、可扩展、生态丰富。
- 适合自研机器人、科研平台、移动操作机器人、柔性自动化。
- 与仿真、可视化、数据闭环工具集成好。
不足:
- 工业级交付需要补齐工程化:实时、安全、版本、诊断、部署、权限、网络、OTA。
- 质量取决于团队软件工程能力和测试体系。
- 多包组合容易出现版本兼容问题。
适合策略:
- 上层用 ROS 2,底层用厂商控制器/PLC/RT 控制器。
- 以 ros2_control 做硬件抽象,以 Nav2/MoveIt 2 做规划,以 Foxglove/PlotJuggler 做数据闭环。
- 对安全链路做硬件独立设计。
6.2 工业机械臂原厂控制器方案
ABB
ABB 的典型软件/控制体系包括 RobotWare、RAPID、RobotStudio、OmniCore 控制器等。RobotStudio 主打离线编程与仿真,使用虚拟控制器提高"屏幕中动作"和"真实机器人动作"的一致性。OmniCore 强调运动控制、安全、网络安全、连接性、传感器与 AI 处理。
架构定位:
- 原厂控制器负责实时运动、安全、伺服、I/O。
- RobotStudio 做离线编程、节拍验证、虚拟调试。
- ROS 2 可作为外部任务/感知/规划系统,通过 ROS-Industrial、厂商接口、RWS/EGM/PC SDK 等方式对接。
适合:
- 汽车、3C、焊接、搬运、喷涂、机床上下料等成熟工业场景。
- 对可靠性、售后、安全认证要求高的产线。
注意:
- 高动态实时控制仍应留在 ABB 控制器内。
- ROS 2 适合做感知、任务编排、柔性规划,不宜绕过原厂安全机制。
Universal Robots
Universal Robots 的 ROS 2 生态相对开放。Universal Robots ROS2 Driver 支持 CB3、e-Series、PolyScope X/5/CB3 控制器,集成 MoveIt 2,并提供校准、UR 控制器、dashboard 消息、硬件接口等包。
架构定位:
- UR 控制器保持安全和底层运动能力。
- ROS 2 driver 通过 External Control URCap 和客户端库接入。
- MoveIt 2 做规划,ros2_control 做接口,UR teach pendant 保留现场操作入口。
适合:
- 协作机器人应用。
- 教育科研与轻工业柔性工作站。
- 需要 ROS 2/MoveIt 2 快速集成的抓取、视觉、装配场景。
注意:
- 必须提取真实机器人校准,否则 TCP 位姿可能不准。
- 安全速度缩放、急停、safeguard stop 等状态要纳入执行逻辑。
FANUC
FANUC 传统强项是高可靠工业控制器、伺服、CNC、机器人本体和视觉软件。ROS 生态中常见对接方式来自 ROS-Industrial FANUC support 与第三方 ROS 2 接口研究/实现。
架构定位:
- FANUC 控制器负责核心运动、安全、I/O。
- ROS 层更多承担离线规划、上层任务、视觉、数据记录。
- 真实项目中常通过厂商选件、现场总线、离线程序、外部接口集成。
适合:
- 高节拍、高稳定性的传统工业产线。
- 对"确定性和售后"优先于"开放灵活"的场景。
注意:
- 开放控制能力通常受厂商选件、控制器型号和安全限制影响。
- ROS 2 深度接入前要确认实时指令接口、反馈频率、授权选件和保修边界。
KUKA
KUKA 常见体系包括 KRC/KSS、Sunrise、FRI、RobotSensorInterface、KUKA.Sim、iiQKA 等。社区里有 ROS 2 KUKA 驱动项目,例如 kuka_drivers,医疗/协作场景也常见 FRI 接口研究。
架构定位:
- KUKA 控制器负责硬实时运动和安全。
- FRI/RSI 适合低延迟外部修正或研究型控制,但要严格遵守接口频率和安全要求。
- ROS 2 可承载任务、规划、感知与数据层。
适合:
- 高性能工业臂、医疗/轻量协作臂、研究型实时控制。
- 需要厂商控制器稳定性,同时引入外部规划/感知的系统。
注意:
- FRI/RSI 等接口不是通用"裸电机控制权",要按厂商定义的控制模式使用。
- 安全与认证边界通常仍在 KUKA 控制系统内。
Yaskawa Motoman / Kawasaki / Staubli / Epson 等
这些厂商在工业现场类似:原厂控制器 + 原厂离线编程/仿真 + 现场总线/SDK/ROS-Industrial 驱动。
共同特点:
- 原厂控制器成熟可靠。
- 现场调试依赖 teach pendant 和厂商软件。
- ROS 接入通常用于上层规划、感知、任务编排,而不是取代控制柜。
选型关注:
- 是否支持外部轨迹流式下发。
- 反馈频率和延迟。
- 是否支持真实控制器仿真。
- 是否有 ROS 2 驱动、MoveIt 配置、URDF/SRDF 模型。
- 安全选件是否满足应用需求。
6.3 AMR/AGV 与移动机器人平台
原厂车队系统路线
代表:MiR、OMRON、Agilox、Geek+、海康机器人、仙工智能、极智嘉等。
典型架构:
text
WMS/MES
-> 厂商 Fleet Manager
-> 机器人本体导航系统
-> 底盘控制器 / 安全激光 / 电池 / 充电桩
优点:
- 交付快,现场稳定性好。
- 厂商提供地图工具、调度、交通管制、充电管理。
- 安全认证和售后体系较完整。
不足:
- 跨品牌互操作困难。
- 深度二次开发受限。
- 算法和数据闭环透明度有限。
适合:
- 仓储物流、产线配送、成熟搬运流程。
- 需求清晰、优先交付和稳定性的项目。
Open-RMF / VDA5050 互操作路线
典型架构:
text
MES/WMS/工单系统
-> Open-RMF 或中央调度
-> VDA5050 / 厂商 adapter
-> 多品牌 AMR Fleet Manager 或机器人
优点:
- 适合多品牌、多场景、多楼宇资源协同。
- 降低被单一厂商锁定的风险。
- 能统一门、电梯、充电、交通资源。
不足:
- adapter 和现场语义映射工作量大。
- 标准接口之外仍有大量厂商差异。
- 调度责任边界要清晰:谁负责避障、谁负责交通、谁负责恢复。
ROS 2 自研底盘路线
典型架构:
text
任务系统
-> ROS 2 / Nav2
-> ros2_control diff_drive / ackermann / mecanum controller
-> CAN-FD / EtherCAT / MCU
-> 电机驱动器 / 安全激光 / BMS
优点:
- 自主可控,适合差异化产品。
- 算法可持续优化。
- 与机械臂、视觉、大模型、数据平台集成灵活。
不足:
- 工程难度高,需要补齐安全、诊断、OTA、参数、地图工具、运维工具。
- 量产可靠性需要长期数据闭环。
适合:
- 自研 AMR、室外/复杂地形机器人、移动操作机器人。
- 需要深度算法差异化的公司。
6.4 仿真与机器人 AI 平台
NVIDIA Isaac 平台
NVIDIA 方案覆盖 Isaac Sim、Isaac Lab、Isaac ROS、Jetson、CUDA/TensorRT/NITROS/cuMotion 等。
优势:
- GPU 加速感知与规划。
- 合成数据和高保真视觉仿真。
- 与 ROS 2 结合紧密。
- 适合视觉、AI、移动操作、机器人学习。
风险:
- 硬件和软件栈复杂。
- 与传统 PLC/工业现场集成仍需工程封装。
- 版本管理和部署成本高。
Gazebo + ROS 2
优势:
- 开源、轻量、ROS 集成自然。
- 适合系统联调和 CI。
- 对 Nav2、ros2_control 友好。
风险:
- 视觉真实性、复杂接触、大规模训练能力有限。
MuJoCo / Isaac Lab 强化学习路线
优势:
- 适合腿足、灵巧手、接触丰富任务、策略训练。
- 可以生成控制策略,再部署到 ROS 2/RT 控制器。
风险:
- sim-to-real 需要域随机化、系统辨识、延迟建模、安全包络。
- 学习策略不能直接绕过安全层。
6.5 商业离线编程与数字孪生工具
代表:ABB RobotStudio、KUKA.Sim、FANUC ROBOGUIDE、RoboDK、Process Simulate、Visual Components 等。
适合:
- 产线节拍验证。
- 离线编程与后处理。
- 工艺路径生成:焊接、喷涂、打磨、切割。
- 与 PLC、夹具、工装仿真联调。
与 ROS 2 的关系:
- 商业离线编程偏"工业工艺与产线交付"。
- ROS 2 偏"在线感知、动态规划、多传感器、自主系统"。
- 两者可以组合:离线程序做确定性工艺段,ROS 2 做柔性上料、视觉定位、异常处理。
6.6 PLC / 工业运动控制平台路线
代表:Beckhoff TwinCAT、Siemens TIA Portal / SIMATIC、B&R、KEBA、Codesys 生态等。
这类平台的核心不是"机器人智能",而是"机器控制":实时 I/O、伺服同步、PLC 逻辑、HMI、现场总线、安全控制、产线设备联动。它们常常出现在非标自动化设备、包装设备、机床上下料、电子装配线、多轴同步设备中。
典型架构:
text
HMI / SCADA / MES
-> PLC / IPC 实时运行时
-> 运动控制库 / 机器人运动学 / CNC
-> EtherCAT / PROFINET / SERCOS / POWERLINK
-> 伺服驱动 / I/O / 安全 PLC
以 Beckhoff TwinCAT 为例,它的 PC-based control 思路是把工业 PC 变成实时控制系统,在一个平台中运行 PLC、NC、CNC、机器人运行时、HMI、视觉、测量和安全模块。对于机器人项目,这类平台通常位于图中"实时执行"和"安全边界"层,向上给 ROS 2、视觉系统或 MES 暴露有限的任务接口。
优势:
- 实时性、确定性和现场总线集成强。
- 与安全 PLC、安全 I/O、伺服驱动、产线设备联动自然。
- 适合多轴同步、节拍严格、I/O 密集的工业设备。
- 工业现场工程师熟悉,维护体系成熟。
不足:
- AI、语义任务、复杂感知、机器人学习生态弱于 ROS 2 / Isaac。
- 开发方式偏工业自动化,对软件工程、云端数据和仿真闭环支持有限。
- 多机器人、多传感器、多模态数据的表达能力通常不如 ROS 2 生态。
推荐边界:
- PLC/运动控制平台负责安全、I/O、驱动器、节拍控制和设备互锁。
- ROS 2/AI 系统负责感知、规划、任务编排和数据闭环。
- 两者通过 OPC UA、现场总线、TCP/gRPC、MQTT 或专用 SDK 交互。
- 不要让 ROS 节点直接替代安全 PLC,也不要让 PLC 承担复杂视觉语义推理。
6.7 足式机器人平台路线
代表:Boston Dynamics Spot、Unitree、ANYbotics、Ghost Robotics 等。
足式机器人的运动控制软件架构与轮式 AMR 不同。其核心难点不是"从 A 点走到 B 点",而是全身动力学、步态稳定、接触切换、地形适应、跌倒保护和能耗控制。因此主流足式平台通常采用"底层封闭、高层 API 开放"的架构。
典型架构:
text
巡检任务 / 遥操作 / 自主任务 API
-> 地图 / 定位 / 路径规划 / 行为任务
-> 厂商高级运动接口
-> 全身控制器 / 步态控制器
-> 关节驱动器 / IMU / 力控 / 安全保护
Boston Dynamics Spot 是典型案例。其 SDK 面向开发者开放 Python 客户端、Spot API、GraphNav、自主导航、Mission、E-Stop、Lease、Docking、Arm API、payload 接口等能力。开发者通常调用"站立、行走、导航、开门、抓取、巡检"等高级接口,而不是直接修改腿部伺服控制器。
Unitree 生态更偏低成本硬件和开放 SDK 组合,常见开发方式是通过官方 SDK、ROS/ROS 2 桥接、高层速度/姿态命令、状态读取来做应用开发。研究人员可以在特定平台上接触更低层控制,但量产和现场应用仍要严守安全、保修和失效边界。
架构特点:
- 厂商保留全身控制、稳定性控制、跌倒保护等核心能力。
- 用户侧开放导航、任务、payload、感知、遥操作、数据采集接口。
- ROS 2 常用于外围感知、任务编排、地图处理和数据记录。
- 安全停机、姿态恢复、电池管理、关节保护一般在厂商系统内实现。
适合:
- 电力、石化、矿山、隧道、建筑、安防等巡检。
- 不适合轮式底盘的楼梯、碎石、坡道、复杂地形。
- 需要移动感知载荷,而不是高速搬运的任务。
关键风险:
- 底层控制封闭,深度二次开发受限。
- 负载、续航、跌倒风险、维护成本要纳入总拥有成本。
- 不能把足式机器人当作"会走路的 AMR",任务规划和安全策略完全不同。
6.8 人形机器人与 VLA 前沿路线
代表:Tesla Optimus、Figure、Agility Digit、UBTECH Walker、Fourier GR、Unitree G1/H1/H2、NVIDIA GR00T 等。
人形机器人的前沿架构正在形成"语言/视觉/动作模型 + 技能库 + 全身控制"的分层。宣传中常说"端到端",但在工程上通常仍然会拆成慢速语义理解、任务/技能选择、快速运动策略、实时全身控制、安全约束几层。
典型架构:
text
自然语言 / 图像 / 视频 / 任务目标
-> VLM / VLA / LLM
-> 技能库 / 行为树 / 任务规划
-> 全身运动规划 / 模仿学习策略 / RL 策略
-> 实时全身控制器
-> 关节执行器 / 触觉 / 力控 / 安全保护
Figure Helix 是一个典型前沿样本。官方将其描述为 Vision-Language-Action 模型,并采用类似"System 2 / System 1"的双系统设计:System 2 负责较慢的视觉语言理解和语义推理,System 1 负责更快的连续动作控制。它强调 onboard embedded GPU 部署,以及对上半身、手腕、躯干、头部、手指等高维动作空间的控制。
Agility Digit 的路线更偏仓储商业化。其 Arc 平台强调把 Digit、仓储自动化、AMR、管理系统和执行系统连接起来,提供 workflow、fleet、live metrics 等能力。这说明人形/双足机器人落地时,软件架构并不只是"单机智能",还要进入仓储执行系统和车队管理体系。
NVIDIA Isaac / GR00T 路线则更像"前沿机器人 AI 基础设施":
- Isaac Sim:高保真仿真、合成数据、传感器仿真。
- Isaac Lab:机器人学习、强化学习、模仿学习、批量仿真。
- Isaac ROS:ROS 2 上的 CUDA 加速感知和规划组件。
- GR00T:面向人形机器人的基础模型、数据、仿真、中间件和 Jetson Thor 部署路线。
架构特点:
- 慢速大模型负责理解任务、场景、语言和意图。
- 快速策略或控制器负责连续运动。
- 实时安全链路仍然独立存在。
- 运动策略通常被限制在速度、力、空间、姿态、稳定性等安全包络内。
- 数据闭环非常重要:遥操作数据、失败数据、仿真数据、真实执行数据都进入训练和评估流程。
关键判断:
- 人形机器人的前沿在 VLA、模仿学习、强化学习和数据规模。
- 量产落地仍取决于传统控制、安全、执行器、热管理、电池、运维和场景约束。
- "大模型控制机器人"不应理解为大模型直接输出电机电流,而应理解为大模型参与任务理解、技能组合和高层决策。
6.9 云原生机器人开发平台路线
代表:Intrinsic Flowstate、部分云端机器人应用开发平台、数字孪生/技能编排平台。
这类平台的目标是把机器人应用开发从"专家手写工程项目"变成"数字工作站 + 技能库 + 行为树 + 仿真验证 + 实机部署"的流程。
典型架构:
text
数字工作站 / 设备模型 / 工装夹具
-> 标定 / 可达性 / 碰撞检查
-> Skill / Capability
-> Behavior Tree / Workflow
-> Motion Planning / Pose Estimation
-> Simulation
-> Real Hardware
Intrinsic Flowstate 是典型代表。其公开资料强调:先创建真实工作站的数字孪生,添加硬件,使用 Python/C++ SDK 或图形界面创建 skills,用行为树组织流程和失败恢复,先在仿真中验证,再切换到真实硬件优化。
架构价值:
- 将"抓取、放置、扫码、视觉定位、等待 PLC、错误恢复"等封装成可复用 skill。
- 用行为树表达任务流程和恢复逻辑,比硬编码脚本更容易维护。
- 数字孪生让可达性、碰撞、节拍和工站布局提前验证。
- 适合多品种、小批量、柔性工作站。
局限:
- 对复杂现场仍需要机器人专家、工艺专家和自动化工程师共同建模。
- 底层实时控制和安全仍依赖原厂控制器、PLC 或 RT 控制器。
- 平台抽象能提升效率,但不能消除标定、夹具、传感器、工装误差。
6.10 主流与前沿方案总览
| 类别 | 代表 | 架构核心 | 优势 | 风险 |
|---|---|---|---|---|
| ROS 2 开源路线 | ROS 2、Nav2、MoveIt 2、ros2_control | 开放中间件 + 规划 + 硬件抽象 | 灵活、生态大、适合自研 | 工业化要补实时、安全、部署 |
| 工业机械臂原厂 | ABB、KUKA、FANUC、UR、Yaskawa | 原厂控制器 + 外部接口 | 稳定、安全、交付成熟 | 封闭、二开边界有限 |
| PLC/运动控制 | Beckhoff、Siemens、B&R、KEBA | 实时 PLC/IPC + 现场总线 | 实时强、产线友好 | AI/ROS 生态弱 |
| AMR/AGV | MiR、OMRON、Geek+、海康、仙工 | Fleet + 车端导航 + 安全底盘 | 交付快、适合物流 | 跨品牌集成难 |
| 足式机器人 | Spot、Unitree、ANYbotics | 厂商全身控制 + 高层 API | 复杂地形能力强 | 底层封闭、成本高 |
| 人形机器人 | Figure、Tesla、Agility、UBTECH、Fourier、Unitree | VLA/技能库 + 全身控制 | 通用性潜力大、前沿能力强 | 可靠性和安全仍在验证 |
| AI/仿真平台 | NVIDIA Isaac、MuJoCo、Gazebo | 仿真、数据、训练、验证 | 支撑前沿研发和回归测试 | 现场落地仍需工程化 |
| 云原生机器人平台 | Intrinsic Flowstate 等 | 数字孪生 + skill + 行为树 | 提高应用开发效率 | 平台抽象不能替代现场工程 |
从架构趋势看,主流和前沿方案正在向下面几个方向收敛:
- ROS 2 正在成为开放机器人软件的事实底座,但主要承担中上层通信、规划、感知和数据闭环。
- 工业机器人厂家仍坚持"控制柜主权":核心伺服、轨迹插补、安全和 I/O 在厂商控制器里。
- AMR/AGV 正在标准化上层接口,VDA5050 和 Open-RMF 解决多品牌、多车队、多基础设施协同。
- 足式机器人和人形机器人通常开放高级 API 或技能接口,而不是完全开放底层全身控制。
- VLA/LLM/VLM 会进入任务理解、技能组合、异常解释和数据生成,但不会取代实时安全链路。
- 仿真和数据闭环从辅助工具变成核心基础设施,承担训练、验证、回归、故障复盘和持续改进。
最稳妥的工程结论是:任务智能开放,运动规划可替换,控制抽象标准化,实时执行专用化,安全链路独立化。
7. 对原图的补充与完善建议
7.1 增加"状态估计与地图层"
原图把运动规划列出来,但没有单独强调状态估计。建议在规划层旁边补充:
- TF 坐标树。
- robot_state_publisher / joint_state。
- EKF/UKF 融合。
- SLAM / Localization。
- 语义地图、拓扑地图、禁区/限速区。
原因:规划质量高度依赖状态估计,定位跳变会直接导致导航和机械臂抓取失败。
7.2 增加"行为层 / 任务执行器"
建议在系统主干和运动规划之间增加:
- Behavior Tree。
- 状态机。
- Task Planner。
- Recovery Manager。
- Skill / Capability Registry。
原因:实际机器人不是收到一个目标就结束,中间有等待、重试、取消、暂停、恢复、人工确认、异常升级。
7.3 增加"运维与部署层"
建议补充:
- 容器化部署。
- 版本管理。
- OTA / 回滚。
- 参数中心。
- 健康检查。
- 权限与证书。
- 网络拓扑与安全域。
原因:从实验室到现场,失败往往不是算法,而是部署、参数、网络、日志、权限、版本不一致。
7.4 增加"安全标准与风险评估"
建议补充:
- 风险评估:危害识别、风险等级、残余风险。
- 功能安全:安全 PLC、安全 I/O、安全扫描仪、安全驱动。
- 机械安全:限位、护栏、末端工具、负载固定。
- 流程安全:维护模式、挂牌上锁、人工确认。
原因:安全不是一个急停按钮,而是完整生命周期。
7.5 增加"大模型/AI 的合理位置"
建议明确:
text
LLM/VLM 可进入:任务理解、工单解析、异常解释、日志总结、参数建议、自然语言 HMI、技能组合建议。
LLM/VLM 不进入:关节级闭环、急停链路、安全许可、驱动器控制。
可采用"建议-验证-执行"模式:
- AI 给出建议。
- 规则引擎/规划器/仿真/安全约束验证。
- 低层控制器执行。
- 数据闭环记录结果。
8. 推荐参考架构
8.1 移动机器人 / AMR
text
MES/WMS/工单
-> Open-RMF / Fleet Manager / VDA5050 adapter
-> ROS 2 behavior server
-> Nav2
-> ros2_control diff_drive / ackermann controller
-> CAN-FD / EtherCAT / MCU
-> motor drivers
Safety scanner / E-stop / bumper
-> safety PLC / safety relay
-> drive enable / STO
关键点:
- 上层调度只给任务和路线约束。
- 车端保留局部避障和安全停机权。
- 地图、禁区、限速区版本化。
- 每次异常必须可回放。
8.2 工业机械臂视觉抓取
text
工单 / PLC 请求
-> ROS 2 task node
-> 相机采集 / 目标识别 / 位姿估计
-> MoveIt 2 / grasp planner
-> trajectory execution
-> ros2_control 或厂商 driver
-> 原厂控制器 / 伺服
安全门 / 光幕 / 急停
-> 安全 PLC
-> 机器人控制器安全输入
关键点:
- 原厂控制器保持安全和伺服主控。
- ROS 2 负责视觉、规划、数据闭环。
- 失败恢复要定义清楚:重拍照、换抓取、退回安全位、请求人工。
8.3 轮臂机器人 / 移动操作机器人
text
MES / WMS / 工单 / Open-RMF / VDA5050
-> 任务执行层
Behavior Tree / FSM / Skill Manager / Recovery / 人工确认
-> ROS 2 系统主干
DDS / 生命周期 / 参数 / 日志 / 诊断 / 权限与部署
-> 状态估计与标定
TF / SLAM-定位 / EKF / 时间同步 / 手眼标定 / TCP-外参版本
-> 轮臂协同层
作业位姿选择 / 全身规划 / 底盘-机械臂协调 / 精定位 / 稳定性与负载约束
-> 运动规划层
Nav2 / MoveIt 2 / 视觉伺服 / 抓取规划 / 接触规划
-> 控制抽象层
ros2_control / Controller Manager / Resource Manager / Hardware Interface
-> 实时执行层
RT 控制器 / EtherCAT / CAN-FD / MCU / PLC / 驱动器 / 安全 I/O
-> 安全边界
急停 / 安全激光 / 禁区 / 速度-力-空间约束 / 防倾覆 / 维护模式
关键点:
- 需要统一 TF、时间同步、负载状态、底盘驻车状态和稳定性约束。
- 底盘和机械臂不能各自规划后简单叠加,至少要有作业位姿选择和协同约束。
- 抓取时底盘应进入稳定/驻车或低速精定位状态,必要时用视觉伺服做末端误差补偿。
- Nav2 解决"怎么到作业区",MoveIt 2 解决"机械臂怎么动",轮臂协同层解决"车停哪里、手怎么伸、系统是否稳定"。
- 安全边界要覆盖底盘安全激光、机械臂速度/力限制、防倾覆、维护模式、人工确认。
推荐工作流:
text
接收任务
-> 候选作业位姿生成
-> 导航可达性 + 机械臂可达性 + 视野 + 碰撞检查
-> Nav2 粗定位
-> AprilTag / ArUco / 激光反光板 / 视觉精定位
-> 底盘驻车或低速保持
-> 感知目标并估计位姿
-> MoveIt 2 / 抓取规划 / 接触规划
-> ros2_control 执行
-> 抓取/接触结果确认
-> 放置 / 退出 / 恢复 / 人工确认
协同方式分级:
| 模式 | 做法 | 优先级 |
|---|---|---|
| 解耦式 | 底盘到点停稳后机械臂作业 | 最推荐先落地,稳定、可验收 |
| 松耦合 | 底盘粗定位 + 视觉/标签精定位 + 机械臂视觉伺服 | 推荐用于货架、机台、按钮、抽屉等任务 |
| 强耦合 | 底盘和机械臂作为整体规划/控制 | 适合高级能力,需充分仿真和安全验证 |
轮臂机器人专项检查表:
| 检查项 | 要点 |
|---|---|
| 作业位姿 | 是否同时满足导航可达、机械臂可达、视野可见、无碰撞 |
| 坐标链 | map、odom、base_link、arm_base、camera、tool0 是否一致且有时间戳 |
| 标定 | 手眼、底盘-机械臂外参、TCP、夹具模型是否版本化 |
| 稳定性 | 机械臂伸展、负载、升降柱、坡度、刹车状态是否进入约束 |
| 精定位 | Nav2 到点后是否有 docking、视觉标签或局部闭环 |
| 接触任务 | 是否有力控、阻抗/导纳、超限退出和接触确认 |
| 安全 | 急停、安全激光、机械臂限速、禁区、防倾覆是否独立有效 |
| 数据闭环 | 每次失败是否能通过 bag、日志、视频、指标复盘 |
8.4 接触丰富任务
text
工艺目标
-> 离线轨迹 / 学习策略 / MPC
-> 力位混合控制 / 阻抗控制
-> RT 控制器
-> EtherCAT servo drives
-> 力传感器 / 电流反馈 / 位姿反馈
关键点:
- MuJoCo/Isaac Lab 用于策略和接触模型验证。
- 上线必须有力/速度/空间安全包络。
- 高频控制尽量靠近实时控制器,不依赖普通 ROS 节点。
9. 学习路线
阶段 1:基础概念
- ROS 2 节点、话题、服务、动作、参数、launch。
- TF 坐标系与时间戳。
- URDF/Xacro/SRDF。
- rosbag/MCAP 录制与回放。
练习:用 Gazebo 跑一个差速底盘,RViz 看 TF、LaserScan、Odometry、Path。
阶段 2:导航与规划
- Nav2 行为树、Planner、Controller、Costmap。
- MoveIt 2 Robot Model、Planning Scene、IK、轨迹执行。
- 失败恢复和状态机。
练习:移动机器人导航到工作站,机械臂在仿真中完成 pick and place。
阶段 3:控制抽象
- ros2_control 的 Controller Manager、Resource Manager、Hardware Interface。
- JointTrajectoryController、diff_drive_controller、GPIO/sensor interface。
- 仿真硬件与真实硬件切换。
练习:写一个 mock hardware,再替换为真实 CAN/EtherCAT/厂商 SDK。
阶段 4:实时与安全
- PREEMPT_RT、控制周期、jitter、watchdog。
- EtherCAT/CAN-FD 基础。
- PLC、安全 I/O、急停、STO、安全扫描仪。
- 命令超时和降级策略。
练习:设计 command timeout、急停状态机、恢复流程。
阶段 5:数据闭环与工程化
- Foxglove / PlotJuggler。
- 指标脚本和自动回归。
- 失败案例库。
- 容器化、版本、参数、部署。
练习:给一次导航失败建立完整案例:bag、视频、日志、指标、根因、回归测试。
10. 常见架构反模式
| 反模式 | 问题 | 建议 |
|---|---|---|
| 大模型直接发关节命令 | 不确定、不可认证、不可保证实时安全 | 大模型只做建议,经过规划器和安全约束验证 |
| MES 直接控制机器人运动 | 工厂系统不理解机器人安全与局部避障 | 增加任务网关/Fleet Manager |
| ROS 节点承担急停 | 软件进程/网络可能失效 | 急停走硬件安全链路 |
| 只在 RViz 看效果,不录 bag | 故障不可复现 | 建立标准录包与指标体系 |
| 仿真成功等于现场成功 | 传感器、摩擦、延迟、人流差异巨大 | HIL、灰度上线、真实数据回放 |
| 所有参数现场手调 | 不可追溯,不可复现 | 参数版本化、范围约束、变更记录 |
| 多控制器抢同一硬件接口 | 命令冲突、轨迹跳变 | 用 ros2_control 资源管理和控制器切换策略 |
| 把轮臂当成 AMR 加机械臂 | 底盘停位、机械臂可达性、稳定性和视野没有统一优化 | 增加轮臂协同层和作业位姿选择 |
| Nav2 到点后直接抓取 | 到点精度不足,底盘姿态误差会放大到末端 | 增加 docking、视觉标签或局部精定位 |
| 机械臂伸展不考虑底盘稳定 | 重心变化、负载和坡度可能导致倾覆或打滑 | 增加稳定性、负载、驻车和防倾覆约束 |
| 接触任务只用位置轨迹 | 插拔、开门、按按钮时容易卡死、过力或损坏目标 | 增加力控、阻抗/导纳、超限退出策略 |
| 标定文件散落在现场电脑 | 手眼、TCP、相机外参、底盘外参不一致导致误抓 | 标定版本化并与 bag、软件版本、任务记录绑定 |
11. 资料链接
- ROS 2 DDS 设计:ROS on DDS
- ROS 2 生命周期:Managed nodes
- ROS 2 参数设计:Parameter API design in ROS
- Nav2 文档:Nav2 Documentation
- MoveIt 2 文档:MoveIt 2 Documentation
- ros2_control 文档:ros2_control
- ros2_control 入门架构:Getting Started
- Open-RMF:Open-RMF
- VDA5050:Official Specification document
- NVIDIA Isaac ROS:Isaac ROS
- NVIDIA Isaac Sim:Isaac Sim Documentation
- Gazebo:Gazebo Documentation
- MuJoCo:MuJoCo Overview
- Foxglove:Foxglove Docs
- PlotJuggler:PlotJuggler
- ABB RobotStudio:RobotStudio Suite
- ABB OmniCore:OmniCore Controller
- Universal Robots ROS 2 Driver:GitHub repository
- ROS-Industrial FANUC:GitHub repository
- ROS-Industrial ABB:GitHub repository
- KUKA ROS 2 Drivers 社区项目:kuka_drivers
- Beckhoff TwinCAT:TwinCAT automation software
- Boston Dynamics Spot SDK:Spot SDK Documentation
- Unitree 下载中心:Unitree Download Center
- Figure Helix:Helix Vision-Language-Action Model
- Agility Robotics Solutions:Digit and Arc
- NVIDIA Isaac 平台:NVIDIA Isaac
- Intrinsic Flowstate:Flowstate
12. 一句话总结
这套架构的正确落点是:上层开放、中层可观测、下层实时、安全独立、仿真先行、数据闭环;机器人越接近真实产线,越不能只看算法能力,而要看接口边界、失败恢复和安全链路是否扎实。