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, 2008. 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 position2d 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
- "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
- 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
- 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
driver ( name "snd" provides ["position2d:1"] requires ["input:::position2d:0" "output:::position2d:0" "laser:0"] robot_radius 0.24 )