This repository provides the C single-header source file of FSM (include/fsm.h
), and testing code.
For using FSM with ROS in order to produce lidar odometry visit fsm-lo
.
CGAL 4.7
FFTW3
boost/random
As always
mkdir build
cd build
cmake ..
make
Run tests located in the dataset
directory with
./sm_node A B C D E F G H 0 0 K L M N O P Q R S
e.g.
./sm_node 2 1 0 778 0.2 0.786 0.1 0.0 0.0 0.0 360 360 FSM 200 0 3 10 0 0
where
A
: The number of iterations for the translational component (the larger the location displacement between scans the higher this value needs to be)B
: How many times to iterate over all instances ofdataset
C
: The start sample id; typically 0D
: The end sample id; here|dataset| = 778
E
: The maximum location displacement. Sample locations are generated uniformly in [-E, E]F
: The maximum orientation displacement. Sample orientations are generated uniformly in [-F, F]G
: The standard deviation of measurement noise corrupting (real) scansH
: The standard deviation of measurement noise corrupting virtual scans. Suitable in the scan--to--map-scan matching context; irrelevant in scan-matchingK
: The size of scansL
: The size of the map. Relevant for scan--to--map-scan-matching tests; irrelevant in scan-matchingM
: Identifier of the method used. Only FSM supported in this repositoryN
: The maximum number of iterations over one sampling degreeO
: The minimum sampling degreeP
: The maximum sampling degree. Larger values result in extra accuracy and extra execution timeQ
: The maximum number of recoveries. Larger values result in extra accuracy and extra execution timeR
: Enforcement of a terminal constraint; attempts a recovery if not fulfilled, if true. Set to false for scan-matchingS
: Enforcement of an early gear-up feature, see code for details. Set to false for scan-matching; true for scan--to--map-scan matching