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
|
LocalNav
|
A Local Navigation component: follows a waypoint-defined path while avoiding obstacles.
LocalNav.Config.Driver
(string)LocalNav.Config.TimestampsCheckEnabled
(int)LocalNav implements the orca_interface_pathfollower2d interface. It receives a path, defined by set of waypoints, and follows it while avoiding obstacles. The specfics of the algorithm used to follow the path are defined in the driver.
The parameters used in following a path come from three places. In order of precedence, they are:
1. The parameters of the driver, read from the configuration file,
2. The maximum approach speed/turnrate for each waypoint, specified in the path, and
3. The schedule defined by the path.
The third item exists because the path defines the times at which the robot should arrive at each waypoint. To ignore this constraint, set all waypoint times to 'now' or 'yesterday', and the robot will move as fast as possible within the constraints set by items 1 and 2.
The second item is again defined by the path object. Regardless of the schedule, the robot won't exceed the max approach speed/turnrate defined for a waypoint. Set these to something massive to ignore this constraint.
The first item takes precedence over the other two. Regardless of the specifics of the path, the robot will obey the parameters set in the driver. These should be set to ensure that the robot's motion is within reasonable safe limits.
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.
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]NOTE TO SELF: CHECK DEFAULTS IN CODE!
(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.
Localnav has an internal simulator which can be used for automated testing. When TestInSimulationMode is enabled, LocalNav will use this internal simulator rather than hooking up to external sources of information. It will establish the following interfaces to provide external access to the state of the simulated world:
The following configuration parameters affect the behaviour of TestInSimulationMode:
LocalNav.Config.TestInSimulationMode
(bool)LocalNav.Config.Test.BatchMode
(bool)LocalNav.Config.Test.NumWaypoints
(int)LocalNav.Config.Test.MaxLateralAcceleration
(double) [m/s/s]LocalNav.Config.Test.CheckLateralAcceleration
(bool)Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)