---
title: RSReBot URDF 与 MuJoCo 模型
description: RSReBot 机械臂 URDF、STL、MuJoCo ZIP、关节参数和需要实测复核内容的完整说明。
---

## 目标

这一页记录 RSReBot 机械臂从 DeDeUrdf 导出的 URDF/MuJoCo 模型结构，方便读者理解文件应该怎么放、关节参数在哪里、如何用 MuJoCo 做第一次加载验证。

RSReBot 公开示例资产：

| 文件 | 大小 | 用途 | 下载 |
| --- | --- | --- | --- |
| `RSReBot.f3z` | 约 17.8MB | Fusion 360 原始项目归档 | [下载](https://pub-6c1e280a27614b05891bfd818585735e.r2.dev/RSReBot/RSReBot.f3z) |
| `RSReBot.step` | 约 16.3MB | 通用 CAD 交换格式 | [下载](https://pub-6c1e280a27614b05891bfd818585735e.r2.dev/RSReBot/RSReBot.step) |
| `RSReBot_accurate_web_project.zip` | 约 9.6MB | DeDeUrdf 可继续编辑项目，适合导入网页端继续调参 | [下载](https://pub-6c1e280a27614b05891bfd818585735e.r2.dev/RSReBot/RSReBot_accurate_web_project.zip) |
| `RSReBot_fluxweave_dm_mujoco_urdf.zip` | 约 20.2MB | MuJoCo 可加载 URDF 包，适合本页和控制脚本验证 | [下载](https://pub-6c1e280a27614b05891bfd818585735e.r2.dev/RSReBot/RSReBot_fluxweave_dm_mujoco_urdf.zip) |

本仓库保留了一个可复现示例：

```text
examples/rsrebot-mujoco-control/
  README.md
  scripts/
    download_rsrebot_assets.py
    build_rsrebot_control_model.py
    run_rsrebot_control_demo.py
  urdf/
    RSReBot_fluxweave_dm_mujoco.urdf
  reference/
    reBot-DevArm_fixend_control.xml
  artifacts/
    RSReBot_fluxweave_dm_control.xml
```

其中：

| 文件 | 作用 |
| --- | --- |
| `urdf/RSReBot_fluxweave_dm_mujoco.urdf` | DeDeUrdf 导出的 RSReBot 机械臂 URDF |
| `reference/reBot-DevArm_fixend_control.xml` | DMReBot/reBotArm 参考控制模型，用来补惯量、限位和执行器 |
| `artifacts/RSReBot_fluxweave_dm_control.xml` | 已生成的一份 MuJoCo 控制 XML 参考产物 |
| `scripts/download_rsrebot_assets.py` | 下载公开 STL 示例并打包为 MuJoCo URDF ZIP |
| `scripts/build_rsrebot_control_model.py` | 从 URDF ZIP 生成可控 MuJoCo XML/MJB |
| `scripts/run_rsrebot_control_demo.py` | 跑轨迹控制并录制视频 |

STL mesh 文件体积较大，没有直接提交到仓库。需要时可以用脚本从 DeDeUrdf 线上示例下载。

## 获取示例 STL 和 ZIP

在仓库根目录执行：

```bash
python examples/rsrebot-mujoco-control/scripts/download_rsrebot_assets.py \
  --output-dir build/rsrebot-assets
```

输出目录：

```text
build/rsrebot-assets/
  RSReBot_fluxweave_dm_mujoco_urdf.zip
  source/
    project.fluxweave.json
    README_mujoco.txt
    urdf/
      RSReBot_fluxweave_dm_mujoco.urdf
    meshes/
      base.stl
      link1.stl
      link2.stl
      link3.stl
      link4.stl
      link5.stl
      link6.stl
      end.stl
```

如果你已经从 DeDeUrdf 网页端导出了 MuJoCo ZIP，也可以不用下载脚本，直接把自己的 ZIP 放到 `build/` 或任意目录，然后在后续命令里通过 `--source-zip` 指向它。也可以直接下载公开的 MuJoCo URDF ZIP：

```bash
mkdir -p build/rsrebot-assets
curl -L -o build/rsrebot-assets/RSReBot_fluxweave_dm_mujoco_urdf.zip \
  https://pub-6c1e280a27614b05891bfd818585735e.r2.dev/RSReBot/RSReBot_fluxweave_dm_mujoco_urdf.zip
```

## URDF 主体结构

当前 URDF 是一个链式 6 轴机械臂，末端用 fixed joint 连接夹爪/工具模型。

```text
base_link
  -> joint1 -> link1
  -> joint2 -> link2
  -> joint3 -> link3
  -> joint4 -> link4
  -> joint5 -> link5
  -> joint6 -> link6
  -> end_joint -> end_link
```

对应 STL：

| link | mesh |
| --- | --- |
| `base_link` | `base.stl` |
| `link1` | `link1.stl` |
| `link2` | `link2.stl` |
| `link3` | `link3.stl` |
| `link4` | `link4.stl` |
| `link5` | `link5.stl` |
| `link6` | `link6.stl` |
| `end_link` | `end.stl` |

## 当前关节参数

URDF 里的单位使用米和弧度。表格中的 `0.086800` 表示 86.8mm。

| joint | parent -> child | type | origin xyz (m) | rpy (rad) | axis | limit |
| --- | --- | --- | --- | --- | --- | --- |
| `joint1` | `base_link` -> `link1` | revolute | `-0.000084 0.000000 0.086800` | `0 0 0` | `0 0 1` | `[-2.8, 2.8]` |
| `joint2` | `link1` -> `link2` | revolute | `0.020000 0.028375 0.055212` | `-1.570800 0 0` | `0 0 -1` | `[-3.14, 0]` |
| `joint3` | `link2` -> `link3` | revolute | `-0.264000 0.000000 0.000000` | `0 0 0` | `0 0 1` | `[-3.14, 0]` |
| `joint4` | `link3` -> `link4` | revolute | `0.242600 -0.054000 0.005650` | `0 0 0` | `0 0 1` | `[-1.87, 1.57]` |
| `joint5` | `link4` -> `link5` | revolute | `0.078331 -0.037782 -0.034700` | `-1.570800 0 0` | `0 0 1` | `[-1.57, 1.57]` |
| `joint6` | `link5` -> `link6` | revolute | `0.023692 0.000000 0.040300` | `3.141593 1.570793 3.141593` | `0 0 1` | `[-3.14, 3.14]` |
| `end_joint` | `link6` -> `end_link` | fixed | `0.000000 -0.000018 0.166309` | `3.141593 -1.570793 -0.000093` | `1 0 0` | 无 |

这些参数来自两部分：

| 来源 | 内容 |
| --- | --- |
| Fusion/CAD 测量 | 相邻关节原点之间的相对位移，例如 `joint1` 高度 86.8mm、`joint3` 长度 264mm、末端 166.309mm |
| DMReBot 对齐 | link 命名、关节链路、部分轴向、关节限位、惯量和位置执行器参考 |

## 建议实测复核的参数

现在这版模型已经可以在 MuJoCo 中正确显示并跑轨迹，但如果要进入更真实的控制或动力学仿真，建议继续实测这些内容：

| 参数 | 当前处理 | 为什么建议复核 |
| --- | --- | --- |
| `joint1` 原点高度 | `0.086800m` | 它决定底座和第一轴是否严格同轴贴合 |
| `joint2` 的 `x/y/z` | `20mm / 28.375mm / 55.212mm` | 它决定肩部和大臂安装面是否贴合 |
| `joint4` 的 Z 符号 | `+5.65mm` | CAD 里绿色轴容易受观察方向影响，正负号要确认 |
| `joint5` 和 `joint6` 的 `rpy` | 使用坐标系换算结果 | 末端坐标系方向会影响 TCP、夹爪和后续逆解 |
| `end_joint` 的 `rpy` | 使用当前可视化贴合结果 | 如果换夹爪或工具，需要重新定义 TCP 姿态 |
| 每个 link 的质量 | 来自 DMReBot 参考 | 如果实物材料、结构不同，动力学会不准 |
| 每个 link 的惯量 | 来自 DMReBot 参考 | 轨迹控制、重力补偿和碰撞响应都会受影响 |
| 执行器 `kp/kv` | 来自 DMReBot 参考 | 实机电机、减速器和控制频率不同，需要重新调参 |

## MuJoCo 加载验证

先安装依赖：

```bash
python -m pip install mujoco numpy
```

下载示例资产：

```bash
python examples/rsrebot-mujoco-control/scripts/download_rsrebot_assets.py \
  --output-dir build/rsrebot-assets
```

用 MuJoCo 加载 URDF：

```bash
python - <<'PY'
from pathlib import Path
import zipfile
import mujoco

zip_path = Path("build/rsrebot-assets/RSReBot_fluxweave_dm_mujoco_urdf.zip")
extract_dir = Path("build/rsrebot-assets/check")
extract_dir.mkdir(parents=True, exist_ok=True)
with zipfile.ZipFile(zip_path) as archive:
    archive.extractall(extract_dir)

urdf_path = extract_dir / "urdf" / "RSReBot_fluxweave_dm_mujoco.urdf"
model = mujoco.MjModel.from_xml_path(str(urdf_path))
print("nbody", model.nbody)
print("njnt", model.njnt)
print("ngeom", model.ngeom)
print("nmesh", model.nmesh)
PY
```

当前示例的预期结果：

```text
nbody 7
njnt 6
ngeom 8
nmesh 8
```

解释：

| 结果 | 含义 |
| --- | --- |
| `nbody 7` | MuJoCo world 外有 7 个可动/嵌套 body，base mesh 作为 world geom |
| `njnt 6` | 6 个 revolute 关节，`end_joint` 是 fixed，导入后会被折叠成 geom |
| `ngeom 8` | 8 个 mesh geom，包括 base 到 end |
| `nmesh 8` | 8 个 STL mesh 资产 |

## 从 DeDeUrdf 导出的 ZIP 到 MuJoCo XML

通用 URDF 只描述几何和关节，不一定包含适合 MuJoCo 位置控制的 actuator、惯量和控制参数。本仓库提供脚本把 DeDeUrdf ZIP 转成 MuJoCo 控制 XML。

```bash
python examples/rsrebot-mujoco-control/scripts/build_rsrebot_control_model.py \
  --source-zip build/rsrebot-assets/RSReBot_fluxweave_dm_mujoco_urdf.zip \
  --output-dir build/rsrebot-mujoco-control
```

输出：

```text
build/rsrebot-mujoco-control/
  RSReBot_fluxweave_dm_control.xml
  RSReBot_fluxweave_dm_control.mjb
  urdf/
    RSReBot_fluxweave_dm_mujoco.urdf
  meshes/
    base.stl
    link1.stl
    ...
```

这个脚本做了这些事：

| 步骤 | 说明 |
| --- | --- |
| 解压 ZIP | 找到 `urdf/*.urdf` 和 `meshes/*.stl` |
| 复制 STL | 把 STL 整理到输出目录的 `meshes/` |
| 转 binary STL | 如果发现 ASCII STL，会转成 MuJoCo 更稳定读取的 binary STL |
| 规范 mesh 路径 | 把 URDF 里的 mesh 路径改成输出目录可用路径 |
| MuJoCo 编译 URDF | 用 `mujoco.MjModel.from_xml_path` 先确认 URDF 可加载 |
| 保存 MJCF XML | 用 `mujoco.mj_saveLastXML` 生成 MuJoCo XML |
| 补惯量 | 从 `reBot-DevArm_fixend_control.xml` 拷贝每个 body 的 inertial |
| 补限位 | 从参考模型补 `range`、`actuatorfrcrange` |
| 补 actuator | 加入 6 个 position actuator |
| 保存 MJB | 生成 MuJoCo 二进制模型，方便快速加载 |

## 给 Codex 的复制任务块

下面这段可以直接复制给 Codex，让它在新机器或新克隆的仓库里验证模型。

```md
请在 ReBotMono 仓库根目录帮我验证 RSReBot URDF/MuJoCo 模型：

1. 运行 `python -m pip install mujoco numpy imageio[ffmpeg]` 安装依赖。
2. 下载公开 MuJoCo URDF ZIP：
   `mkdir -p build/rsrebot-assets && curl -L -o build/rsrebot-assets/RSReBot_fluxweave_dm_mujoco_urdf.zip https://pub-6c1e280a27614b05891bfd818585735e.r2.dev/RSReBot/RSReBot_fluxweave_dm_mujoco_urdf.zip`
3. 运行 `python examples/rsrebot-mujoco-control/scripts/build_rsrebot_control_model.py --source-zip build/rsrebot-assets/RSReBot_fluxweave_dm_mujoco_urdf.zip --output-dir build/rsrebot-mujoco-control` 生成控制 XML。
4. 用 MuJoCo 加载 `build/rsrebot-mujoco-control/RSReBot_fluxweave_dm_control.xml`。
5. 把 `nbody/njnt/ngeom/nmesh` 数量、生成文件路径、任何报错完整写给我。
6. 如果能渲染，请保存一张截图并告诉我截图路径。
```
