机器人与仿真
RSReBot URDF 与 MuJoCo 模型
RSReBot 机械臂 URDF、STL、MuJoCo ZIP、关节参数和需要实测复核内容的完整说明。
目标
这一页记录 RSReBot 机械臂从 DeDeUrdf 导出的 URDF/MuJoCo 模型结构,方便读者理解文件应该怎么放、关节参数在哪里、如何用 MuJoCo 做第一次加载验证。
RSReBot 公开示例资产:
| 文件 | 大小 | 用途 | 下载 |
|---|---|---|---|
RSReBot.f3z | 约 17.8MB | Fusion 360 原始项目归档 | 下载 |
RSReBot.step | 约 16.3MB | 通用 CAD 交换格式 | 下载 |
RSReBot_accurate_web_project.zip | 约 9.6MB | DeDeUrdf 可继续编辑项目,适合导入网页端继续调参 | 下载 |
RSReBot_fluxweave_dm_mujoco_urdf.zip | 约 20.2MB | MuJoCo 可加载 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.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
在仓库根目录执行:
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.zipURDF 主体结构
当前 URDF 是一个链式 6 轴机械臂,末端用 fixed joint 连接夹爪/工具模型。
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 加载验证
先安装依赖:
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 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。
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/*.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,让它在新机器或新克隆的仓库里验证模型。
请在 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. 如果能渲染,请保存一张截图并告诉我截图路径。