# Rebot_Arm_description **Repository Path**: Marlboro1998/Rebot_Arm_description ## Basic Information - **Project Name**: Rebot_Arm_description - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ReBot Arm B601 机械描述复用包 `Rebot_Arm_description/` 汇总了 B601-RS 与 B601-DM 当前使用的 URDF 和 STL 资源,供 Web、RViz、ROS 2、MuJoCo 或其他机器人项目复用。 本目录采用相对路径,自带模型显示、URDF 碰撞和 MuJoCo 夹爪精细碰撞所需的网格。复制时建议保留整个版本目录,不要把 STL 全部摊平到同一层。 > 本目录是便于分发和复用的模型包,不是当前程序自动读取的唯一运行时目录。RS、DM 工程中的 ROS 2 和 MuJoCo 运行时资源位置见本文末尾“来源与同步”。 ## 目录结构 ```text Rebot_Arm_description/ ├── README.md ├── tools/ │ └── rviz_urdf_compat.py # ROS 2 Jazzy RViz 多材质显示兼容处理 ├── RS/ │ ├── README.md │ ├── urdf/ │ │ └── ReBot_Arm_RS.urdf │ └── meshes/ │ ├── visual/ # 22 个:仅用于 RS 显示和配色 │ ├── shared/ # 10 个:RS URDF 显示与碰撞共用 │ └── mujoco_collision/ # 10 个:RS MuJoCo 夹爪精细碰撞 └── DM/ ├── README.md ├── urdf/ │ └── ReBot_Arm_DM.urdf └── meshes/ ├── visual/ # 30 个:仅用于 DM 显示和配色 ├── collision/ # 10 个:仅用于 DM URDF 碰撞 ├── shared/ # 4 个:DM 显示与 MuJoCo 碰撞共用 └── mujoco_collision/ # 6 个:仅用于 DM MuJoCo 夹指碰撞 ``` ## 分类含义 | 目录 | 含义 | 修改后的影响 | | --- | --- | --- | | `visual/` | 只用于外观、颜色和结构细节 | 影响 Web/RViz/MuJoCo 外观,不应改变物理接触 | | `collision/` | 只用于 URDF 碰撞检测 | 影响 MoveIt、碰撞检测及使用 URDF 碰撞体的仿真 | | `shared/` | 在该版本中承担两种用途 | 修改前必须同时检查显示和碰撞结果 | | `mujoco_collision/` | MuJoCo 夹爪精细接触网格 | 影响夹持、穿模、摩擦和抓取稳定性 | 分类依据是“文件在当前版本中的实际用途”,不是零件是否相同。因此,同一个 STL 在 RS 中可能位于 `mujoco_collision/`,在 DM 中可能位于 `shared/`。 ## RS 与 DM 方案对比 | 项目 | B601-RS | B601-DM | | --- | --- | --- | | 主 URDF | `RS/urdf/ReBot_Arm_RS.urdf` | `DM/urdf/ReBot_Arm_DM.urdf` | | 机械臂本体 | RS 专用连杆、CNC、电机和 PLA 网格 | DM 专用连杆及按材质拆分的网格 | | 夹爪物理结构 | 与 DM 相同 | 与 RS 相同 | | 夹爪 URDF 显示 | 每侧采用 `PLA + CNC` 两个较大的视觉件 | 每侧拆成黑色指爪、灰色滑块、黄色限位块、金属齿条 4 个材质件 | | 夹爪 MuJoCo 精细碰撞 | 10 个 STL 全部只用于 MuJoCo | 同一套 10 个 STL,其中 6 个仅用于 MuJoCo,4 个同时参与 URDF 显示 | | URDF 碰撞策略 | 10 个整件网格同时用于显示和碰撞,放在 `shared/` | 10 个独立碰撞整件,放在 `collision/` | | 左右命名 | RS MJCF 因局部坐标约定,将 RS left 映射到 DM right 文件,反之亦然 | 使用 DM 的原始 left/right 命名 | ### 为什么 RS 是 10 个 `mujoco_collision`,DM 是 6 + 4 两端实际使用的是同一套 10 个夹爪精细碰撞 STL,文件内容已逐一校验一致: - 6 个夹指分段:左右两侧各 `front / mid / rear`; - 4 个滑块与限位块:左右两侧各 `carriage_grey / travel_stop_yellow`。 在 RS 中,这 10 个文件都不参与 URDF 外观,因此全部放在 `RS/meshes/mujoco_collision/`。 在 DM 中,4 个滑块和限位块还会作为 URDF 可见模型,所以放在 `DM/meshes/shared/`;剩余 6 个夹指分段只用于 MuJoCo,放在 `DM/meshes/mujoco_collision/`。这是用途分类差异,不是夹爪几何差异。 ## URDF 路径约定 两个主 URDF 都使用相对路径,例如: ```xml ``` 因此: - 必须保留 `urdf/` 与 `meshes/` 的相对层级; - 移动或重命名网格目录时,必须同步修改 URDF; - Linux 文件名区分大小写,`.STL` 与 `.stl` 不应随意互换; - 模型尺寸以米为单位,关节角以弧度为单位,不要在加载器中重复缩放。 ## 如何复用 ### Web / Three.js 将整个 `RS/` 或 `DM/` 目录放到静态服务器可访问的位置,从对应的 `urdf/ReBot_Arm_*.urdf` 加载。服务器必须允许继续访问相邻的 `meshes/` 子目录。 只做显示时,URDF 会自动加载 `visual/` 和 `shared/` 中引用的网格。不要把 DM 的材质分件直接叠加到 RS 的 `PLA + CNC` 视觉件上,否则可能出现重叠闪烁、颜色变亮和重复面。 ### ROS 2 / RViz / MoveIt 建议把所选版本复制到 ROS package 的 `description/` 下,并将相对路径改成: ```text package:///description/meshes/... ``` 同时确认 `setup.py` 或 `CMakeLists.txt` 会安装所有 URDF 和 STL。RViz 只负责显示;MoveIt 是否使用碰撞网格取决于加载的 robot description。 > [!IMPORTANT] > ROS 2 Jazzy 的 RViz 在显示“同一 link 包含多个不同材质的 visual”时,可能把该 link 的所有网格渲染成第一个材质的颜色。启动 RViz 或 MoveIt 前,请用 [`tools/rviz_urdf_compat.py`](tools/rviz_urdf_compat.py) 处理传给 `robot_description` 的 URDF。脚本只向标准输出写入转换结果,不会修改源 URDF。 该脚本会将额外的 visual 移到零偏移的 fixed 子 link,保留网格位姿、材质和碰撞定义。它还会针对 RViz/Ogre 单独提亮 RS 的黑色材质,不会改动源 URDF 及 Web/MuJoCo 使用的颜色。DM 没有匹配这些 `rs_*` 材质名,因此只会应用多 visual 拆分。 可先在命令行查看转换结果: ```bash python3 tools/rviz_urdf_compat.py RS/urdf/ReBot_Arm_RS.urdf > /tmp/ReBot_Arm_RS_rviz.urdf python3 tools/rviz_urdf_compat.py DM/urdf/ReBot_Arm_DM.urdf > /tmp/ReBot_Arm_DM_rviz.urdf ``` 在 Python ROS 2 launch 中,应将脚本的输出直接作为 `robot_description`: ```python from launch.substitutions import Command, PathJoinSubstitution from launch_ros.parameter_descriptions import ParameterValue from launch_ros.substitutions import FindPackageShare package_share = FindPackageShare("") urdf_file = PathJoinSubstitution( [package_share, "description", "urdf", "ReBot_Arm_RS.urdf"] ) compat_script = PathJoinSubstitution( [package_share, "tools", "rviz_urdf_compat.py"] ) robot_description = ParameterValue( Command(["python3 ", compat_script, " ", urdf_file]), value_type=str, ) ``` 接入 MoveIt 时,在创建 `move_group` 和 RViz 节点之前处理 `MoveItConfigsBuilder` 生成的配置: ```python from importlib.machinery import SourceFileLoader compat = SourceFileLoader("rviz_urdf_compat", compat_script_path).load_module() description_key = "robot_description" source_urdf = moveit_config.robot_description[description_key] moveit_config.robot_description[description_key] = ( compat.make_rviz_compatible(source_urdf) ) ``` 请把 `tools/rviz_urdf_compat.py` 随 ROS package 一起安装,并确保 `robot_state_publisher`、MoveIt `move_group` 和 RViz 收到同一份处理后的 `robot_description`。 ### MuJoCo 本目录提供 MuJoCo 需要的 STL,但不包含完整 MJCF 场景。复用时应在 MJCF `` 或 `` 中指向: - RS:`RS/meshes/mujoco_collision/` 中的 10 个精细碰撞件; - DM:`DM/meshes/mujoco_collision/` 的 6 个分段件,加上 `DM/meshes/shared/` 的 4 个滑块与限位块。 不要用完整夹指的单一凸包替换这些分段网格,否则可能重新出现闭合穿模、接触面过大或夹持不稳定。 ## 修改与同步规则 1. **只改颜色**:优先修改 URDF `` 或渲染器的 roughness/metalness,不要改变碰撞 STL。 2. **改视觉几何**:检查 Web、RViz 与 MuJoCo 外观;不要默认视觉变化会自动同步到碰撞模型。 3. **改 URDF 碰撞**:重新验证 MoveIt 自碰撞、关节全行程和末端附近接触。 4. **改夹爪精细碰撞**:RS、DM 共用同一套几何,应同步更新两端并重新验证抓取、闭合和释放。 5. **改左右夹指名称或坐标**:同步检查 RS 的左右反向映射和 MJCF 中的 `pos/quat`,不能只重命名文件。 6. **发布前**:确认所有 URDF 引用存在、XML 可解析,并在 Linux 上检查文件名大小写。 ## 来源与同步 当前运行时源文件位于: ```text # RS rebotarm_ros2_RS/src/rebotarm_bringup/description/ rebotarm_ros2_RS/src/rebotarm_mujoco_rs/models/ # DM(位于 DM 仓库) reBotArm_ros2_DM/src/rebotarm_bringup/description/ reBotArm_ros2_DM/src/rebotarm_mujoco/models/ ``` `Rebot_Arm_description/` 是面向复用者整理的自包含副本。运行时源模型发生变化后,应同步更新这里的对应 URDF/STL,并重新执行引用完整性和仿真验证。 ## 选择建议 - 需要 B601-RS 外观、ROS 模型或 RS 工程集成:使用整个 `RS/`。 - 需要 B601-DM 材质分件、ROS 模型或 DM 工程集成:使用整个 `DM/`。 - 只复用夹爪 MuJoCo 碰撞:两端几何相同,可任选一套,但必须保留全部 10 个分件及正确的左右坐标映射。 - 不确定需要哪些文件:复制整个版本目录最安全,文件分类主要用于理解和维护,不要求使用者手动挑选。