Wiki

Overview

The robotino_safety package implements the robotino_safety_node which listens for linear and angular velocities published for Robotino on the robotino_cmd_vel topic and based on the laser scan readings, looks out for potential obstacles and publishes velocities accordingly on the cmd_vel topic.

robotino_safety_ros.png

Note: The obstacle above is visualized in red. The yellow cylinder is the next heading point on the global path and not the obstacle.

The laser scans received are converted to pointclouds. The points from the cloud are checked if they lie in the outer ellipse (as seen in the image above). If any points do lie in the outer ellipse, it means Robotino is approaching an obstacle and it is decelarated. If the obstacle doesn't move away (in case it is not a human or a cat walking by) and approaches the inner ellipse, Robotino continues to decelerate and finally stop if the obstacle touches the inner ellipse.

The radii of the inner and outer ellipses can be varied in the params below.

ROS Nodes

robotino_safety_node

Subscribed Topics

robotino_cmd_vel (geometry_msgs/Twist) bumper (std_msgs/Bool) scan (sensor_msgs/LaserScan)

Published Topics

cmd_vel (geometry_msgs/Twist) ~inner_ellipse_marker (visualization_msgs/Marker) ~outer_ellipse_marker (visualization_msgs/Marker)

Parameters

~outer_major_radius (double, default: 0.70) ~outer_minor_radius (double, default: 0.30) ~inner_major_radius (double, default: 0.40) ~inner_minor_radius (double, default: 0.25) ~node_loop_rate (int, default: 20)

Usage

The robotino_safety_node can be launched as follows.

roslaunch robotino_safety robotino_safety_node.launch

Wiki: robotino_safety (last edited 2012-03-27 07:31:04 by HozefaIndorewala)