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.
(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"