ROS 2/C++ Sim2Real 初版
本目录归档 real/sim2real_ros2,对应 v0.10.0。这是轮腿机器人 Sim2Real 部署栈从 Python 运行时迁移到 ROS 2 + C++ 的第一版系统工程。
本工程保留当前 sim2real 已验证的部署契约,同时将运行时热路径迁移到 C++:
53D策略观测契约不变16D动作契约不变50Hz策略循环与训练对齐200Hz电机循环为专用 C++ 热路径- ROS 2 作为导航、TF、诊断和启动管理的系统集成层
工作区布局
src/sim2real_interfaces硬件桥接与策略运行时共享的 ROS 2 消息定义。src/sim2real_common共享常量、部署契约辅助函数、Mahony 姿态滤波器、站立平衡控制器、安全监控。src/sim2real_hw面向硬件的桥接节点:RobStride CAN 收发、IMU/Odin 数据采集、看门狗、状态发布。src/sim2real_runtime策略运行时节点:53D→16DONNX 推理、命令滤波/仲裁、目标发布。 同时包含odom_relay_node(里程计中继与 TF 广播)。src/sim2real_nav2ROS 2 Navigation2 (Nav2) 配置包:参数、启动文件、AMCL、costmap、planner/controller。src/sim2real_bringup统一启动文件与运行时参数配置。src/odin_ros_driver仅保留依赖边界说明;原始v0.10.0快照没有归档 Odin 驱动源码,不能独立提供 IMU、点云和里程计发布。docs架构说明与迁移计划。
目标架构
Odin / IMU / Odom ---> sim2real_hw ---> sim2real_runtime ---> sim2real_hw
| | |
v v v
RuntimeState RuntimeTarget 电机 CAN 指令
| |
+-------> 诊断 / 遥测
Nav2 / cmd_vel ------------------------------> sim2real_runtime
(经 odom_relay_node 提供 odom→base_link TF)
当前状态
已完成 Phase 0-5 的全部迁移:
- ✅ 冻结部署契约(deployment_contract.hpp)
- ✅ ROS 2 包结构搭建
- ✅ 硬件热路径迁移至 C++(SocketCAN 驱动、200Hz 电机循环)
- ✅ ONNX 策略运行时迁移至 C++(50Hz 推理循环)
- ✅ 导航与诊断通过 ROS 2 接入(Nav2 + odom_relay + TF)
契约来源
迁移过程中以下文件被视为真值源:
../sim2real/deployment_manifest.yaml../sim2real/interface/motor_mapping.py../sim2real/interface/real_io.py../sim2real/policy/policy_runner.py../sim2real/web/session.py
注意事项
- 开发目标为 Linux + ROS 2 Humble,运行于 Jetson Orin / x86_64。
- Windows 仅作为编辑环境使用。
- 观测顺序、动作缩放、默认站姿、电机映射不得独立修改, 除非训练与部署同步更新。
- 原始快照中的
src/odin_ros_driver是空目录,本版本仍需要另行提供兼容的 Odin ROS 2 驱动;其源码从后续版本开始随工程归档。 - 自研 ROS 包保留原始
Proprietary清单字段,公开发布前仍需统一许可证和维护者信息。