ori-drs / aicp_mapping

Auto-tuned Iterative Closest Point -- AICP -- Public
GNU Lesser General Public License v2.1
3 stars 6 forks source link

Auto-tuned ICP

Auto-tuned Iterative Closest Point (AICP) is a module for laser-based localization and mapping (Nobili et al., ICRA 2017). The implementation of AICP includes a module for localization failure prediction (Nobili et al., ICRA 2018). The registration strategy is based on the libpointmatcher framework (Pomerleau et al., AR 2012).

Demonstration Video with ANYMal:

Watch the video

AICP has been tested on:

For inter-process communication, the package includes wrappers for:


Description

The core AICP strategy is compiled in aicp_core. The default steps perform frame-to-reference localization and mapping, and include:

  1. On a thread, AICP accumulates laser scans, i.e. each 3D point cloud processed for registration is constituted of batch_size scans
  2. On a second thread, it stores the first point cloud as the reference cloud
  3. Prior to registration, AICP computes an octree-based overlap parameter (Nobili et al., ICRA 2018) between the current and reference point clouds, and uses it to auto-tune online the outlier rejection filter of the registration strategy
  4. A reference point cloud update can be trigger either in a windowed fashion (reference_update_frequency) or based on the risk of alignment failure prediction (failure_prediction_mode)
  5. AICP registers each new point cloud to the reference point cloud
  6. Finally, AICP publishes a corrected body pose estimate at the frequency of the state estimator

Additional Functionalities


Quick Start

Dependencies

TODO: add complete list of apt install packages

sudo apt-get install libpointmatcher-dev libpointmatcher1

How To Compile

The code is cloned and built in the standard manner for a ROS package.

Tips:

catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

How To Run

ROS

LCM (discontinued)

Help: rosrun aicp_lcm aicp_lcm_node -h Example: rosrun aicp_lcm aicp_lcm_node -s debug -b 80 -f 5

Note:

Misc

Required Topics (ROS):

To filter an ANYmal rosbag to contain only the required topics

Main dependencies

Credits

@inproceedings{Nobili17icra,
  title = {Overlap-based {ICP} Tuning for Robust Localization of a Humanoid Robot},
  author = {S. Nobili and R. Scona and M. Caravagna and M. Fallon},
  booktitle = {{IEEE International Conference on Robotics and Automation (ICRA)}},
  location = {Singapore},
  month = {May},
  year = {2017},
}
@inproceedings{NobiliCamurri17rss,
  title = {Heterogeneous Sensor Fusion for Accurate State Estimation of Dynamic Legged Robots},
  author = {S. Nobili and M. Camurri and V. Barasuol and M. Focchi and D. Caldwell and C. Semini and M. Fallon},
  booktitle = {{Robotics: Science and Systems (RSS)}},
  location = {Boston, MA, USA},
  month = {July},
  year = {2017},
}
@inproceedings{Nobili18icra,
  title = {Predicting Alignment Risk to Prevent Localization Failure},
  author = {S. Nobili and G. Tinchev and M. Fallon},
  booktitle = {{IEEE International Conference on Robotics and Automation (ICRA)}},
  location = {Brisbane, Australia},
  month = {May},
  year = {2018},
}

License

The License information is available in the LICENSE file contained in this project repository.

Author: Simona Nobili, March 2019. Email: snobili@robots.ox.ac.uk, simona.nobili@ed.ac.uk