Skip to content

[fix][PV][ROS] Fix pose integration and calibration

Julia Sanchez requested to merge fix/FixPoseIntegration into master

Goal

This MR contains various fixes about external sensors and calibration.

  1. Add lever arm constraint in calibration estimation. This new constraint allows to fix the translation norm between the tracked frame (i.e. base -> often the Lidar frame) and the external sensor frame.
  2. Add a window on trajectory during calibration upon two trajectories. This moving window allows to get rid of the drift in both trajectories and to only use local relative motion.
  3. Refact the calibration interface in PV to be able to set parameters

It also contains style and refact minor changes.

Changes

  1. Reset calibration in main Reset function (SLAM manager)
  2. Update PoseManager in ExternalSensorManager file to add constraint options. Add a ceres constraint for the lever arm
  3. Update SLAM interface to set the new parameters (trajectory window size and lerver arm distance)
  4. Update PV interface with new parameters
  5. Refact PV interface to better display advanced parameters
  6. Add missing calibration for wheel encoder and gravity manager in PV wrapper
  7. Add check when loading calibration from file
  8. A calibrate button is added in PV interface to calibrate when the parameters for calibration matrix is set

Results

Reproduce

Data

I have used the warehouse data

Build

In SB SLAM build folder:

ninja install

Parameters

LV params

External sensor file

External sensor calibration file

Run

  1. Run LidarView
  2. Choose advanced mode
  3. Change parameters
  4. Load external data file
  5. Run a bit of trajectory
  6. Click on Calibrate -> check result
  7. Enter the lever arm 0.0907
  8. Click again on Calibrate -> check result

Output

  • Here is a resulting map
  • Here is a resulting trajectory

Checklist

  • Camel case everywhere except for ROS variables/parameters
  • Lower case for local variables and lambda functions
  • Upper case for pour 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)
  • Space between if, while, for and parenthesis
  • Space between operators and variables: e.g. a + b
  • Space 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 if needed
  • 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

What remains to solve

  • Update ROS interface
Edited by Tong Fu

Merge request reports