Laser obstacles

From Rsewiki

RANSAC based obstacle detection that prioritises lines

All obstacles are converted to points, lines or convex polygons. The obstacles are saved in the obstacle database 'obst' that is a resource created by the plug-in module ulmspassable.so.0.

Author: Christian Andersen

(for svn version 1100)

Configuration variables

  • maxToLineDist=0.05 (r/w) max distance to line for members
  • minPointsInLine=8 (r/w) Minimum number of measurements in a line
  • maxLineIterations=25 (r/w) Max number of iterations to allign line to members
  • maxSamples=100 (r/w) Number of samples to determine best supported line
  • splitDist=0.15 (r/w) distance to split long line into two (or more)
  • minSplitCnt=2 (r/w) if a line is grouped by 'splitDist', then each group must have at least this number of supporting point (set to 0 to disable).
  • enableSplit=1 (r/w Enable split, i.e. reduce line to group with most measurements
  • lineEatDist=0.03 (r/w) after line generation, regard measurements this close to the line as false measurements
  • ignoreIfFixed=0 (r/w) ignore produced obstacles that overlap mapped fixed obstacles
  • debugDumpScanOn=0 (rw) at this scan-number will the debugDump flag be set true
  • debugDumpScanOff=0 (rw) at this scan-number will the debugDump flag be set false
  • noObst=0.33 0.17 -0.2 -0.17 (rw) Area where obstacles are ignored (below robot) front-left (x,y) and back-right (x,y) in robot coordinates

Result/status variables

  • scan=0 (r) latest scan number processed

Functions calls

none

Functions commands (for both SMR and SMRCTL resource)

From the on-line help

device=N   Use scanner device N (else default)
fake=F     Fake data from this device - F=1..4
any        Use any scan (ignore already used flag)
make       Make obstacles from scan
obst       Send findings to obstacle resource
silent     Do not send obstacles to client
list       list newest ransac lines
help       This message

Configuration example

Configuration used for indoor smr use.

module load="./aulobst.so.0"
var lobst.minSplitCnt=2
; splitDist defines minimum opening
var lobst.splitDist=0.15
var lobst.maxLineIterations=25
var lobst.maxSamples=100
var lobst.noobst="0.33 0.17 -0.2 -0.17
var lineEatDist=0.03