INTRODUCTION Overview Download and Install Quick Start Documentation Publications NONFRAMEWORK CODE Driver Interfaces Drivers Libraries Utilities FRAMEWORK CODE Interfaces Components Libraries Utilities Full Software Listings DEVELOPER Tutorials Examples Dev Guide Dashboard PEOPLE Contributors Users Project Download Mailing lists
|
libOrcaVfh
|
VFH driver for LocalNav.
The VFH driver implements the Vector Field Histogram Plus (VFH+) local navigation method by Ulrich and Borenstein. VFH+ provides real-time obstacle avoidance and waypoint-following capabilities for mobile robots.
LocalNav.Config.Driver
(string)VFH Has lots of parameters. See the next section for hints on configuration.
Some important configuration parameters:
LocalNav.Config.Vfh.SafetyDist0ms
(double) [m]LocalNav.Config.Vfh.SafetyDist1ms
(double) [m]LocalNav.Config.Vfh.FreeSpaceCutoff0ms
(double) [m]LocalNav.Config.Vfh.FreeSpaceCutoff1ms
(double) [m]LocalNav.Config.Vfh.ObsCutoff0ms
(double) [m]LocalNav.Config.Vfh.ObsCutoff1ms
(double) [m]LocalNav.Config.Vfh.WeightDesiredDir
(double)LocalNav.Config.Vfh.WeightCurrentDir
(double)LocalNav.Config.Vfh.CellSize
(double) [m]LocalNav.Config.Vfh.GridWidthInCells
(int)LocalNav.Config.Vfh.GridWidthInCells
(int)LocalNav.Config.Vfh.MaxAcceleration
(double) [m/s2]LocalNav.Config.Vfh.MaxTurnrate0ms
(double) [deg/s]LocalNav.Config.Vfh.MaxTurnrate1ms
(double) [deg/s]LocalNav.Config.Vfh.AbsoluteMaxTurnrate
(double) [deg/s]LocalNav.Config.Vfh.MinTurnRadiusSafetyFactor
(double)For the next three speed arguments: These are the absolute max values that VFH will use. Setting a path with a long time between waypoints will cause VFH to go slower.
LocalNav.Config.Vfh.MaxSpeed
(double) [m/s]LocalNav.Config.Vfh.MaxSpeedNarrowOpening
(double) [m/s]LocalNav.Config.Vfh.MaxSpeedWideOpening
(double) [m/s](some of this is taken from the Player VFH documentation):
To get initiated with VFH, a good idea is to start with the default values, which are all pretty reasonable. Then start experimenting with safetyDist[0|1]ms and FreeSpaceCutoff[0|1]ms (and ObsCutoff[0|1]ms), to get a feeling for how they affect performance. Once comfortable, make the speed-controlling parameters more aggressive. In general, SafetySist determines how close the robot will come to an obstacle while turning (around a corner for instance). Setting this too low causes the robot to clip obstacles, while setting it too conservatively stops the robot getting through gaps like doorways. FreeSpaceCutoff determines how close a robot will get to an obstacle in the direction of motion before turning to avoid.
For 'slow' robots (like Pioneers), MaxSpeedNarrowOpening and MaxSpeedWideOpening can be set to MaxSpeed. The 0ms and 1ms variables can also be set to the same values as each other. From experience, it is recommeded that MaxTurnrate[0|1]ms should be at least 15% of MaxSpeed.
For 'fast' vehicles like Segways, firstly be aware that VFH control is potentially very dangerous: start conservatively and change things slowly. The speed-dependent parameters are much more important here: it helps to set the 0ms and 1ms variable differently. To control the dynamics, it's good to set MaxSpeedNarrowOpening very slow, and MaxSpeedWideOpening reasonably slow. This causes the robot to slow down generally near obstacles, so if it does collide it's less likely to be catastrophic. MaxTurnrate[0|1]ms is also important for controlling how aggressively the robot turns.
Unless you are familiar with the VFH algorithm, I don't recommend deviating from the default values for CellSize, WindowDiameter, or SectorAngle.
The algorithm implemented here is described in this paper:
@inproceedings { Ulrich98Reliable, Author = {Ulrich, I. and Borenstein, J.}, Title = {VFH+: Reliable Obstacle Avoidance for Fast Mobile Robots}, BookTitle = {IEEE International Conference on Robotics and Automation(ICRA '98)}, Pages = {1572--1577}, Year = {1998} }
The code that implements the VFH algorithm was taken from Player, heavily modified, then re-submitted to the Player project.
Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)