ReBot 内部手册
机器人与仿真

RSReBot URDF 与 MuJoCo 模型

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

查看 MDXGitHub 源文件

目标

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

RSReBot 公开示例资产:

文件大小用途下载
RSReBot.f3z约 17.8MBFusion 360 原始项目归档下载
RSReBot.step约 16.3MB通用 CAD 交换格式下载
RSReBot_accurate_web_project.zip约 9.6MBDeDeUrdf 可继续编辑项目,适合导入网页端继续调参下载
RSReBot_fluxweave_dm_mujoco_urdf.zip约 20.2MBMuJoCo 可加载 URDF 包,适合本页和控制脚本验证下载

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

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.urdfDeDeUrdf 导出的 RSReBot 机械臂 URDF
reference/reBot-DevArm_fixend_control.xmlDMReBot/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

在仓库根目录执行:

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

输出目录:

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:

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 连接夹爪/工具模型。

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

对应 STL:

linkmesh
base_linkbase.stl
link1link1.stl
link2link2.stl
link3link3.stl
link4link4.stl
link5link5.stl
link6link6.stl
end_linkend.stl

当前关节参数

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

jointparent -> childtypeorigin xyz (m)rpy (rad)axislimit
joint1base_link -> link1revolute-0.000084 0.000000 0.0868000 0 00 0 1[-2.8, 2.8]
joint2link1 -> link2revolute0.020000 0.028375 0.055212-1.570800 0 00 0 -1[-3.14, 0]
joint3link2 -> link3revolute-0.264000 0.000000 0.0000000 0 00 0 1[-3.14, 0]
joint4link3 -> link4revolute0.242600 -0.054000 0.0056500 0 00 0 1[-1.87, 1.57]
joint5link4 -> link5revolute0.078331 -0.037782 -0.034700-1.570800 0 00 0 1[-1.57, 1.57]
joint6link5 -> link6revolute0.023692 0.000000 0.0403003.141593 1.570793 3.1415930 0 1[-3.14, 3.14]
end_jointlink6 -> end_linkfixed0.000000 -0.000018 0.1663093.141593 -1.570793 -0.0000931 0 0

这些参数来自两部分:

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

建议实测复核的参数

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

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

MuJoCo 加载验证

先安装依赖:

python -m pip install mujoco numpy

下载示例资产:

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

用 MuJoCo 加载 URDF:

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

当前示例的预期结果:

nbody 7
njnt 6
ngeom 8
nmesh 8

解释:

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

从 DeDeUrdf 导出的 ZIP 到 MuJoCo XML

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

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

输出:

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/*.urdfmeshes/*.stl
复制 STL把 STL 整理到输出目录的 meshes/
转 binary STL如果发现 ASCII STL,会转成 MuJoCo 更稳定读取的 binary STL
规范 mesh 路径把 URDF 里的 mesh 路径改成输出目录可用路径
MuJoCo 编译 URDFmujoco.MjModel.from_xml_path 先确认 URDF 可加载
保存 MJCF XMLmujoco.mj_saveLastXML 生成 MuJoCo XML
补惯量reBot-DevArm_fixend_control.xml 拷贝每个 body 的 inertial
补限位从参考模型补 rangeactuatorfrcrange
补 actuator加入 6 个 position actuator
保存 MJB生成 MuJoCo 二进制模型,方便快速加载

给 Codex 的复制任务块

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

请在 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. 如果能渲染,请保存一张截图并告诉我截图路径。

On this page