DO NOT ACTIVATE AUTO-BALANCING MODE
When operating the robot with castor wheels NEVER swicth the auto-balancing button on.
The auto-balancing button (the one that you MUST NOT PRESS) is the right-bottom one in the control board of the Segway base. By default the robot starts in tractor mode and this is the mode you should keep. So no pressing any of the blue buttons will work.
EMERGENCY BUTTONS
Two big red buttons are placed on the two sides of the robots. They disconnect the motor power.
Use them to immediately stop the robot in case of emergency. In order to re-activate the robot motors you need to release the button.
SOFTWARE CONTROLS
The following software controls are implemented in order to avoid unsafe behaviors of the robot.
1) segway_rmpX node stops the robot if it does not receive cmd_vel for a given amout of time. This guarantees that if the last command in cmd_vel is out-of-date (for example, because of a software crash of the controller), the robot will stop moving.
2) gradient_based_navigation node stops the robot if it does not receive an input command (desired_cmd_vel) or a laser message for more than 1 second. This guarantees that the robot will stop if laser does not send laser scans or if the controller does not send proper input after a while.
3) gradient_based_navigation stops the robots if the ROS parameter '/<robotname>/emergency_stop' is set to 1. It will allow the robot to move if the parameter is 0 or if it is unset. Any external module can set this parameter.
4) gradient_based_navigation checks if there is a very close obstacle in front of the robot (front laser scans < 0.2 m). In this case, it sets the ROS parameter '/<robotname>/emergency_stop' to 1. It will be set back to 0 after 10 seconds in which the laser reports no close obstacle. Otherwose, some external module can set it to 0 for starting again moving the robot.
USE OF THE JOYSTICK (Logitech)
joystick_control node (defined in gradient_based_navigation package) implements an interface between the standard ROS joy_node and the commands to be sent to the gradient_based_navigation node, with the following semantics:
1. RB button on the back of the joystick sets the emergency_stop parameter to 1 (so the robot stops), while RT button releases the emergency stop (i.e., it sets it back to 0, so the robot will move)
2. the joystick axes send speed and jog command velocities through the joystick_cmd_vel topic
3. LB button sets joystick_only control of the robot (i.e., it disables desired_cmd_vel set by other controllers), while LT button releases control to other controllers (i.e., it enables desired_cmd_vel).
gradient_based_navigation node receives and processes two command velocity topics: desired_cmd_vel (usually set by a controller, e.g., move_base) and joystick_cmd_vel (set by a joystick_control node).
By default, the desired_cmd_vel values are processed and the robot follows the corresponding commands.
If desired_cmd_vel topics are not published (e.g., no controller is active at this moment/the joystick is the only control device), then the joystick can be used to control the robot with the joy axes for speed and jog.
When another controller is controlling the robot (using the desired_cmd_vel topic), then the LB/LT buttons on the joystick can be used to take/release joystick control.
For more details, see alsoDiagoSecurityReport.pdf