This driver implements the Nearness Diagram Navigation algorithm. This algorithm handles local collision-avoidance and goal-seeking and is designed for non-holonomic, non-circular robots operating in tight spaces. The algorithm is in the following papers:

This driver reads pose information from a position2d device, sensor data from a laser device and/or sonar device, and writes commands to a position2d device. The two position2d devices can be the same. At least one device of type laser or sonar must be provided.

The driver itself supports the interface. Send PLAYER_POSITION2D_CMD_POS commands to set the goal pose. The driver also accepts PLAYER_POSITION2D_CMD_VEL commands, simply passing them through to the underlying output device.

Compile-time dependencies



Configuration requests

Configuration file options

  name "nd"
  provides ["position2d:1"]
  requires ["output:::position2d:0" "input:::position2d:0" "laser:0" "sonar:0"]

  max_speed [0.3 30.0]
  min_speed [0.1 10.0]
  goal_tol [0.3 15.0]
  wait_on_stall 1

  rotate_stuck_time 5.0
  translate_stuck_time 5.0
  translate_stuck_dist 0.15
  translate_stuck_angle 10.0

  avoid_dist 0.4
  safety_dist 0.0

  laser_buffer 1
  sonar_buffer 1

Javier Minguez (underlying algorithm), Brian Gerkey (driver integration)

Last updated 12 September 2005 21:38:45