Obstacle avoidance - visibility graph

From Rsewiki
Revision as of 07:56, 11 September 2010 by Jca (talk | contribs) (New page: This is a plug-in to find a path to a target pose through a set of established obstacles. The obstacles are all convex polygons taken from the laser-data (aulaserif.so.0) obstacle plugin....)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This is a plug-in to find a path to a target pose through a set of established obstacles.

The obstacles are all convex polygons taken from the laser-data (aulaserif.so.0) obstacle plugin. Both fixed and dynamic obstacle polygons may be used.

The obstacle avoidance uses - in the latest version (rev2) - an exact cell decomposition, and finds the shortest path wide enough for the robot to pass. This path is then evaluated for dynamic movement - using robot shape in the form of a rectangle (defined by front-left and front-right corners) and turning constraints (minimum turn radius).

The result is a sequence of line and arc movements to get to the target pose.

The algorithm uses the drive (or driveon) control law implemented in the MRC as a model for the movement, and accepts the angle and distance gain parameters to describe the turn behavior.

Configuration variables

Result variables

Function calls

Function commands

Configuration example

module load="aulaserif.so.0"
laser add=var
laserdata add=obst

module load="audrivepos.so.0"
module load="aupoly.so.0"

module load="auavoid.so.0"
var avoid.frontLeftX ="2.05 0.68"
var avoid.frontRightX = "2.05 -0.68"
var avoid.rev2=true
# rev2 values
var avoid.clearenceMinimum = 0.25
var avoid.clearenceDesired = 0.5
var avoid.rev2cell=true
var avoid.driveonGD=1
var avoid.driveonGA=2
var avoid.minTurnRadius=2.2
var avoid.maxOG=1
var avoid.ignoreCloseObst=6
var avoid.acceptSolution=30
var avoid.maxTangentToMan=3
var avoid.forwardOnly=3.16
var avoid.makeFootprintPolygon=1
var avoid.makeCellPolygon=0
var avoid.makeCellCostLine=1
var avoid.makeCellVertexLine=1