snd
Drivers

Smooth Nearness Diagram Navigation. More...

Smooth Nearness Diagram Navigation.

This driver implements the Smooth Nearness Diagram Navigation algorithm, an improvement over the nd driver that removes oscillatory patterns and improves overall driver performance.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 paper:

Durham, J. ; Bullo, F. "Smooth Nearness-Diagram Navigation" 2008, IEEE/RSJ International Conference on Intelligent Robots and Systems,

1. IROS 2008, 690-695

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 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.

This driver commands the underlying simply in velocity, so it's suitable to be used on the robots for which the GoTo() function is not yet implemented (e.g.: the Erratic robot).

Compile-time dependencies

- none

Provides

- position2d

Requires

- "input" position2d : source of pose and velocity information
- "output" position2d : sink for velocity commands to control the robot
- laser : the laser to read from

Configuration requests

- all position2d requests are passed through to the underlying "output" position2d device.

Configuration file options

- robot_radius (meters)
  - Default: 0.25 (m)
  - The radius of the minimum circle which contains the robot
- min_gap_width (meters)
  - Default: 2*Robot radius
  - Minimum passage width the driver will try to exploit
- obstacle_avoid_dist(meters)
  - Default: 4*Robot radius
  - Maximum distance allowed from an obstacle
- max_speed (meters/s)
  - Default: 0.5
  - Maximum speed allowed
- max_turn_rate (radiants/sec)
  - Default: 60 degrees
  - Maximum angular speed allowed
- goal_position_tol (meters)
  - Default: Robot radius/2
  - Maximum distance allowed from the final goal for the algorithm to stop.
- goal_angle_tol (radiants)
  - Default: 30 degrees
  - Maximum angular error from the final goal position for the algorithm to stop

Example

    driver
    (
      name "snd"
      provides ["position2d:1"]
      requires ["input:::position2d:0" "output:::position2d:0" "laser:0"]
      robot_radius 0.24
    )

Author
  Joey Durham (underlying algorithm), Luca Invernizzi (driver integration and documentation)

Last updated 12 September 2005 21:38:45