81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
|
|
# 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° 一条
|