cmvr-es/scripts/meshcat/README.md

81 lines
2.7 KiB
Markdown
Raw Normal View History

# URDF 碰撞体查看器
`view_urdf_collisions.py` 使用 MeshCat 显示 URDF 中的碰撞体。默认按 Isaac Sim 风格
原样显示视觉 STL 和 URDF 材质,并用亮绿色线框显示 `<collision>`。它直接解析 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° 一条