# URDF 碰撞体查看器 `view_urdf_collisions.py` 使用 MeshCat 显示 URDF 中的碰撞体。默认按 Isaac Sim 风格 原样显示视觉 STL 和 URDF 材质,并用亮绿色线框显示 ``。它直接解析 URDF 的 link、joint 和 origin,不依赖 Pinocchio。 ## 安装 当前 `cmvr-es` Conda 环境已经安装 MeshCat。其他环境可执行: ```bash python -m pip install -r scripts/meshcat/requirements.txt ``` ## 运行 推荐先激活 `cmvr-es` 环境,再进入项目根目录: ```bash conda activate cmvr-es cd /home/lgv/cmvr/0-workspace/cmvr-es python \ scripts/meshcat/view_urdf_collisions.py \ --input model/xiaoyan_description/dual_arm_collision.urdf ``` 不能在 `/home/lgv/Desktop` 等其他目录直接使用上述相对路径,否则 Python 会在当前 目录中查找 `scripts/` 和 `model/`。另外,MeshCat 安装在 `cmvr-es` 环境中,当前提示符 如果是 `(base)`,需要先执行 `conda activate cmvr-es`。 如果需要从任意目录启动,使用完整绝对路径和 `conda run`: ```bash conda run -n cmvr-es python \ /home/lgv/cmvr/0-workspace/cmvr-es/scripts/meshcat/view_urdf_collisions.py \ --input /home/lgv/cmvr/0-workspace/cmvr-es/model/xiaoyan_description/dual_arm_collision.urdf ``` 脚本会打开浏览器,并持续运行到按下 `Ctrl+C`。如果不希望自动打开浏览器,可增加 `--no-browser`,然后手动打开终端输出的 `MeshCat URL`。 需要关闭终端后继续查看,或者希望页面刷新后仍然保留场景时,导出独立 HTML: ```bash conda run -n cmvr-es python \ scripts/meshcat/view_urdf_collisions.py \ --input model/xiaoyan_description/dual_arm_collision.urdf \ --export-html /tmp/dual_arm_collision_meshcat.html ``` 独立 HTML 会嵌入视觉 STL 和碰撞体,因此文件较大,但不再依赖后台 Python 进程或 WebSocket 连接。 只显示碰撞体: ```bash conda run -n cmvr-es python \ scripts/meshcat/view_urdf_collisions.py \ --input model/xiaoyan_description/dual_arm_collision.urdf \ --collision-only ``` 设置关节位置,旋转关节的单位为弧度: ```bash conda run -n cmvr-es python \ scripts/meshcat/view_urdf_collisions.py \ --input model/xiaoyan_description/dual_arm_collision.urdf \ --joint L_SHOULDER_P=0.5 \ --joint R_SHOULDER_P=-0.5 ``` 其他显示选项: - `--solid-collisions`:把碰撞体切换为半透明实体 - `--visual-opacity 0.15`:需要透视内部时降低视觉模型透明度 - `--collision-opacity 0.8`:调整碰撞体线框或实体透明度 - `--collision-color 00ff66`:使用十六进制颜色覆盖默认绿色 - `--collision-cylinder-lines 12`:默认 12 条轴向母线,每 30° 一条