Range-only Localization and Mapping Solutions
1. Range-only SLAM
MRPT at present offers one SLAM solution for RO-SLAM, integrated into the RBPF-SLAM framework. Refer to this tutorial for more details on the different methods available.
Users can employ 2D or 3D poses in RBPF-SLAM, but notice that RO-SLAM with a RBPF requires a decent odometry as input, which can comprise 2D or 3D robot motion actions.
2. Range-only Localization
There are two implementations:
The pf-localization application is a CLI to the underlying C++ class from the library mrpt::apps.
Users can employ 2D or 3D odometry as input for 2D or 3D motion estimation. If no odometry is available, using a no-motion mean value with a large uncertainty should work.
The CLI application works with offline data only, for online use, please refer to the underlying class in mrpt::apps or use the even most low-level classes:
mrpt::slam::CMonteCarloLocalization2D: For robots moving in 2D, with SE(2) poses (x,y,phi)
mrpt::slam::CMonteCarloLocalization3D: For robots moving in 3D space, with SE(3) poses (x,y,z,yaw,pitch,roll)
The ro-localization application is exactly like pf-localization above, but with two differences:
It’s available for 2D only (at present).
It defines an extended state vector (at each particle) with an estimate of the current bias of each beacon/anchor.
If your sensors do NOT suffer of bias with often, abrupt large changes, the regular PF solution should be preferred (faster, simpler).