5.1 KiB
ROS 2 Sim2Real v3:最终比赛版
本目录由原始 sim2real_ros2_v2(last_not_slalom_1050) 整理而来,正式作为 ROS 2/C++ 第三版(v3),对应 RC_WheelLeg 在 RoboCon 仿生足式障碍赛使用的最终部署栈。1050 是比赛得分,不是模型编号;比赛 Rough 策略为 model_6800.onnx。
该里程碑对应重排主线的 v1.0.0,是 1050 分比赛最终版本。训练架构和策略来源见 v0.6.0,比赛 Rough 模型首次归档见 v0.8.0,导航打点与路线演进见 v0.8.1,ROS 2 迁移过程见 v0.10.0~v0.12.0。
当前 main 的 v1.0.1 只是在 v1.0.0 基础上补充比赛机器人图片和比赛视频,本目录代码仍以 v1.0.0 为比赛部署基线。
系统闭环
Odin IMU / Odom ──> hardware bridge ──> RuntimeState
|
导航 / 遥控 / 屏幕 ──> cmd mux ──> policy runtime (50 Hz)
|
RuntimeTarget
|
hardware bridge / CAN (200 Hz)
核心约束:
- 53 维策略观测、16 维动作输出。
- Rough:
model_6800,优先 TensorRT,失败时回退 ONNX Runtime。 - Wall:
model_84,同样保留 TensorRT 与 ONNX 两种文件。 - Crawl:比赛配置使用解析 IK,不加载 Crawl RL 权重。
- 默认站姿:髋俯仰
0.550、膝关节-1.125。 - 默认命令源:
NAV;默认定位模式:relocal。
目录
sim2real_ros2_v3/
├─ src/
│ ├─ sim2real_interfaces/ # RuntimeState / RuntimeTarget 消息
│ ├─ sim2real_common/ # 部署契约、滤波、平衡和安全监控
│ ├─ sim2real_hw/ # SocketCAN、IMU 和 200 Hz 电机热路径
│ ├─ sim2real_runtime/ # 策略、命令仲裁、导航、Web API
│ ├─ sim2real_nav2/ # Nav2 配置入口
│ ├─ sim2real_bringup/ # 统一参数和启动文件
│ └─ odin_ros_driver/ # Odin ROS 驱动(Apache-2.0)
├─ policies/ # 比赛实际使用的 Rough / Wall 模型
├─ map/ # 比赛路线和抽样 PCD
├─ screen/ # Orin 800×600 触控面板
├─ docs/ # 架构、遥控、Web 和迁移说明
├─ Dockerfile
└─ start_sim2real.sh
构建与运行
目标环境是 Ubuntu 22.04、ROS 2 Humble 和 Jetson Orin。系统依赖和 Docker 流程见 DEPLOYMENT_GUIDE.md。
cd 05_software/real/sim2real_ros2_v3
colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=Release
./start_sim2real.sh
运行参数和模型/路线均使用工作区根目录相对路径,因此应从本目录启动。常用启动覆盖:
# 纯里程计模式,不等待 Odin 重定位地图
./start_sim2real.sh localization_mode:=odom \
odin_config_file:=src/odin_ros_driver/config/control_command_odom.yaml
# 禁止驱动,仅做软件链路检查
./start_sim2real.sh launch_driver:=false launch_remote:=false
必须补充的部署资产
最终源目录配置引用了 Odin map/1hao.bin,但工作区备份中不存在这个文件;全盘检索也未找到同名文件。为避免用来源不明的 .bin 冒充比赛地图,本仓库不伪造该资产。
使用 relocal 前必须:
- 从比赛 Orin 或 Odin 建图备份取得真实
1hao.bin。 - 修改
src/odin_ros_driver/config/control_command_relocal.yaml中的relocalization_map_abs_path为目标机绝对路径。 - 核对文件哈希并在发布说明中补充来源。
缺少该文件时请使用 localization_mode:=odom,不要宣称重定位闭环已复现。地图和路线边界见 map/README.md。
归档边界
已保留:
- 最终六个 ROS 2 包、Odin 驱动源码、比赛设备标定参数和预编译 SDK 静态库。
- 最终 Rough/Wall ONNX 与比赛机 TensorRT engine。
- 五份最终工程路线、1 号场地抽样 PCD、屏幕 UI 和启动脚本。
- Odin 驱动 Apache-2.0 许可证。
未保留:
- 嵌套
.git、__pycache__、日志、备份、构建/安装目录。 - 未被比赛配置引用的候选模型与候选 TensorRT engine。
- 开发计划、任务草稿、重复地图工具和运行时轨迹。
- 原备份中大小为 0 的浏览器静态页面;HTTP JSON API 和屏幕 UI 源码仍保留。
TensorRT engine 与 JetPack、TensorRT 版本及 GPU 架构有关;其他机器应从同名 ONNX 重新生成,不应默认复用比赛 engine。模型哈希见 policies/README.md。
安全与开源状态
- 真机运行前必须架空轮组验证 CAN 映射、方向、零位、急停和限幅。
deployment_contract.hpp是电机映射和动作缩放真值源;参考 YAML 不会自动修改 C++ 契约。- 自研 ROS 包的
package.xml仍保留原工程的Proprietary字段。迁移到 GitHub 公共开源前,需要由项目负责人选择许可证并统一修改;本次整理不代替权利人作许可证决定。 - 当前 Windows 环境只能做静态检查,不能证明 ROS 2、SocketCAN、Odin SDK 或 TensorRT 真机运行成功。