Locater - tree row
From Rsewiki
based on laser scan lines and fluffy lines (tree-rows). Locater also include row-end detection for the end of the defined lines. The lines (rows) are defined in the mapbase (mapbase.so.0)
The mapbase plugin (mapbase.so.0) must be loaded first.
Author: Søren Hansen, amended by Christian Andersen
(for svn version 992)
Configuration variables
- keepMapPose=1 - Should locater update map-pose (in the mappose module)
- useRowEnd=1 - (rw) determines if row end detections should be used in locater pose update
- rowEndIn1=4.5 - (rw) distance inside coverage before row end detect when row end is expected out of range
- rowEndIn2=2.5 - (rw) distance inside coverage before row end detect when row end is expected in range
- rowEndMaxGap=2.8 - (rw) Max opening in a detected row to be valid (meter)
- useAvgUpdate=1 - (rw) Flag if averaged update is to be used rather than update for each line individually
- rowToRobotMaxDist=4 - (rw) maximum this far from robot if usable for row end detection.
- rowEndMaxDist=6.5 - (rw) reject row end detections more than this away from expected position (m)
- odoDistScale=1 - (rw) multiplied on driven distance in locater update
- rowExtraLog=0 - (rw) Make extra log of correlations to mapped rows - much data
Result variables
- kalmpose=0 0 0 - (r) Pose according to localisation
- updcnt=0 0 0 - (r) Counts number of updates, [0]=scans since last update, [1] number of locater updates, [2]=updates since last miss.
Functions calls
- resetstate() - Set the state to the pose (in utmPose) and resets old odoposes
- utmToMap() - Set map pose from the utm pose - when keepMapPose is false only
Functions commands
- locater openlog
- locater locate
Configuration example
(in laser server configuration file ulmsserver.ini)
module load="mapbase.so.0" mapbase mapload="./apple_cherry_map.xml" mapbase graphload="./apple_cherry_graph.xml" module load="locater.so.0" var locater.useRowEnd=1 var locater.rowEndIn1=4.5 var locater.rowEndIn2=2.5 var locater.rowEndMaxGap=2.8 var locater.useAvgUpdate=1 var locater.rowEndMinCover=0.33 var locater.rowEndMaxDist=6.5 var locater.keepMapPose=1 locater openlog var call="locater.resetstate()" scanpush cmd="v360 update" v360push cmd="locater locate"