#################################### ##FILL ME IN #################################### ## note.0= [[Industrial/Tutorials/Create a URDF for an Industrial Robot|URDFs for Industrial Robots]] ## note.1= [[http://moveit.ros.org/wiki/index.php/Hydro/Installation|MoveIt Installation]] ## note.2= [[Industrial/Tutorials/Create_a_MoveIt_Pkg_for_an_Industrial_Robot|Create a MoveIt Pkg for an Industrial Robot]] ## title = Creating a Dual-Arm System (Indigo+) ## multi-line description to be displayed in search ## description = This tutorial is related to the setup and configuration for a Dual-Arm system(Multi-Groups) using the Motoman driver ## what level user is this tutorial for ## !level= IntermediateCategory ## !keywords =moveit, industrial, manipulator, yaskawa, motoman, sda10, dual-arm, multi-groups #################################### <> {{{#!wiki warning '''Respect Robot Safety Practices''' WARNING: INDUSTRIAL ROBOTS ARE VERY DANGEROUS AND CAN SERIOUSLY INJURE OR KILL. THE ROS-INDUSTRIAL SOFTWARE IS PROVIDED UNDER THE TERMS OF THE BSD LICENSE (I.E. AS-IS AND WITH NO WARRANTY). WHEN OPERATING AN INDUSTRIAL ROBOT UNDER ROS-INDUSTRIAL CONTROL, MAKE CERTAIN THAT NO ONE IS WITHIN THE ROBOT WORKSPACE AND THE E-STOP IS UNDER OPERATOR CONTROL. This tutorial is based on the Motoman SDA10F with a FS100 controller. However, it should be adaptable to any Multi-groups using MOTOROS. }}} <> {{{#!wiki caution This information is for the '''ROS 1''' interface. If you are looking for ROS 2 support, please visit [[https://github.com/Yaskawa-Global/motoros2|Yaskawa-Global/motoros2]]. }}} == URDF == The basic steps to create the URDF are described at [[Industrial/Tutorials/Create a URDF for an Industrial Robot|Create a URDF for an Industrial Robot]]. For the Motoman SDA10F robot, a [[https://github.com/ros-industrial/motoman/blob/indigo-devel/motoman_sda10f_support/urdf/arm_macro.xacro|arm xacro]] was defined and used for both arms. Also, a [[https://github.com/ros-industrial/motoman/blob/indigo-devel/motoman_sda10f_support/urdf/common_torso_macro.xacro|common_torso_macro]] was created to represent the central torso. An important note for the SDA10F and most Motoman robots like the BMDA3 is that a single physical torso is logically linked two distinct control-groups, the groups B1/B2. Therefore, a mimic joint rotating on the same direction was needed. == MoveIt! Configuration == The MoveIt! configuration for the SDA10F was done by following the [[Industrial/Tutorials/Create_a_MoveIt_Pkg_for_an_Industrial_Robot|Create a MoveIt Pkg for an Industrial Robot]] tutorial. The following groups were defined: 1. arm_left: This is responsible for controlling the corresponding joints of the left arm. 1. arm_right: This is responsible for controlling the corresponding joints of the right arm. 1. torso: This controls only the central torso. 1. sda10f: This controls all the joints of the robot. == Motion Interface Configuration == The mapping of the various motion groups on the controller must be defined, for both state information and motion control. The motion interface config file captures this information. The config file is loaded by various driver nodes on startup. If this file is missing or not formatted correctly, the driver will default to a single arm mapping. {{{#!wiki caution The current version of the ``motoman_driver`` does not work correctly with controllers with > 1 and < 4 motion groups. This is a known issue, and will be fixed. Dual arm robots are not affected by this. See the [[https://github.com/ros-industrial/motoman/issues|issue tracker]] for more information. }}} The following shows an example ``motion_interface.yaml`` file for an SDA10F (from [[https://github.com/ros-industrial/motoman/blob/indigo-devel/motoman_sda10f_support/config/sda10f_motion_interface.yaml|here]]): {{{ topic_list: - name: sda10f_r1_controller ns: sda10f group: 0 joints: ['arm_left_joint_1_s','arm_left_joint_2_l','arm_left_joint_3_e','arm_left_joint_4_u','arm_left_joint_5_r','arm_left_joint_6_b','arm_left_joint_7_t'] - name: sda10f_r2_controller ns: sda10f group: 1 joints: ['arm_right_joint_1_s','arm_right_joint_2_l','arm_right_joint_3_e','arm_right_joint_4_u','arm_right_joint_5_r','arm_right_joint_6_b','arm_right_joint_7_t'] - name: sda10f_b1_controller ns: sda10f group: 2 joints: ['torso_joint_b1'] - name: sda10f_b2_controller ns: sda10f group: 3 joints: ['torso_joint_b2'] }}}