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 ..
makeRun 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 Se.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 0where
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 ofdatasetC: The start sample id; typically 0D: The end sample id; here|dataset| = 778E: 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

