添加机器人¶
新机器人如何进入本技术栈。复制已有描述包以及仓库里已有的 launch/xacro 模式。没有 hardware:=mock。launch 文件和配置名以该包 README 列出的为准。
权威来源
描述包布局:已有
{robot}_description包(下例:arx_acone_description)及其包 README伞形仓与子模块路径:robot_descriptions README(
main)(例如 ARX 在manipulator/ARX)。更新的 AgileX / 珞石 INEX 表:同一 README 的feature/agilexLaunch /
hardware:=/ 末端:robot_common_launch工作区初始化:open-deploy-ws 的
./init_repo.sh+submodules_visibility.confIsaac USD:FaSim-Isaac skill
isaac-urdf-usda-ocs2(目录USDA-OCS2-PhysX-Mujoco)— skill — 以及./init.sh/./run.sh和 robot_usds描述侧 Cursor skill:在
robot_descriptions的feature/agilex分支 —.cursor/skills/README.md。main没有.cursor/skills。robot-descriptions-common和robot_usds在main上也没有。agilex 索引目前只有split-chassis-glb。
1. ROS description package¶
公开品牌树作为子模块挂在 robot_descriptions 下(common、manipulator/ARX、manipulator/Dobot 等)。在 open-deploy-ws 中,./init_repo.sh 之后同一棵树是 src/robot-descriptions/。不要递归 init。
复制真实的包。Acone(该仓库)大致是:
arx_acone_description/
├── CMakeLists.txt
├── package.xml
├── README.md
├── xacro/
│ ├── robot.xacro
│ ├── arm_mount.xacro
│ ├── component.xacro
│ └── ros2_control/ # hardware plugin branches
├── config/
│ ├── ocs2/ # task .info (controller loads these, not a separate ocs2_arm_config.yaml)
│ └── ros2_control/ # optional {hardware}.yaml overlay
└── meshes/
启动键是 robot:=<key>,对应包名 {key}_description(robot_common_launch)。demo.launch.py 默认是 cr5。
Acone xacro / common launch 中存在的 hardware:= 取值:mock_components(默认)、gz、isaac、real。没有 hardware:=mock。插件见 本技术栈中的 ros2_control。使用该机器人 xacro/ros2_control/*.xacro 中的插件类或已有厂商 HI README(ARX hardware:=real 见 arx-ros2-control)。
控制器实际加载的 OCS2 文件:{robot_pkg}/config/ocs2/<info>.info(ocs2_arm README)。规划 URDF 由同一套 xacro 经 robot_common_launch 生成,不是静态 urdf/*.urdf。
末端 / 力传感器 / TCP:type / left_type / right_type(不是 gripper:=)。
底盘 / 舵轮 / collider:=simple(feature/agilex skill)¶
仅在 feature/agilex 上,skills 索引目前只列了一个 skill: split-chassis-glb(SKILL.md)。该 skill 的规范示例是 rokae_inex_description。
它做什么(概览;完整步骤以 skill 为准):
把一个装配好的底盘 GLB 拆成
chassis/steer/wheel网格,原点已对齐关节写舵轮 xacro(在
flfrrlrr复用同一套 steer + wheel;右侧模块 yaw 180°,不镜像网格)用 glTF 节点 AABB 加
collider:=simple盒子(不是 accessor 的原始 min/max)
如何在 .cursor/skills/ 下加更多 skill:同一份 skills README(目录 .cursor/skills/)。索引目前只有 split-chassis-glb。
包布局 / 子模块: 共用子模块表看 README(main)(common、manipulator/ARX 等)。新 AgileX 或珞石 INEX 用 README(feature/agilex)。该分支目前列出的路径(按原文):
类别 |
|
|---|---|
移动操作臂 |
|
移动操作臂 |
|
移动操作臂 |
|
操作臂 |
|
操作臂 |
|
操作臂 |
|
轮式人形 |
|
main 仍列出 AgileX Aloha(manipulator/AgileX/agilex_aloha_description),并且没有 .cursor/skills 目录。
Taku(Dyna / DVT1)也在 feature/agilex 仓内 humanoid/Dyna/taku_description。可视化用 robot_common_launch humanoid.launch.py robot:=taku。控制用 split_body.launch.py / full_body.launch.py,并传 robot:=taku(包 README §3.1 / §3.2)— 不是 demo.launch.py。公开 mock 是 split_body.launch.py;full_body.launch.py 需要私有 ocs2_wbc_controller 子模块。它不是该分支 README 品牌表中的一行。没有精简的 open-deploy-ws Taku 分支 — open-deploy-ws 配置。
2. Wire it into a deploy workspace¶
在 open-deploy-ws 中:
./init_repo.sh,让嵌套模块与submodules_visibility.conf一致。若新增嵌套子模块:先在父仓加 Git submodule,再在 conf 加一行
parent_dir|relative_path|public或private— 子模块可见性。colcon build --symlink-install。精简分支(arx-lift2s、panthera-ht):优先./quick_start.sh(构建成功后它会 sourceinstall/setup.bash)。在main上,colcon 之后在启动终端source install/setup.bash(标准 ROS overlay;没有额外环境脚本)。
robot-descriptions-arx README 也写了把品牌仓加为 src/robot-descriptions-arx,或在伞形仓下 git submodule update --init manipulator/ARX。在 open-deploy-ws 里优先用部署工作区的 init 脚本。
arms_ros2_control 里已有的控制器:ocs2_arm_controller 的 demo.launch.py / split_body.launch.py / full_body.launch.py,以及 basic_joint_controller。Acone README 示例(工作区 overlay 之后):
ros2 launch robot_common_launch manipulator.launch.py robot:=arx_acone
ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone
launch 文件和驱动层类名来自你复制的那个包及其厂商 HI README。
3. Isaac USD (FaSim-Isaac skill)¶
Isaac 导入仍走 FaSim-Isaac skill isaac-urdf-usda-ocs2(不是描述侧的 split-chassis-glb skill):
该目录下其他 skill:
fasim-robot-mujoco-physics、fasim-dexhand-asset、fasim-rg75-pad-convert、fasim-usd-bake-scale
该 skill 覆盖的内容(概览;完整步骤以 skill 为准):
拆分 / 展开 URDF 或 xacro;记录安装位姿。
Isaac 5:Import URDF → USD。Isaac 6:Asset Transformer → USDA。
Robot Assembler(子 → 父;一个 articulation root)。
根
variantSets+ 本地 adapter payload(payloads/Physics/{none,physics,physx,mujoco}.usda等)。PhysX 与 Newton/MuJoCo 层分开;主机侧
topic_based_ros2_control+hardware:=isaac。
资产布局:robot_usds README(robots/manipulators/…、robots/mobile_manipulator/…)。FaSim-Isaac 检出后:./init.sh(子模块 + 可选 Isaac ROS 2 工作区),然后 ./run.sh。不要手写 Isaac PATH 或 ~/.bashrc overlay。见 Isaac Sim。