Dual Arm Joystick ControlView Package on GitHub
This package allows the user to control two (or any number of) X-Series arms using a single joystick controller. This package relies on two lower-level packages, interbotix_xsarm_dual to provide simultaneous control of multiple arms, and interbotix_xsarm_joy to provide joystick control.
As shown above, the interbotix_xsarm_dual_joy package builds on top of the interbotix_xsarm_control, interbotix_xsarm_joy and interbotix_xsarm_dual packages. See the other packages for descriptions of their nodes.
To get started, see the Usage section for both of the lower-level packages mentioned previously.
If you have a Bluetooth controller and it is not yet connected to you computer, see X-Series Arm Bluetooth Setup.
Once you have familiarized yourself with the capabilities of the lower-level packages, you will be ready to use this one. We will assume that you have done the following:
- Properly paired your controller with your computer.
- Configured udev rules.
- Checked the
/dev/ttyUSB*device name for each arm.
- Changed the settings in the config files config/, especially
Unplug/replug the U2D2s to refresh the ports and run the launch file below with the correct robot
model in place of
$ roslaunch interbotix_xsarm_dual_joy xsarm_dual_joy.launch robot_model_1:=<MODEL_1> robot_model_2:=<MODEL_2>
You can now use your Bluetooth controller to move around the arms.
To further customize the launch file at run-time (like with a different robot model), look at the table below:
|robot_model_1||model type of the first Interbotix Arm such as ‘wx200’ or ‘rx150’||“”|
|robot_name_1||arbitrary name that is unique to the first robot arm||“arm_1”|
|base_link_1||name of the ‘root’ link on the arm; typically ‘base_link’, but can be changed if attaching the arm to a mobile base that already has a ‘base_link’ frame||‘base_link’|
|modes_1||the file path to the ‘mode config’ YAML file for the first robot||refer to xsarm_dual_joy.launch|
|robot_model_2||model type of the second Interbotix Arm such as ‘wx200’ or ‘rx150’||“”|
|robot_name_2||arbitrary name that is unique to the second robot arm||“arm_2”|
|base_link_2||name of the ‘root’ link on the arm; typically ‘base_link’, but can be changed if attaching the arm to a mobile base that already has a ‘base_link’ frame||‘base_link’|
|modes_2||the file path to the ‘mode config’ YAML file for the second robot||refer to xsarm_dual_joy.launch|
|use_sim||if true, the Dynamixel simulator node is run; use RViz to visualize the robot’s motion; if false, the real Dynamixel driver node is run||false|
|use_rviz||launches RViz to show both arms||false|
|rvizconfig||file path to the config file RViz should load||refer to xsarm_dual_joy.launch|
|threshold||value from 0 to 1 defining joystick sensitivity; a larger number means the joystick should be less sensitive||0.75|
|controller||type of controller (‘ps3’, ‘ps4’, or ‘xbox360’)||ps4|
|topic_joy_raw||topic containing raw joystick commands that the xs_arm_joy nodes should subscribe to||“/commands/joy_raw”|