The nj_oa_laser package implements a navigating jockey for the Large Maps Framework (LaMa) that drives the robot while avoiding obstacles. It is based on a laser scan (sensor_msgs/LaserScan). It is a reactive, memory-less jockey.

Implemented action:

  • TRAVERSE: go more or less forward depending on obstacle position. The action never stops by itself.
  • STOP: stop the robot, sending this action is the only way to stop a TRAVERSE action.
  • INTERRUPT: same as STOP

Moreover, the package provides the class TwistHandler that computes an appropriate geometry_msgs/Twist from a sensor_msgs/LaserScan in order to go as forward as possible while avoiding obstacles.



Subscribed Topics

~<name>/base_scan (sensor_msgs/LaserScan)
  • laser-scan at the front of the robot.

Published Topics

~<name>/cmd_vel (geometry_msgs/Twist)
  • set velocity


~<name>/robot_radius (Float)
  • robot radius (m)
~<name>/min_distance (Float, default: 2 * robot_radius)
  • if an obstacle is closer than this, turn and don't go forward (m)
~<name>/long_distance (Float, default: 5 * robot_radius)
  • if no obstacle within this distance, go straight (m)
~<name>/turnrate_collide (Float, default: 0.4)
  • turn rate when obstacle closer than ~min_distance (rad/s)
~<name>/max_vel (Float, default: 1.0)
  • linear velocity without obstacle (m/s)
~<name>/vel_close_obstacle (Float, default: 0.5)
  • linear velocity if obstacle between min_distance and long_distance (m/s)
~<name>/turnrate_factor (Float, default: 0.9)
  • if obstacle closer than ~long_distance, turnrate = -turnrate_factor_ * mean(lateral_position_of_obstacle) (rad.m^-1.s^-1).
~<name>/laser_frame (String, default: "base_laser_link")
  • frame_id of the laser scan messages that are used to build the local map.
~<name>/navigating_jockey_server_name (String, default: node_name + "_server")
  • Jockey name

Wiki: nj_oa_laser (last edited 2015-01-15 13:25:45 by GaelEcorchard)