Switch Robot¶
Change the robot model in your workspace and launches.
Prerequisites¶
Workspace cloned and initialized
Target robot’s description available
Steps¶
1. Initialize Robot Description¶
If the robot description isn’t already initialized:
Prefer ./init_repo.sh in open-deploy-ws so nested modules under src/robot-descriptions/ match submodules_visibility.conf (manipulator/Dobot, manipulator/ARX, …). Do not git submodule update --init --recursive.
2. Rebuild¶
cd ~/open-deploy-ws
colcon build --symlink-install
source install/setup.bash
3. Launch with New Robot¶
ros2 launch ocs2_arm_controller demo.launch.py robot:=<robot_name>
Robot Names¶
Brand |
|
Source |
|---|---|---|
Dobot |
|
|
ARX (方舟无限) |
|
ARX how-to / description packages |
HighTorque (高擎) |
|
|
Dyna |
|
|
Use the key that matches {key}_description (the description packages you initialized).
Example: Dobot to ARX¶
# Demo default robot key is cr5 (demo.launch.py)
ros2 launch ocs2_arm_controller demo.launch.py
# After init has ARX descriptions, launch Acone (dual-arm, not Lift 2S)
ros2 launch ocs2_arm_controller demo.launch.py robot:=arx_acone
arx_acone is Acone (dual-arm). Full-body ARX Lift 2S (arx_lift2s) uses split_body.launch.py / full_body.launch.py on the arx-lift2s branch — see ARX Lift 2S. Taku (taku) uses the same split / full launches after descriptions are on feature/agilex: public mock is split_body.launch.py; full_body.launch.py needs the private ocs2_wbc_controller submodule — Taku / feature/agilex. HighTorque Panthera HT launch name is panthera_ht — see HighTorque Panthera HT. Keep demo.launch.py for cr5 / arx_acone / panthera_ht.
End-effectors (type / left_type / right_type)¶
There is no gripper:= argument. End-effectors are selected by robot_common_launch:
Symmetric EEF:
type:=<eef_key>Different left / right:
left_type:=andright_type:=together; do not passtype:=then (create_eef_side_launch_arguments())typemay also be arm topologyleft/right/dual(that does not becomeleft_type/right_type)OCS2
demo/split_body/full_bodydeclare these viacreate_robot_profile_launch_arguments().basic_joint_controllerdemo.launch.pyonly declarestype.
Profile YAML defaults.end_effectors is applied when use_profile_eef:=true (default). Set use_profile_eef:=false to force the CLI keys. Merge order: CLI > profile > xacro defaults. FT (ft / left_ft / right_ft) and TCP offsets are separate and always take the profile unless CLI overrides them.
# README: ignore profile EEF, set L/R from CLI
ros2 launch ocs2_arm_controller demo.launch.py \
robot:=<robot_name> \
robot_profile:=/path/to/machine_profile.yaml \
use_profile_eef:=false \
left_type:=rg75 right_type:=linkerhand_o7
Full table: robot-descriptions-common (robot_common_launch README).
Verification¶
RViz shows the correct robot model
Joint names in
/joint_statesmatch the new robotController accepts commands appropriate for the robot
Troubleshooting¶
Package not found¶
colcon build --symlink-install
source install/setup.bash
URDF errors¶
Check the description package’s README for dependencies.
Wrong joint limits¶
Each robot has its own joint limits in URDF. Verify commanded poses are within limits.