Please note that this package has not been productized, and that academia is the intended audience.
The package is provided "as-is", and as such no more than limited support can be expected.
The ROS nodes included in abb_robot_driver can only interact with ABB robots that are supported by these interfaces:
- Robot Web Services (
RWS
)1.0
:- Available in
IRC5
controllers withRobotWare 6
systems. RWS
is independent of robot type.
- Available in
- Externally Guided Motion (
EGM
):- Requires the
RobotWare 6
option Externally Guided Motion (689-1
). EGM
is only available for6
and7
axes robots.
- Requires the
The following examples illustrates how to bringup the ROS nodes for a few different use cases, namely:
Example | Description |
---|---|
ex1_rws_only | Using only RWS components, e.g. to listen for general system states and restarting RAPID program execution. |
ex2_rws_and_egm_6axis_robot | Using both RWS and EGM components (with a 6-axes robot), i.a. for starting an EGM session and publishing joint velocity commands. |
ex3_rws_and_egm_yumi_robot | Using both RWS and EGM components (with a YuMi robot), i.a. for starting an EGM session and publishing joint velocity commands. |
Please inspect the files in the launch and config folders for more details about respective example.
Please note that it is recommended to try out the examples against RobotStudio
simulations before testing with real robots.
- The
RWS
components are independent of robot type.
- Start 3 terminals.
- [Terminal 1] Launch the example:
roslaunch abb_robot_bringup_examples ex1_rws_only.launch robot_ip:=<robot controller's IP address>
- [Terminal 2] Use
rostopic
to, for example, list available topics and then listen for general robot controller states:rostopic list rostopic echo -c /rws/system_states
- [Terminal 3] Use
rosservice
to, for example, list available services and then stop, reset and start theRAPID
execution:rosservice list rosservice call /rws/stop_rapid "{}" rosservice call /rws/pp_to_main "{}" rosservice call /rws/start_rapid "{}"
EGM
usage is only recommended for advanced users:- Please be careful when sending motion commands! The robot will respond immediately.
- Assumptions:
- A 6-axes robot is used.
- The
EGM
RobotWare
option is present in the robot controller system. - The
RobotWare
StateMachine Add-In was used when installing the robot controller system.
- Impactful
EGM
RAPID
arguments:- The
\MaxSpeedDeviation
argument ofEGMActJoint
(e.g. limitsEGM
references on the robot controller side). - The
\PosCorrGain
argument ofEGMRunJoint
(e.g. needs to be0
for pure velocity control).
- The
- The
ros_control
controller, which command motions, is only allowed to start if anEGM
session is active.
- Start 4 terminals.
- [Terminal 1] Launch the example:
roslaunch abb_robot_bringup_examples ex2_rws_and_egm_6axis_robot.launch robot_ip:=<robot controller's IP address>
- [Terminal 2] Use
rostopic
to listen forEGM
channel states:rostopic echo -c /egm/egm_states
- [Terminal 3] Use
rosservice
to restartRAPID
, and then start anEGM
session:rosservice call /rws/stop_rapid "{}" rosservice call /rws/pp_to_main "{}" rosservice call /rws/start_rapid "{}" rosservice call /rws/sm_addin/start_egm_joint "{}"
- [Terminal 3] Use
rosservice
to start theros_control
command controller (requires a runningEGM
session):rosservice call /egm/controller_manager/switch_controller "start_controllers: [joint_group_velocity_controller] stop_controllers: [''] strictness: 1 start_asap: false timeout: 0.0"
- [Terminal 4] Use
rostopic
to publish velocity commands for the sixth joint:rostopic pub /egm/joint_group_velocity_controller/command std_msgs/Float64MultiArray "data: [0,0,0,0,0,0.1]"
- [Terminal 3] Use
rosservice
to stop theEGM
session:rosservice call /rws/sm_addin/stop_egm "{}"
EGM
usage is only recommended for advanced users:- Please be careful when sending motion commands! The robot will respond immediately.
- Assumptions:
- A
YuMi
robot is used. - The
EGM
RobotWare
option is present in the robot controller system. - The
RobotWare
StateMachine Add-In was used when installing the robot controller system.
- A
- Impactful
EGM
RAPID
arguments:- The
\MaxSpeedDeviation
argument ofEGMActJoint
(e.g. limitsEGM
references on the robot controller side). - The
\PosCorrGain
argument ofEGMRunJoint
(e.g. needs to be0
for pure velocity control).
- The
- The
ros_control
controller, which command motions, is only allowed to start if anEGM
session is active. - The ROS nodes are launched in an separate namespace
/yumi
(i.e. it is good practice to do so):- Inspect the example launch file, and corresponding configurations files, to see the impact of a separate namespace.
- Start 4 terminals.
- [Terminal 1] Launch the example:
roslaunch abb_robot_bringup_examples ex3_rws_and_egm_yumi_robot.launch robot_ip:=<robot controller's IP address>
- [Terminal 2] Use
rostopic
to listen forEGM
channel states:rostopic echo -c /yumi/egm/egm_states
- [Terminal 3] Use
rosservice
to restartRAPID
, and then start anEGM
session:rosservice call /yumi/rws/stop_rapid "{}" rosservice call /yumi/rws/pp_to_main "{}" rosservice call /yumi/rws/start_rapid "{}" rosservice call /yumi/rws/sm_addin/start_egm_joint "{}"
- [Terminal 3] Use
rosservice
to start theros_control
command controller (requires a runningEGM
session):rosservice call /yumi/egm/controller_manager/switch_controller "start_controllers: [joint_group_velocity_controller] stop_controllers: [''] strictness: 1 start_asap: false timeout: 0.0"
- [Terminal 4] Use
rostopic
to publish velocity commands for the seventh joint (on each arm):rostopic pub /yumi/egm/joint_group_velocity_controller/command std_msgs/Float64MultiArray "data: [0,0,0,0,0,0,-0.1,0,0,0,0,0,0,0.1]"
- [Terminal 3] Use
rosservice
to stop theEGM
session:rosservice call /yumi/rws/sm_addin/stop_egm "{}"
The core development has been made within the European Union's Horizon 2020 project: ROSIN - ROS-Industrial Quality-Assured Robot Software Components (see http://rosin-project.eu for more info).
The ROSIN project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement no. 732287.
The opinions expressed here reflects only the author's view and reflects in no way the European Commission's opinions. The European Commission is not responsible for any use that may be made of the contained information.
Special thanks to gavanderhoorn for guidance with open-source practices and conventions.