# Gen2 运行时资产 本目录是 `engineai_lab` Python 包内唯一的 Gen2 运行时资产位置。这样 editable 安装、wheel 安装和从其他工作目录启动时都会得到同一份 URDF 与 mesh。 ```text gen2/ ├── README.md ├── urdf/ │ ├── robot.urdf │ ├── robot_simplified_collision.urdf │ └── robot_simplified_collision_mesh.urdf └── meshes/ ├── *_visual.stl ├── *_collision.stl └── collision_simplified/ └── *_box_collision.stl ``` ## 三份 URDF 的职责 | 文件 | 用途 | 是否用于训练 | |---|---|---| | `robot.urdf` | 原始高精度 visual/collision,作为生成源和人工核对基准 | 否 | | `robot_simplified_collision.urdf` | visual mesh + URDF box collision,接触更稳定、计算更轻 | **是,唯一默认训练资产** | | `robot_simplified_collision_mesh.urdf` | visual mesh + 简化 box STL,便于外部工具叠加检查 | 否 | `source/engineai_lab/robots/gen2.py` 明确加载 `robot_simplified_collision.urdf`。文件缺失时会直接报错,不会静默回退到原始高精度碰撞体,避免不同安装环境得到不同训练物理。 URDF 内 mesh 使用相对路径: ```text ../meshes/_visual.stl ../meshes/_collision.stl ../meshes/collision_simplified/_box_collision.stl ``` 不要写机器相关的绝对路径或旧的 `source/gen2_lab` 路径。 ## 重新生成简化碰撞体 生成脚本不会覆盖 `robot.urdf`: ```bash cd /home/xtkuang/Projects/cmvr/RL/cmvr_ai_lab /home/xtkuang/App/anaconda3/envs/engineai_lab/bin/python \ scripts/gen2_generate_simplified_collisions.py ``` 它会更新两份 simplified URDF 和 `meshes/collision_simplified/`,审计 CSV 写入 `outputs/gen2_asset_audit/`。 生成后必须执行: ```bash /home/xtkuang/App/anaconda3/envs/engineai_lab/bin/python \ scripts/gen2_check_rl_readiness.py /home/xtkuang/App/anaconda3/envs/engineai_lab/bin/python \ scripts/gen2_visualize_collisions.py ``` 静态检查期望 `RESULT=PASS`,且 pelvis/torso 高度目标不能显示 `unknown`。可视化 PNG 写入 `outputs/gen2_asset_audit/`,不写回资产包。 ## 修改约束 1. `robot.urdf` 是生成源,先在这里确认 link、joint、limit、mass、inertia 和 mesh。 2. 不要直接手改生成的 simplified URDF 后忘记同步生成脚本。 3. 训练前检查 29 个 link、28 个 joint、全部 mesh 引用和 q0 脚底高度。 4. 历史 `logs/**/params/env.yaml` 中的旧绝对路径只是训练快照,不要批量改写。 5. 供应商原始压缩包放在仓库 `third_party/gen2/`,不进入运行时 wheel。