Dual_Arm_UR5 / Sim-to-Real

Dual_Arm_UR5平台 Sim-To-Real系统实现

本系统面向双 UR5 机器人平台,完成从 MuJoCo 数字孪生、PPO 策略训练,到 ROS 2 控制桥接与真机部署的 Sim-to-Real 闭环实现,并通过安全状态机完成策略接入与上机保护。

MuJoCo Twin PPO Policy ROS 2 Bridge Real Robot
Real Robot Deployment ROS 2 / MoveIt / ros2_control MuJoCo + PPO Dual-arm Manipulation Sim-to-Real
Dual UR5 Sim-to-Real Overview 双臂 UR5 Sim-to-Real 总览图

从真实平台定义任务边界,在 MuJoCo 中完成策略训练,再通过 ROS 2 控制桥接、安全状态机和部署演示验证闭环可行性。

Real 双 UR5 平台 30D → 12D 策略接口 20 Hz / 125 Hz 分层控制
01真实平台 02MuJoCo 数字孪生 03策略任务设计 04ROS 2 部署桥接 05部署演示 06Reality Gap 评估
1

真实平台

物理双臂 UR5 硬件、相机与操作终端,作为最终部署和验证平台。

真实双臂 UR5 机器人平台
Dual UR5Real Robot
2

MuJoCo 数字孪生

用于策略训练的仿真环境,先在仿真中完成探索、迭代和轨迹观察。

MuJoCo 双臂 UR5 数字孪生训练环境
MuJoCoGymnasium
3

策略任务设计

状态30D:关节状态、速度、末端相对目标
动作12D 有界关节增量
训练Stable-Baselines3 PPO,2,000,000 steps
目标学习可迁移的双臂协同行为
任务封装

将双臂 reaching、碰撞终止、动作惩罚和停稳奖励整理成 Gymnasium 环境,使 PPO 训练目标与后续控制接口保持一致。

  • 相对几何观测:减少对绝对世界坐标的依赖
  • 有界关节增量:便于映射到真实关节轨迹
  • 训练日志:记录 reward、双臂距离误差和轨迹表现
4

ROS 2 部署桥接

策略输出经过动作映射、安全状态机和 JointTrajectoryController,进入真实控制链路。

ROS 2 与 RViz 双臂部署可视化
StatePolicyMappingROS 2 20 Hz 推理125 Hz 控制ros2_control
5

部署演示

训练曲线、可视化观测和双臂末端执行演示作为项目真实性证据。

20 Hz Policy125 Hz ControlSafety FSM
6

评估与 Reality Gap

观测一致性检查状态定义与传感器噪声
接口一致性检查动作语义、频率和命令边界
评估一致性后续补充误差、成功率和重复性统计
上机检查

Reality Gap 不是只看训练 reward,而是检查仿真资产、控制频率、关节限幅、归位阈值和异常恢复是否能在真实平台闭环。

  • 20 Hz 策略输出与 125 Hz 控制执行分层
  • INIT / HOMING / AI_RUNNING 显式保护状态
  • 当前阶段已完成真机闭环演示,后续补充系统化统计

Technical Stack

技术栈

Robotics

机器人控制与部署

ROS 2 MoveIt ros2_control JointTrajectoryController ScaledJointTrajectoryController controller_manager URDF Launch Files

用于真机通信、MoveIt 配置、ros2_control 控制器接入和轨迹执行;上层策略只输出动作语义,底层控制器负责插值、限幅和真实关节执行。

Robot Learning

仿真与强化学习

MuJoCo Gymnasium Stable-Baselines3 PPO Reward Design Trajectory Analysis virtual_qpos ACTION_SCALE

用于构建双 UR5 数字孪生、封装 Gymnasium 环境,并用 PPO 完成 30D 观测到 12D 关节增量动作的策略训练、推理和轨迹分析。

Engineering

工程实现能力

Python Linux Git Workflow State Machine Safety Checks Deployment Scripts bringup_dual_ur.sh run_ascamera_node.sh

用于组织训练脚本、部署脚本、复位工具、启动文件和状态机逻辑;包含控制器就绪检查、自动归位、异常恢复和多轮测试入口。

Perception

感知扩展方向

RGB-D YOLO ascamera 2D-to-3D DetectedObject3D CameraInfo / TF Hand-Eye Calibration Embodied AI VLA

作为后续扩展方向,保留 RGB-D 图像、深度、点云、YOLO 检测和 3D 目标消息接口,为抓取、规划和目标条件策略提供数据入口。

Control Topics 控制接口

/joint_states/left_arm_controller/joint_trajectory/right_arm_controller/joint_trajectory

Perception Topics 感知接口

/ascamera/.../rgb0/image/depth0/image_raw/detected_objects_3d

Runtime Guards 上机保护

controller activemove_group readyhome error < 0.05 rad

Design Rationale

关键设计亮点

Observation

观测用相对几何

策略输入包含关节位置、关节速度和末端到目标的相对向量,让策略关注“离目标还差多少”,减少对世界坐标绝对值的依赖。

Action

动作做有界增量

策略输出可限幅的关节增量,再交给控制器插值执行,降低真实关节突跳、越界和不可控目标位姿风险。

Control

推理和控制分层

20 Hz 策略层负责决策,125 Hz 控制层负责轨迹跟踪,避免学习算法直接承担底层伺服频率。

Safety

状态机守住边界

INIT、HOMING、AI_RUNNING 显式管理通信、归位、误差阈值和异常恢复,避免策略在未知姿态下接管硬件。

System Architecture

系统闭环

Base

资产与语义对齐

dual_arm.xml 与 dual_ur_plate.urdf 固定机械结构、关节接口、末端坐标系和仿真资产。

RL

PPO 任务封装

自定义 DualUR5Env,设计 30 维状态、12 维动作、碰撞终止、停稳奖励与训练日志。

Bridge

ROS 2 控制桥接

20 Hz Python 策略推理接入 125 Hz JointTrajectoryController,完成积分、限幅与轨迹平滑。

Real

真机闭环验证

通过归位、误差阈值、异常复位和部署观测,验证策略能否在真实双臂平台稳定执行。

MuJoCo Digital Twin PPO Policy ROS 2 / MoveIt Dual UR5 Platform

同一策略接口贯穿三层

上层策略保持训练侧接口不变,控制层负责样条插值与关节轨迹跟踪,安全层负责归位、误差检查、异常复位和通信验证。

Engineering Evidence

工程落地

System Architecture 控制链路
Dual_Arm_UR5 真实硬件、ROS 2 Driver 与 Python RL 控制节点的闭环控制链路 RL Control Node (Python) 真实双臂 UR5 硬件 ROS 2 Driver Joint States / 反馈 位置执行 /joint_states RL 控制节点 构建观测向量 PPO 策略网络 Action 积分 / 位置增量映射 平滑位置指令 安全状态机 /left_arm_controller/joint_trajectory /right_arm_controller/joint_trajectory
01

Base:控制与建模

先把机械结构、关节语义、末端坐标系和任务空间控制定义清楚,避免后续训练目标漂移。

  • dual_arm.xml / dual_ur_plate.urdf
  • control_simple.py
  • 任务空间 PID、Jacobian 与重力补偿
02

RL-Algorithm:PPO 训练

把双臂 reaching、碰撞终止、速度惩罚和停稳奖励编码成可学习任务。

  • DualUR5Env + Gymnasium
  • PPO_train.py
  • Stable-Baselines3 PPO,2,000,000 steps
  • 训练曲线、best_model 与 3D 轨迹分析
03

Sim-To-Real:真机部署

承接模型推理、归位恢复、通信联调与真机安全上电,并针对通信延迟、物理约束和动作语义映射做部署保护。

  • ros2_control.py / reset_robot.py
  • boot.py / dual_real_driver.launch.py
  • 20 Hz 推理 + 125 Hz 控制器执行
  • 归位误差 < 0.05 rad 后进入 AI_RUNNING
GitHub Code Map 关键文件快速定位
模型资产 dual_arm.xml dual_ur_plate.urdf
RL 环境 env.py PPO_train.py deploy.py
ROS 2 上机 ros2_control.py reset_robot.py boot.py
驱动与规划 dual_real_driver.launch.py dual_real_moveit.launch.py dual_arm_controllers.yaml joint_limits.yaml
感知扩展 ascamera run_ascamera_node.sh yolo.py DetectedObject3D.msg
Execution Path 从代码到真机的落地路径
  1. 01 统一模型语义

    先让 MuJoCo XML 与 ROS 2 URDF 对齐关节、坐标系、末端链接和双臂布局。

  2. 02 训练策略

    在 Gymnasium 环境中训练 PPO,记录曲线、轨迹和 best model,验证策略基本可用。

  3. 03 接入控制器

    把 12 维动作映射成有界关节增量,再交给 ROS 2 控制器执行轨迹。

  4. 04 安全上机

    通过归位、误差阈值、通信检查和异常恢复,把策略放进可控的真机闭环。

deployment session

$ chmod +x ~/ros2_ws/bringup_dual_ur.sh && ~/ros2_ws/bringup_dual_ur.sh

$ ros2 launch dual_ur_plate dual_real_driver.launch.py

$ ros2 launch dual_ur_plate dual_real_moveit.launch.py

$ python3 src/boot.py && python3 src/reset_robot.py

$ python3 src/ros2_control.py --policy logs/best_model.zip

[state] INIT → MOVING_HOME / HOMING → AI_RUNNING → FINISHED

[bridge] PPO action 12D → virtual_qpos → bounded joint trajectory

[vision] ascamera + yolo_detector → /detected_objects_3d

Engineering Boundary 当前工程边界

README 中的 RGB-D / YOLO / 3D 目标定位已作为感知扩展链路接入展示,当前仍主要提供目标消息与后续抓取接口;模型路径、相机内参、topic 名称和阈值后续应进一步参数化。