ROS2 package for MasterArm teleoperation of IGRIS-C. It provides:
- a headless relay node for direct MasterArm-to-robot publishing
- an SDK-style GUI example client, adapted for MasterArm workflows
This package reads joint positions from MasterArm devices using the MasterArm SDK and converts them into control commands for both robot arms and hands. The GUI tool also subscribes to rt/lowstate and shows the current robot arm positions against the MasterArm-driven command values.
Hardware
- MasterArm device (Dynamixel-based)
- USB-2-Serial adapter (/dev/ttyUSB0)
- submodules
git submodule update --init --recursive- Initialize Submodules
cd ~/ros2_ws/src/igris_c_masteram
git submodule update --init --recursive- Install DynamixelSDK
sudo apt-get install ros-${ROS_DISTRO}-dynamixel-sdk
# Or build from source:
cd ~/ros2_ws/src
git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
cd ~/ros2_ws
colcon build --packages-select dynamixel_sdk- Install OpenSSL
sudo apt install libssl-devcd ~/ros2_ws
colcon build --packages-select igris_c_masterarm
source install/setup.bashHeadless relay node
ros2 run igris_c_masterarm igris_c_masterarm_nodeGUI example build
cd ~/ros2_ws/src/igris_c_masteram/examples
./build.shThe GUI example is pinned to:
igris_c_masteram/third_party/igris_c_sdk_public
It does not fall back to COLCON_PREFIX_PATH or any SDK installed from the robot-side workspace.
GUI example run
cd ~/ros2_ws/src/igris_c_masteram/examples/build
./masterarm_gui_client /dev/ttyUSB0 1000000 0
./masterarm_gui_client /dev/ttyUSB0 1000000 0 robot1Launch file for the headless relay node
ros2 launch igris_c_masterarm igris_c_masterarm.launch.py port:="/dev/ttyUSB0" baud:=1000000
ros2 launch igris_c_masterarm igris_c_masterarm.launch.py port:="/dev/ttyUSB0" baud:=1000000 namespace:=robot1Pre-execution Checklist
- Verify MasterArm device is connected to
/dev/ttyUSB0 - Verify IGRIS-C robot is running
- For the GUI example, use the Start/Stop button to enable or disable command publishing
This package does not publish finger commands on standard ROS2 topics. It uses CycloneDDS-style custom DDS topics for IGRIS communication.
Published Topics
rt/lowcmd: Robot motor control commands (LowCmd)rt/handcmd: Hand motor control commands (HandCmd)
Subscribed Topics
rt/lowstate: Robot current state (LowState)rt/robotstate: Robot control state (RobotState)
| parameter name | default | description |
|---|---|---|
| port | /dev/ttyUSB0 | USB-serial port to communicate with the MasterArm |
| baud | 1000000 | USB-serial port baudrate |
| domain_id | 0 | CycloneDDS domain id |
| namespace | empty | Optional DDS namespace prefix |
The GUI example:
- removes the slider-based command editor from
sdk_gui_client - shows MasterArm command values and the current
rt/lowstatearm motor values side by side - does not gate publishing on
RobotState - starts and stops low-level command publishing only with the GUI button
- keeps service buttons for torque, BMS, hand init, and control-mode switching
Serial Port Permissions
sudo chmod 666 /dev/ttyUSB0
# or add user to dialout group
sudo usermod -aG dialout $USER