[PV][fix] Fix some interface inconsistencies
Goal
The loop closure interface was not user friendly enough and lead to bad pose graph estimations.
A bug was appearing when 2 loops were detected and the graph was optimized afterwards.
Changes
Interface
- Fix and improve verbose outputs
- Remove the default "no subsampling mode"
- Force submaps to be built on previous frames
- Correct and uniformize the visibility options
- Remove validation threshold on best loop closure
Library
- The loop closure transform is uniformized to be always relative in all code parts
- A hint prior transform can be provided to LoopClosureRegistration function. This prior can come from LogStates, Offset and/OR Teaser
- LoopClosureTransform is removed and a new transform member is added to LoopInfo (formerly LoopIndices) structure. This allows to store various LC transforms and to not override the value.
Results
Checklist
-
Camel case everywhere except for ROS variables/parameters -
Lower case for local variables and lambda functions -
Upper case for members, methods and tool functions (in Utils) -
Precise namespace when calling a function (or this->X or classe.X) -
Align code (for multiline if and while, "&&" or "||" go in upper line to ensure alignement) -
Check your spaces -
between if, while, for and parenthesis -
between operators and variables: e.g. a + b -
after ","
-
-
Mind your commit titles/desc (plurals, he/she + "s", correct tags, title should begin by a verb...) -
Function names should start with a verb, variable names should start with a name -
Macros should be between {} -
Do not use negative boolean (i.e. noJoe) -
Check minimal size of the types (double -> float -> int -> uint) -
Check const and ref in functions arguments -
References should be written "type& name", not "type &name" -
Update documentation -
Add MR labels [ROS]/[ROS2]/[PV] -
If ros/ros2, update task table here -
Add a comment over each non trivial function in header files -
Add a header to each new file
Edited by Julia Sanchez