⚠️ Please first verify if your setup is working with the examples provided by theabb_robot_driver
package before using this package, specifically:ex2_rws_and_egm_6axis_robot
.
This package provides a state machine for use with the abb_robot_driver
package in combination with the EGM option. The main goal of this state machine is to simplify the process of getting an ABB robot with EGM "to move" using the abb_robot_driver
. This is achieved by a state machine implementation that manages and monitors the state of the controller, allowing developers to request a certain (motion) state instead of calling commands like "Set Motors On" and "Start RAPID" and monitoring their results.
Authors: D. Kroezen (SAM|XL, TU Delft), A. Vatsyayan (SAM|XL, TU Delft)
This package hase been developed and tested under ROS Noetic
and Ubuntu 20.04
.
An overview of the states and state transitions can be found below.
💡 The state machine currenctly automatically transitions to the
EGMActiveState
when started. External state transition triggers have not yet been implemented.
The state machine will exit if it detect the motors turning off (e.g. due to a emergency stop) or if the RAPID program execution is stopped. The default behaviour resets the program pointer, stops RAPID execution and turns the motors off when exiting.
-
Initialize
State
Connects to the RWS and EGM services, automatically starts the transition to theMotorsOn
state by requesting the motors to turn on. The state machine will exit if it is unable to connect to the required services or is unable to turn on the motors. -
MotorsOn
State
The motors are on. This states automatically starts the transition toIdle
state by starting the main RAPID program. The state machine wil exit if it is unable to start the RAPID program. -
Idle
State
The state machine and robot controller are ready to transition to either an EGM session or by executing a RAPID routine.💡 Currently the
Idle
state automatically transitions to theEGMSessionActive
state by starting an EGM session and loading thejoint_position_trajectory_controller
. -
EGMSessionActive
State
The EGM session is active. This state monitors the EGM session and will transition back to theIdle
state if the EGM session stops (e.g. due to a time-out). -
RapidRoutineActive
State⚠️ Not yet implementedA RAPID routine is being executed. This state monitors the RAPID routine execution and will transition back to the
Idle
state if the routine finishes.
The monitor states ensure the robot controller state is in sync with the state machine, these states are executed in parallel to other states.
-
MonitorMotorsOn
State
The motor status is constantly monitored to ensure the contoller is in the correct state. This state will trigger an exit of the state machine if the motors turn off unexpectedly, e.g. due to an emergency stop. -
MonitorRapidTaskRunning
State
The RAPID program is constantly monitored to ensure the controller is in the correct state. This state will trigger an exit of the state machin if the RAPID program is stopped unexpectedly, e.g. due to the stop button being pressed on the teach pendant.
To build from source, clone the lastest version from this repository into your catkin workspace:
cd catkin_ws/src
git clone https://github.com/sam-xl/abb_robot_driver_state_machine
Use vcstool
to clone other project packages and complete the project workspace:
vcs import src < ./src/abb_robot_driver_state_machine/dependencies.repos
Install the dependencies of the cloned packages using rosdep
:
rosdep install --from-paths src --ignore-src -y
Finally, build all packages in the workspace:
catkin build
After starting the abb_robot_driver
, the state machine can be launched by using the provided launch file:
roslaunch abb_robot_driver_state_machine state_machine_bringup.launch
It is also possible to provide an EGM settings file:
roslaunch abb_robot_driver_state_machine state_machine_bringup.launch egm_settings:="/path/to/egm_settings.yaml"
The user can specify the requested EGM settings by providing a config file with the settings to either the node or the launch file.
-
./config/20220812_egm_settings_dump_abb_irb1200.yaml
A dump of the EGM settings of an ABB IRB1200. This dump can be used as a reference to see which settings there are and what can be configured. It can also be used as a first input for your settings. Increasemax_speed_deviation
if you require faster joint velocities (the value is indeg/s
). -
./config/increased_speed_egm_settings.yaml
An EGM settings file to set themax_speed_deviation
from the default value (configured on the IRC5 controller) to100.0
.
If no config file is proved the default EGM settings are used as specified on the IRC5 controller. The settings in the config files are only applied for the next session and are not persistent.
state_machine_bringup.launch
: Launches theabb_robot_driver_state_machine
node.
Arguments (for a description of the arguments, see the node description):egm_settings
(string, optional)taskname
(string, default:T_ROB1
)rws_namespace
(string, default:/rws
)egm_namespace
(string, default:/egm
)
This package contains a single node containing the state machine: abb_robot_driver_state_machine
Starts a state machine which will automatically transition to the Idle
state.
-
rws_namespace
(string, default:/rws
)
Namespace of the rws services and topics to be used by the state machine -
egm_namspace
(string, default:/egm
)
Namespace of the egm services and topics to be used by the state machine -
taskname
(string, default:T_ROB1
)
The name of the RAPID task which is running the "StateMachine Add-In" -
egm_settings
(string, optional)
The filename (including path) of the file containing the EGM settings to apply for each EGM session.
Please report bugs and request features using the Issue Tracker.