[feat] Use tag info
- Goal : include constraints built from tags info reception in optimization
-
Changes :
- The external sensors interface is refactored to handle online sensor data (commit 1)
- A landmark manager is added to process the tag info sent by a tag detector (such as a camera)
- A constraint can be added with those pose info. This constraint can be absolute if we know the real absolute pose of the tags in the world or relative if we detect them as keypoints and use them to add a local constraint. (commit 3)
- A robust estimator (Tukey loss) is added to reject tag detection outliers.
- [ROS] A new package is added to store the messages coming from external sensor drivers. This allows to use those messages in wrapping without integrating the whole driver packages.
-
New parameters :
- Time threshold : it allows to reset the tag keypoint if the tag is seen again after a time period (e.g. loop closure) and to not interpolate the sensor measures if the interpolation bounds are too far temporary speaking
- Maximum measures number : to limit the number of input sensor measurements. The oldest are forgotten.
- Landmark weight : weight for the tag constraints in optimization (the weight must reflect the fact that tags matches are usually more reliable than other geometric matches). If the weight is null, the tags are not used.
- Saturation distance : distance beyond which the tag constraint in not taken into account in the optimization (tag may have moved or detection may have failed).
- landmarks file path : path to a csv file containing the tags' absolute poses. If no file is loaded (path is empty), the relative constraint is used.
-
Notes:
- Wheel odometer and IMU data are not currently supported with ROS wrapping
- Wheel odometer and IMU data are only supported in a loading file way in PV
- Landmark detection is not supported with PV wrapping
@nick.laurenson PTAL
Edited by Julia Sanchez