[docs] 全面校准项目说明与跨平台资源边界

This commit is contained in:
2026-07-27 19:17:19 +08:00
parent 117b02bec7
commit fbb396708c
37 changed files with 131 additions and 103 deletions
+2
View File
@@ -0,0 +1,2 @@
# Keep structured point-cloud assets byte-identical across platforms.
*.pcd -text
+7 -6
View File
@@ -2,13 +2,14 @@
本目录用于保存 16DOF 轮足项目自身的技术文档和使用说明。
后续建议按主题组织
当前文档结构
```text
01_doc/
├─ architecture/ # 系统架构和数据流
├─ control/ # 控制与强化学习原理
├─ deployment/ # Sim2Sim 和 Sim2Real 部署
hardware/ # 接线、标定和硬件兼容性
└─ user_guide/ # 安装、运行和调试说明
├─ architecture/
│ └─ early_software_stack.md # 第一代训练—仿真—真机闭环
├─ training_evolution.md # v0.4v0.6 训练架构演进
version_history.md # 全项目 Tag 与里程碑
```
具体运行说明放在对应工程目录内,避免在顶层重复并逐渐失真:训练见 `05_software/train/rc_mjlab/`,真机部署见 `05_software/real/`
+1 -1
View File
@@ -34,4 +34,4 @@
比赛得分:1050
```
`model_6800.onnx` 是比赛最终部署工件,不用模型编号替代训练代码版本号。它将在最终比赛部署版本中与运行配置一起归档
`model_6800.onnx` 是比赛最终部署工件,不用模型编号替代训练代码版本号。它已随比赛部署归档;当前规范目录为 `05_software/real/sim2real_ros2_v3/policies/`
+3 -3
View File
@@ -1,6 +1,6 @@
# 版本演进
本项目使用同一条 `16dof` 主线和里程碑 Tag 保存线性演进,不在源码目录中复制历史版本
本项目使用里程碑 Tag 保存时间演进;同一架构的小步迭代不复制目录。ROS 2 的无后缀、`_v2``_v3` 目录分别代表三个架构大版本,并在 `v1.1.0` 中同时保留
| Tag | 阶段 | 核心内容 |
| --- | --- | --- |
@@ -19,7 +19,7 @@
| `v0.11.0` | ROS 2 导航原型 | 简单导航、PCD 交互定位、任务点和 Web 导航调试 |
| `v0.11.1` | Odin 与站姿调参 | 完整 Odin 驱动、TensorRT、多策略切换和调参站姿 |
| `v0.12.0` | 里程计导航联调 | 纯里程计 fallback、A_min 路线、TF 冲突保护和 model_9600 |
| `v1.0.0` | ROS 2 v3 比赛最终部署 | last_not_slalom_1050、model_6800/model_84、最终路线和触控屏 |
| `v1.0.0` | 比赛最终部署初次归档 | last_not_slalom_1050、model_6800/model_84、最终路线和触控屏;当时暂存于无后缀目录 |
| `v1.0.1` | 比赛成果媒体补充 | 最终机器人图片与 1050 分比赛视频 |
| `v1.0.2` | 文档一致性修正 | 统一历史 Tag、当前快照和成果媒体的描述 |
| `v1.1.0` | 三代目录规范化 | 恢复无后缀初版、保留 v2 里程计版、明确最终比赛 v3,并校准训练 README |
@@ -68,7 +68,7 @@
## `v1.0.0` 的比赛最终部署
- 原始 `sim2real_ros2_v2(last_not_slalom_1050)`式整理`real/sim2real_ros2_v3`;这是第三版、最终 ROS 2/C++ 真机工程,`1050` 是比赛成绩,不是模型编号。
- 首次归档原始 `sim2real_ros2_v2(last_not_slalom_1050)` 最终 ROS 2/C++ 真机工程;该 Tag 中暂存于无后缀 `real/sim2real_ros2`,目录命名在 `v1.1.0` 才修正为 `real/sim2real_ros2_v3``1050` 是比赛成绩,不是模型编号。
- Rough 使用 `model_6800`Wall 使用 `model_84`,Crawl 按比赛配置使用 IK 后端。
- 保留最终五份路线、1 号场地抽样 PCD、Odin 驱动、CAN 硬件桥、命令仲裁、导航和 Orin 触控屏 UI。
- 最终配置默认命令源为 `NAV`、定位模式为 `relocal`,但真实 Odin `1hao.bin` 不在备份中,重定位闭环需要从比赛设备补回。
+2
View File
@@ -3,3 +3,5 @@
本目录用于保存 16DOF 轮足机器人的自研电路、接线图、BOM、传感器与计算平台说明。
第三方硬件资料不作为自研成果提交。
当前目录仅有范围说明,尚未归档 16DOF 平台的自研原理图、PCB、BOM 或正式接线图,不应将本目录视为已完成的硬件开源包。
+2
View File
@@ -3,3 +3,5 @@
本目录用于保存运行在 MCU 或其他嵌入式控制器上的固件源码和构建工程。
编译生成的 `.hex``.bin``.elf``.axf` 等文件不进入源码目录,可在需要时作为 Release 附件发布。
当前 16DOF 主线尚未在本目录归档 MCU/Keil 工程;该目录是预留入口。8DOF 大疆 A 板 Keil 工程由 `8dof` 分支和 `v0.1.0` 保存。
+2 -2
View File
@@ -22,7 +22,7 @@
## `sim2real_v2`
Python Sim2Real v2,保留 `53D -> 16D` 策略接口,并增加电机反馈新鲜度、Odin odom 诊断、命令平滑、Web 运行时诊断和安全监控工具。该版本对应重排主线的 `v0.9.0`
Python Sim2Real v2,保留 `53D -> 16D` 策略接口,并增加电机反馈新鲜度、Odin odom 诊断、命令平滑、Web 运行时诊断和安全监控工具,对应 `v0.9.0`
部署说明见 [`sim2real_v2/README.md`](sim2real_v2/README.md) 与 [`sim2real_v2/DEPLOYMENT.md`](sim2real_v2/DEPLOYMENT.md)。
@@ -40,7 +40,7 @@ Python Sim2Real v2,保留 `53D -> 16D` 策略接口,并增加电机反馈新
`v0.12.0` 仍在同一路径上形成里程计导航联调快照:固定纯里程计模式,加入 odom fallback 的 TF 冲突保护、A_min 路线和多地图工具;默认 Rough 策略为 `model_9600`,默认站姿回到比赛站姿。当前该目录保持 `v0.12.0` 快照,阶段说明见 [`sim2real_ros2_v2/README.md`](sim2real_ros2_v2/README.md)。
### `sim2real_ros2_v3`(最终比赛版`v1.0.0`
### `sim2real_ros2_v3`(最终比赛版;代码快照 `v1.0.0`,规范目录 `v1.1.0`
第三版来自原始目录 `sim2real_ros2_v2(last_not_slalom_1050)`,整理时正式命名为 `sim2real_ros2_v3`。它是 1050 分比赛最终部署,包含 `model_6800` Rough、`model_84` Wall、最终路线、完整 Odin 驱动、CAN 和触控屏。部署说明见 [`sim2real_ros2_v3/README.md`](sim2real_ros2_v3/README.md)。
+4 -2
View File
@@ -1,10 +1,12 @@
# `sim2real` 部署说明
> 版本范围:第一代 Python Sim2Real`v0.3.0`)。本文“当前”均指该快照。
## 模型
当前只使用:
- `sim2real/policies/model_rough.pt`
- `policies/model_rough.pt`
## 模型契约
@@ -38,7 +40,7 @@
## 纯 Python 命令
默认前提:当前目录`sim2real/`
默认前提:当前目录是 `05_software/real/sim2real/`
```bash
python -m pip install -r requirements-orin.txt
@@ -1,9 +1,11 @@
# `FACTS_AND_ASSUMPTIONS`
> 版本范围:第一代 Python Sim2Real`v0.3.0`)。事实项只适用于该快照。
## 已确认
- 当前部署模型:`sim2real/policies/model_rough.pt`
- 源模型:`model_2000.pt`
- 当前部署模型:`policies/model_rough.pt`
- 原始说明记录的源模型`model_2000.pt`;同名文件未随本目录归档
- actor 输入:`53D`
- actor 输出:`16D`
- 当前 actor 不吃 `base_lin_vel`
@@ -1,5 +1,7 @@
# `Orin Nano` 部署说明
> 版本范围:第一代 Python Sim2Real`v0.3.0`)。本文不是最终 ROS 2 v3 部署指南。
## 是否必须转 ONNX
不必须。
@@ -26,7 +28,7 @@
## 纯 Python 部署命令
默认前提:当前目录`sim2real/`
默认前提:当前目录是 `05_software/real/sim2real/`
```bash
python3 -m pip install -r requirements-orin.txt
+12 -11
View File
@@ -1,11 +1,13 @@
# `sim2real`
当前版本只部署现在这套 `53D -> 16D` 模型,不再兼容旧版 `crawl`、多策略和历史观测
本目录是第一代 Python Sim2Real 快照,对应 `v0.3.0`。下文“当前”均指该历史快照,不指仓库 `main` 的最终 ROS 2 v3
该快照只部署当时的 `53D -> 16D` Rough 模型,不兼容更早的 Crawl、多策略和其他历史观测契约。
## 当前部署模型
- 使用文件:`sim2real/policies/model_rough.pt`
- 来源文件`model_2000.pt`
- 使用文件:`policies/model_rough.pt`
- 原始说明记录的来源名`model_2000.pt`;该同名源文件未随本目录归档,仓库只保留重命名后的 `policies/model_rough.pt`
## 当前 actor 输入
@@ -52,7 +54,7 @@
## 启动命令
默认前提:当前目录`sim2real/`
默认前提:当前目录是 `05_software/real/sim2real/`
`python`
@@ -65,13 +67,12 @@ python main.py
python web/server.py --host 0.0.0.0 --port 8080
```
Windows 本机:
Windows 本机可使用目标虚拟环境中的 Python;不要依赖个人机器的绝对安装路径
```bash
D:\Minicoda3\envs\py10\python.exe -m pip install -r requirements-orin.txt
D:\Minicoda3\envs\py10\python.exe tools\alignment_check.py --policy policies\model_rough.pt --manifest deployment_manifest.yaml
D:\Minicoda3\envs\py10\python.exe tools\standalone_check.py
D:\Minicoda3\envs\py10\python.exe main.py
D:\Minicoda3\envs\py10\python.exe web\server.py --host 0.0.0.0 --port 8080
python -m pip install -r requirements-orin.txt
python tools\alignment_check.py --policy policies\model_rough.pt --manifest deployment_manifest.yaml
python tools\standalone_check.py
python main.py
python web\server.py --host 0.0.0.0 --port 8080
```
#sim2real/policies/model_rough.pt
@@ -1,6 +1,6 @@
# ROS2 C++ Sim2Real 运动控制栈 - 部署指南
# ROS 2/C++ Sim2Real 初版部署指南
本工作区提供了一个自包含、独立的 C++ ROS2 Humble 实现,用于在 Jetson Orin 目标机上部署轮腿四足机器人控制策略
本工作区保存 `v0.10.0` ROS 2 Humble/C++ 初版。控制栈主体源码已归档,但 Odin 驱动源码在该快照中缺失,因此不是自包含部署包;完成真实传感器闭环前必须补充兼容驱动
---
+7 -7
View File
@@ -1,6 +1,6 @@
# ROS 2/C++ Sim2Real 初版
本目录归档 `real/sim2real_ros2`,对应重排主线的 `v0.10.0`。这是轮腿机器人 Sim2Real 部署栈从 Python 运行时迁移到 ROS 2 + C++ 的第一版系统工程。
本目录归档 `real/sim2real_ros2`,对应 `v0.10.0`。这是轮腿机器人 Sim2Real 部署栈从 Python 运行时迁移到 ROS 2 + C++ 的第一版系统工程。
本工程保留当前 `sim2real` 已验证的部署契约,同时将运行时热路径迁移到 C++:
@@ -26,7 +26,7 @@
- `src/sim2real_bringup`
统一启动文件与运行时参数配置。
- `src/odin_ros_driver`
Odin 传感器 ROS 2 驱动(含 IMU、点云里程计发布
仅保留依赖边界说明;原始 `v0.10.0` 快照没有归档 Odin 驱动源码,不能独立提供 IMU、点云里程计发布。
- `docs`
架构说明与迁移计划。
@@ -58,11 +58,11 @@ Nav2 / cmd_vel ------------------------------> sim2real_runtime
迁移过程中以下文件被视为真值源:
- `sim2real/deployment_manifest.yaml`
- `sim2real/interface/motor_mapping.py`
- `sim2real/interface/real_io.py`
- `sim2real/policy/policy_runner.py`
- `sim2real/web/session.py`
- `../sim2real/deployment_manifest.yaml`
- `../sim2real/interface/motor_mapping.py`
- `../sim2real/interface/real_io.py`
- `../sim2real/policy/policy_runner.py`
- `../sim2real/web/session.py`
## 注意事项
@@ -1,5 +1,7 @@
# 迁移计划
> 版本范围:ROS 2/C++ 初版(`v0.10.0`)。这是历史迁移记录,不是最终比赛版验收报告;本快照未归档 Odin 驱动源码。
## Phase 1: 硬件核心迁移 ✅ 已完成
将当前高频热路径从 Python 迁出。
@@ -39,11 +41,7 @@
## Phase 3: ROS 2 系统集成 ✅ 已完成
参考的源项目:
- `00_ reference/odin_ros_driver`
- `00_ reference/EDULITE_A3/el_a3_ros`
- `00_ reference/rl_sar`
参考过的外部项目包括 Odin ROS 驱动、EDULITE A3 ROS 工程和 RL-SAR;这些外部参考目录不属于本仓库公开内容。
交付物:
@@ -76,5 +74,5 @@
| 策略运行时 | `sim2real_runtime_node` | 50Hz ONNX 推理 + 53D 观测 + raw_action clip |
| 里程计中继 | `odom_relay_node` | /odin1/odometry → /odom + odom→base_link TF |
| 导航栈 | Nav2 全套节点 | AMCL + costmap + DWB + Navfn + BT + lifecycle |
| 传感器驱动 | `odin_ros_driver` | IMU + 点云 + 里程计原始发布 |
| 点云转换 | `pointcloud_to_laserscan` | /odin1/cloud_slam → /scan (供 AMCL 使用) |
| 传感器驱动 | 外部 Odin 驱动 | 本快照未归档源码,不能视为自包含组件 |
| 点云转换 | `pointcloud_to_laserscan` | 外部 ROS 包;/odin1/cloud_slam → /scan供 AMCL 使用 |
@@ -1,6 +1,6 @@
# ROS2 C++ Sim2Real 运动控制栈 - 部署指南
# ROS 2/C++ Sim2Real v2 部署指南
本工作区提供了一个自包含、独立的 C++ ROS2 Humble 实现,用于在 Jetson Orin 目标机上部署轮腿四足机器人控制策略
本工作区保存 `v0.12.0` 里程计联调快照,包含 ROS 2 Humble/C++ 主体和 Odin 驱动。系统依赖、设备标定和 TensorRT engine 仍与目标机环境绑定,不能仅凭源码声明在新设备上已复现
---
@@ -90,7 +90,7 @@ chmod +x start_sim2real.sh
强烈推荐使用 Docker 隔离依赖,避免 Jetson Orin 上的库版本冲突。
### 步骤 1:构建镜像
确保在 `sim2real_ros2` 目录中(包含 `Dockerfile`):
确保在 `sim2real_ros2_v2` 目录中(包含 `Dockerfile`):
```bash
# 使用标准 docker build
docker build -t sim2real_ros2:latest .
+1 -1
View File
@@ -1,6 +1,6 @@
# ROS 2 Sim2Real v2:里程计导航联调
本目录归档 `real/sim2real_ros2_v2(odom)`,对应重排主线的 `v0.12.0`。该阶段在 `v0.11.1` 的 Odin/TensorRT 与站姿调参基础上,固定纯里程计模式,增加 odom fallback 的 TF 冲突保护、A_min 路线和地图工具。
本目录归档原始 `real/sim2real_ros2_v2(odom)`,对应 `v0.12.0`。该阶段在 `v0.11.1` 的 Odin/TensorRT 与站姿调参基础上,固定纯里程计模式,增加 odom fallback 的 TF 冲突保护、A_min 路线和地图工具。
本工程保留当前 `sim2real` 已验证的部署契约,同时将运行时热路径迁移到 C++:
@@ -1,4 +1,4 @@
# sim2real_ros2 架构说明
# sim2real_ros2_v2 架构说明
## 设计目标
@@ -1,5 +1,7 @@
# 迁移计划
> 版本范围:ROS 2 v2 里程计联调快照(`v0.12.0`)。完成标记表示该快照中的代码迁移状态,不等于已在任意新硬件环境复现。
## Phase 1: 硬件核心迁移 ✅ 已完成
将当前高频热路径从 Python 迁出。
@@ -39,11 +41,7 @@
## Phase 3: ROS 2 系统集成 ✅ 已完成
参考的源项目:
- `00_ reference/odin_ros_driver`
- `00_ reference/EDULITE_A3/el_a3_ros`
- `00_ reference/rl_sar`
参考过的外部项目包括 Odin ROS 驱动、EDULITE A3 ROS 工程和 RL-SAR;外部参考目录不属于本仓库公开内容。
交付物:
@@ -77,4 +75,4 @@
| 里程计中继 | `odom_relay_node` | /odin1/odometry → /odom + odom→base_link TF |
| 导航栈 | Nav2 全套节点 | AMCL + costmap + DWB + Navfn + BT + lifecycle |
| 传感器驱动 | `odin_ros_driver` | IMU + 点云 + 里程计原始发布 |
| 点云转换 | `pointcloud_to_laserscan` | /odin1/cloud_slam → /scan (供 AMCL 使用) |
| 点云转换 | `pointcloud_to_laserscan` | 外部 ROS 包;/odin1/cloud_slam → /scan供 AMCL 使用 |
@@ -1,6 +1,6 @@
# sim2real_ros2 遥控器调用说明
# sim2real_ros2_v2 遥控器调用说明
本文档说明如何在 `sim2real_ros2` 中调用已接入的 SBUS UART 遥控器节点,以及执行后系统会产生什么效果。
本文档说明如何在 `sim2real_ros2_v2` 中调用已接入的 SBUS UART 遥控器节点,以及执行后系统会产生什么效果。
## 1. 当前接入关系
@@ -1,4 +1,4 @@
# sim2real_ros2 Web UDP 调试说明
# sim2real_ros2_v2 Web UDP 调试说明
本文档说明本次新增的最小 Web 调试链路。
@@ -7,3 +7,5 @@
| `map_b.pcd` | 1,080,047 | 4 | 270,012 | 8,680,283 B | `F17FC7E188C772D48E8D3FE20E3A934AFCDF59357C27BCCDCAC3C7E9AD1D1CB7` | `F3052431F217DE8FFFE87726F8E547A59C65048B0285F02AF4803C5F4E4C1B42` |
| `A_min.pcd` | 683,908 | 3 | 227,969 | 7,300,173 B | `77C884B17D78C4D157F84093BFEA0729FA25382C70E706C4BA12913A3C90ED20` | `CC4556D472BE6E5B232B9BFEE43F5F337D710F88E88D9B90994368C580327DC1` |
| `C.pcd` | 3,186,653 | 11 | 289,696 | 9,040,786 B | `C5C7E60B06A0FFEA15E55C14B8CFAFBC8525371C8C3AC9C72821AB736AED8A6C` | `1FC4124642D934460811DBF62EBE9C5C9CF30668BC42E4782B18F3C002ED1A25` |
大小和 SHA-256 均按 Git 中保存的字节计算;根目录 `.gitattributes` 禁止对 `*.pcd` 做跨平台换行转换。
@@ -9,7 +9,7 @@ This is not the Nano runtime Web UI. Use it before a run to inspect the map and
From the repository root:
```powershell
python .\tools\pcd_map_viewer\server.py --http-port 8090
python .\05_software\real\sim2real_ros2_v2\tools\pcd_map_viewer\server.py --http-port 8090
```
Open:
@@ -84,21 +84,15 @@ waypoints:
obstacle_name: wall_1
```
Default runtime route:
The current `v0.12.0` runtime route is configured separately in `src/sim2real_bringup/config/runtime.yaml`:
```text
map/routes/map1/test_route.yaml
map/routes/A_min/A_min_route.json
```
## Runtime Test
```bash
ros2 topic pub --once /route_runner/cmd std_msgs/msg/String "{data: reload}"
ros2 topic pub --once /route_runner/cmd std_msgs/msg/String "{data: start}"
ros2 topic pub --once /route_runner/cmd std_msgs/msg/String "{data: stop}"
```
The editor can also save YAML, but the archived runtime does not provide the `/route_runner/cmd` interface described by an earlier draft. Use the current JSON task file and Web/navigation controls documented by this snapshot.
See also:
- [Maps And Routes](../../docs/ROUTES_AND_MAPS.md)
- [Common Commands](../../docs/COMMANDS.md)
- [Archived map data](../../map/README.md)
- [ROS 2 v2 snapshot](../../README.md)
@@ -7,7 +7,7 @@
在仓库根目录:
```powershell
python .\tools\pcd_map_viewer\server.py --http-port 8090
python .\05_software\real\sim2real_ros2_v2\tools\pcd_map_viewer\server.py --http-port 8090
```
打开:
@@ -26,3 +26,7 @@ http://127.0.0.1:8090
- `tolerance`
不保存 `z``action`
当前 `v0.12.0` 运行配置使用 `map/routes/A_min/A_min_route.json`。编辑器也能保存 YAML,但本快照没有旧文档曾描述的 `/route_runner/cmd` 控制接口。
地图抽样边界见 [`../../map/README.md`](../../map/README.md),版本说明见 [`../../README.md`](../../README.md)。
@@ -15,7 +15,7 @@ Use this tool only when you want the browser and HTTP server to run on Windows w
From the repository root:
```powershell
python .\tools\win_web_debug\server.py --nano-host <nano-ip> --http-port 8088
python .\05_software\real\sim2real_ros2_v2\tools\win_web_debug\server.py --nano-host <nano-ip> --http-port 8088
```
Or from this folder:
@@ -40,5 +40,5 @@ src/sim2real_runtime/src/web_udp_bridge_node.py
See:
- [Runtime Web](../../docs/RUNTIME_WEB.md)
- [Common Commands](../../docs/COMMANDS.md)
- [Runtime Web and UDP bridge](../../docs/WEB_DEBUG_USAGE.md)
- [ROS 2 v2 snapshot](../../README.md)
@@ -13,7 +13,7 @@ http://<nano-ip>:18080
在仓库根目录:
```powershell
python .\tools\win_web_debug\server.py --nano-host <nano-ip> --http-port 8088
python .\05_software\real\sim2real_ros2_v2\tools\win_web_debug\server.py --nano-host <nano-ip> --http-port 8088
```
打开:
@@ -21,3 +21,5 @@ python .\tools\win_web_debug\server.py --nano-host <nano-ip> --http-port 8088
```text
http://127.0.0.1:8088
```
运行时 Web 与 UDP 配置见 [`../../docs/WEB_DEBUG_USAGE.md`](../../docs/WEB_DEBUG_USAGE.md)。
@@ -1,6 +1,6 @@
# ROS2 C++ Sim2Real 运动控制栈 - 部署指南
# ROS 2/C++ Sim2Real v3 比赛部署指南
本工作区提供了一个自包含、独立的 C++ ROS2 Humble 实现,用于在 Jetson Orin 目标机上部署轮腿四足机器人控制策略
本工作区保存最终比赛 ROS 2 Humble/C++ 部署主体。比赛使用的 Odin `1hao.bin` 未随备份归档,TensorRT engine 也与比赛机环境绑定,因此默认 `relocal` 闭环不是开箱即用;缺少真实地图时应按主 README 使用纯里程计模式
---
+2 -2
View File
@@ -2,9 +2,9 @@
本目录由原始 `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`
比赛代码快照首次归档于 `v1.0.0`当时暂存于无后缀目录;`v1.1.0` 恢复无后缀初版并将本工程规范为 v3。训练架构和策略来源见 `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` 为比赛部署基线
`v1.0.1` 只在比赛代码快照基础上补充机器人图片和比赛视频,没有改变本目录运行逻辑
## 系统闭环
@@ -1,5 +1,7 @@
# 迁移计划
> 版本范围:最终比赛 ROS 2 v3。本文继承自迁移阶段,用于解释架构来源,不是比赛部署资产完整性或新环境复现证明。
## Phase 1: 硬件核心迁移 ✅ 已完成
将当前高频热路径从 Python 迁出。
@@ -39,11 +41,7 @@
## Phase 3: ROS 2 系统集成 ✅ 已完成
参考的源项目:
- `00_ reference/odin_ros_driver`
- `00_ reference/EDULITE_A3/el_a3_ros`
- `00_ reference/rl_sar`
参考过的外部项目包括 Odin ROS 驱动、EDULITE A3 ROS 工程和 RL-SAR;外部参考目录不属于本仓库公开内容。
交付物:
@@ -77,4 +75,4 @@
| 里程计中继 | `odom_relay_node` | /odin1/odometry → /odom + odom→base_link TF |
| 导航栈 | Nav2 全套节点 | AMCL + costmap + DWB + Navfn + BT + lifecycle |
| 传感器驱动 | `odin_ros_driver` | IMU + 点云 + 里程计原始发布 |
| 点云转换 | `pointcloud_to_laserscan` | /odin1/cloud_slam → /scan (供 AMCL 使用) |
| 点云转换 | `pointcloud_to_laserscan` | 外部 ROS 包;/odin1/cloud_slam → /scan供 AMCL 使用 |
@@ -4,6 +4,8 @@
`1hao.pcd``v0.8.1` 导航工具中同一份抽样点云,包含 199,215 点、大小 9,876,010 字节,SHA-256 为 `48B231C52BECA51316F352300C8B2046133E92359E0855227D93DEB0D927AD34`。它用于本地规划和路线显示,不替代原始高密度点云。
上述大小和 SHA-256 按 Git 中保存的 LF 字节计算;根目录 `.gitattributes` 禁止对 `*.pcd` 做跨平台换行转换。
## 缺失的 Odin 重定位地图
比赛配置需要 Odin 专用二进制地图 `1hao.bin`,但源备份没有该文件。源目录中另有两个名称和时间不同的 `.bin`,无法证明它们就是比赛使用地图,因此没有复制或重命名。
+2 -2
View File
@@ -1,13 +1,13 @@
# 真机部署与验证指南
本文档面向当前目录 `shiji/sim2real (10)/sim2real`,用于减少上机排错时间。默认不修改已验证的电机映射、方向、零位和策略观测。
本文档面向仓库中的 `05_software/real/sim2real_v2``v0.9.0`,用于减少上机排错时间。默认不修改该快照中已验证的电机映射、方向、零位和策略观测。
## 1. 前期环境
推荐在 Orin / Linux 上运行:
```bash
cd sim2real
cd 05_software/real/sim2real_v2
python -m pip install -r requirements-orin.txt
```
@@ -1,10 +1,12 @@
# `FACTS_AND_ASSUMPTIONS`
> 版本范围:Python Sim2Real v2`v0.9.0`)。事实项只适用于该快照。
## 已确认
- 当前部署模型:默认优先使用 `sim2real/policies/model_rough.onnx`
- 当前源模型/fallback`sim2real/policies/model_rough.pt`
- 源模型:`model_2000.pt`
- 当前部署模型:默认优先使用 `policies/model_rough.onnx`
- 当前源模型/fallback`policies/model_rough.pt`
- 原始说明记录的源模型`model_2000.pt`;同名文件未随本目录归档
- actor 输入:`53D`
- actor 输出:`16D`
- 当前 actor 不吃 `base_lin_vel`
@@ -1,5 +1,7 @@
# `Orin Nano` 部署说明
> 版本范围:Python Sim2Real v2`v0.9.0`)。本文不是最终 ROS 2 v3 部署指南。
## 是否必须转 ONNX
不必须。
@@ -26,7 +28,7 @@
## 纯 Python 部署命令
默认前提:当前目录`sim2real/`
默认前提:当前目录是 `05_software/real/sim2real_v2/`
```bash
python3 -m pip install -r requirements-orin.txt
+1 -1
View File
@@ -1,6 +1,6 @@
# Python Sim2Real v2
本目录归档 `real/sim2real_v2` 版本,对应 Python 真机部署从第一代闭环继续演进后的版本节点。该阶段保持 `53D -> 16D` 策略契约,重点完善电机反馈判断、IMU/Odin 可观测性、Web 调试和运行时诊断;后续 ROS 2/C++ 版本另行归档。
本目录归档 Python Sim2Real v2,对应 `v0.9.0`。该阶段从第一代闭环继续演进,保持 `53D -> 16D` 策略契约,重点完善电机反馈判断、IMU/Odin 可观测性、Web 调试和运行时诊断;后续 ROS 2/C++ 版本另行归档。下文“当前”均指该版本快照。
## 当前控制链路
+2 -2
View File
@@ -1,8 +1,8 @@
# 强化学习与仿真工程
`rc_mjlab/` 保存 16DOF 轮足机器人的当前训练与 Sim2Sim 工程。历史快照由 Git Tag 保留,不在目录中复制 `old``new``final` 版本。
`rc_mjlab/` 保存 16DOF 轮足机器人的训练、MuJoCo、Sim2Sim 和导航工具累积工作树。历史训练架构由 Git Tag 保留,不在目录中复制 `old``new``final` 版本。
当前内容对应 `v0.8.1`:训练代码保持 `v0.6.0` 的比赛架构,包含后期 MuJoCo、Sim2Sim、比赛最终 Rough ONNX 策略,并补充完整导航打点工具、路线迭代和抽样 PCD。训练过程可能先获得基模,再调整奖励、课程和环境参数继续训练;模型 checkpoint 的变化不等同于软件架构变化。
当前工作树由多个里程碑累积:训练主体以 `v0.6.0``best` 比赛架构为基础,`v0.7.0``v0.8.1` 依次补充 MuJoCo、Sim2Sim、比赛 Rough ONNX 和导航打点工具。训练过程可能先获得基模,再调整奖励、课程和环境参数继续训练;模型 checkpoint 的变化不等同于软件架构变化。
## 内容
@@ -63,6 +63,8 @@ uv run --with-requirements .\sim2sim\requirements.txt `
| `pcd/1hao.pcd` | 9,163,893 | 46 | 199,215 | 9,876,010 B | `48B231C52BECA51316F352300C8B2046133E92359E0855227D93DEB0D927AD34` |
| `pcd/2hao.pcd` | 10,043,048 | 52 | 193,136 | 9,719,736 B | `714516A7A726D46311A58507149FBC93D622616BE79C59FFED622274D6526B1F` |
表中的大小和 SHA-256 对应 Git 仓库保存的 LF 字节。Windows 若使用 `core.autocrlf=true`,旧检出可能把 ASCII PCD 转成 CRLF,导致工作区大小和哈希变化;仓库通过根目录 `.gitattributes``*.pcd` 标记为不做文本换行转换。已有旧工作区需要重新检出后再核对哈希。
复现抽样:
```powershell
+7 -3
View File
@@ -26,8 +26,12 @@
### 最终比赛视频
- 视频:[`videos/比赛视频.mp4`](videos/比赛视频.mp4)
- 代码基线:[`v1.0.0`](../tree/v1.0.0)
- 媒体补充[`v1.0.1`](../tree/v1.0.1)
- 代码初次归档 Tag`v1.0.0`
- 媒体补充 Tag`v1.0.1`
- 规范三代目录 Tag`v1.1.0`
- 成绩:Robocon 仿生足式障碍赛 1050 分,第七名(前 5%)
- 时长:约 39.7 秒
- 画面:1906 × 1080
- 编码:H.264/AAC
该视频约 50.6 MB。当前先随仓库提交,后续同步 GitHub 时若超过平台单文件限制,建议改用 Git LFS 或作为 Release 附件发布
该视频约 50.6 MB,已随仓库提交。它低于 GitHub 100 MB 单文件限制,但超过 GitHub 建议的 50 MB 阈值;公开同步时优先考虑 Git LFS 或 Release 附件,避免普通 Git 历史持续膨胀
+12 -6
View File
@@ -2,7 +2,7 @@
RC_WheelLeg 是山东华宇工学院 16DOF 串联轮足机器人项目。
当前 `16dof` 分支用于整理 16DOF 机械、强化学习训练、Sim2Sim、Sim2Real、ROS 2 部署和比赛版本。机械资料、比赛训练架构、后期 MuJoCo/Sim2Sim 和导航打点工具已经完成整理
当前对外入口为 `main``16dof``16dof-rebuild` 保留同一条 16DOF 版本演进主线。机械资料、训练、MuJoCo/Sim2Sim、导航工具和三代 ROS 2 真机工程已整理至 `v1.1.0`
## 平台概览
@@ -41,7 +41,8 @@ RC_WheelLeg/
- [x] 整理导航地图、打点工具、路线迭代和抽样 PCD
- [x] 整理 Python Sim2Real v2、ROS 2/C++ 初版、导航原型、Odin/TensorRT 调参版与 odom 联调版
- [ ] 核对比赛机械与仿真模型参数
- [ ] 整理 URDF/MJCF 机器人描述
- [x] 整理 MJCF 机器人描述与网格
- [ ] 补充独立 URDF,并核对其与 CAD/MJCF 的参数一致性
- [x] 整理统一训练、ROS 2 和比赛版本
机械资料入口见 [`02_mechanical/README.md`](02_mechanical/README.md)。
@@ -54,19 +55,24 @@ RC_WheelLeg/
第一代 Sim2Real 真机测试记录,时长约 41 秒。点击预览图播放或下载原视频。
## 比赛最终成果(v1.0.1
## 比赛最终成果媒体v1.0.1
[![比赛最终机器人](06_assets/images/cf94fb6d9cfa01079a4f9fe082428dc.png)](06_assets/images/cf94fb6d9cfa01079a4f9fe082428dc.png)
最终比赛视频:[`06_assets/videos/比赛视频.mp4`](06_assets/videos/比赛视频.mp4)
代码部署基线为 `v1.0.0``v1.0.1` 补充最终机器人图片和比赛视频。Robocon 仿生足式障碍赛成绩为 1050 分、第七名(前 5%)。更多媒体说明见 [`06_assets/README.md`](06_assets/README.md)。
比赛代码最初归档于 `v1.0.0``v1.0.1` 补充最终机器人图片和比赛视频`v1.1.0` 进一步把最终工程明确命名为 `sim2real_ros2_v3`。Robocon 仿生足式障碍赛成绩为 1050 分、第七名(前 5%)。更多媒体说明见 [`06_assets/README.md`](06_assets/README.md)。
## 版本管理
版本里程碑与主要变化见 [`01_doc/version_history.md`](01_doc/version_history.md)。
- `8dof` 分支和 `v0.1.0` Tag 保存第一代 8DOF 实机版本。
- `16dof` 分支承载第二代轮足平台的完整演进。
- 线性演进阶段使用 Commit、Tag 和 Release 保存,不复制 `old``final``v2` 目录。
- `main` 是当前对外版本,`16dof``16dof-rebuild` 保存并同步第二代轮足平台的完整演进。
- 同一架构内的小步迭代使用 Commit、Tag 和 Release 保存,不复制 `old``new``final` 目录。
- `sim2real_ros2``sim2real_ros2_v2``sim2real_ros2_v3` 是三个明确的架构大版本,不是随意复制的临时备份目录。
- 只有需要长期并行维护的不兼容路线才建立独立分支。
## 开源边界
仓库当前尚未设置覆盖自研代码的顶层许可证;Odin 驱动和本地 mjlab 各自保留上游许可证。同步到 GitHub 公共发布前,需要由权利人确定顶层许可证,并核对第三方模型、SDK 静态库和媒体文件的再分发权限。