• Stars
    star
    200
  • Rank 195,325 (Top 4 %)
  • Language
    C++
  • License
    GNU Lesser Genera...
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pronto - Legged Robot State Estimator - libraries, ROS wrapper and messages

CI

Introduction

Pronto is an efficient, versatile and modular EKF state estimator for both proprioceptive (inertial, kinematics) and exteroceptive (LIDAR, camera) sensor fusion. It has been used with a variety of inputs from sensors such as IMUs (Microstrain, KVH, XSense), LIDAR (Hokuyo, Velodyne), cameras (Carnegie Robotics Multisense SL, Intel RealSense) and joint kinematics.

Legged Robots

Pronto provided the state estimate that was used by MIT DRC team in the DARPA Robotics Challenge to estimate the position and motion of the Boston Dynamics Atlas robot.

image Pronto on Atlas

Since then, it has been adapted to estimate the motion of the NASA Valkyrie robot at the University of Edinburgh, the HyQ quadruped robot at the Istituto Italiano di Tecnologia, and the ANYmal quadruped robot at the University of Oxford.

image Pronto on HyQ

Micro Aerial Vehicles

Pronto was originally developed for Micro Aerial Vehicle state estimation. The modules specific to MAVs (e.g., altimeter, GPS) are not currently supported.

Software Overview

The algorithms (and their ROS wrappers) are written in C/C++ and organized as catkin packages. The repository consists of the following main modules:

  • pronto_core: core libraries that implment the filter, the state and basic measurement modules (e.g., IMU, pose update)
  • pronto_biped leg odometry measurement modules for humanoid robots (tested on Atlas and Valkyrie)
  • pronto_quadruped leg odometry libraries for a quadruped robot (tested on HyQ and ANYmal)
  • pronto_quadruped_commons abstract interfaces to perform leg odometry on a quadruped robot. This is a fork of the iit_commons package (see here).
  • *_ros ROS wrappers of the above modules
  • other support packages for filtering

Dependencies

Pronto depends on Eigen and Boost

System Requirements

The target operating system is Ubuntu 18.04 equipped with ROS Melodic.
Other versions of Ubuntu/ROS might work but they are not actively supported or tested.

Building the Code

Pronto is organized as a collection of catkin packages. To build the code, just run catkin build followed by the name of the packages you are interested to build.

Robot Implementation Example

To learn how to use Pronto on your robot, you can have a look at this repository, which contains a full implementation on the ANYmal quadruped robot.

Publications

If you use part of this work in academic context, please cite the following publication:

M. Camurri, M. Ramezani, S. Nobili, M. Fallon
Pronto: A Multi-Sensor State Estimator for Legged Robots in Real-World Scenarios
in Frontiers on Robotics and AI, 2020 (PDF) DOI: 10.3389/frobt.2020.00068

@article{camurri2020frontiers,
  author = {Camurri, Marco and Ramezani, Milad and Nobili, Simona and Fallon, Maurice},   
  title = {{Pronto: A Multi-Sensor State Estimator for Legged Robots in Real-World Scenarios}},      
  journal = {Frontiers in Robotics and AI},
  volume = {7},
  number = {68},
  pages = {1--18},     
  year = {2020},      
  url = {https://www.frontiersin.org/article/10.3389/frobt.2020.00068},
  doi = {10.3389/frobt.2020.00068},	
  issn = {2296-9144}
}

Previous publications

S. Nobili, M. Camurri, V. Barasuol, M. Focchi, D.G. Caldwell, C. Semini, M. Fallon
Heterogeneous Sensor Fusion for Accurate State Estimation of Dynamic Legged Robots
in Proceedings of Robotics: Science and Systems XIII, 2017 (PDF) DOI: 10.15607/RSS.2017.XIII.007

@inproceedings{nobili2017rss,
    author = {Simona Nobili AND Marco Camurri AND Victor Barasuol AND Michele Focchi AND Darwin Caldwell AND Claudio Semini AND Maurice Fallon}, 
    title = {{Heterogeneous Sensor Fusion for Accurate State Estimation of Dynamic Legged Robots}}, 
    booktitle = {Proceedings of Robotics: Science and Systems}, 
    year = {2017}, 
    address = {Cambridge, Massachusetts}, 
    month = {July}, 
    doi = {10.15607/RSS.2017.XIII.007} 
}

M. Camurri, M. Fallon, S. Bazeille, A. Radulescu, V. Barasuol, D.G. Caldwell, C. Semini
Probabilistic Contact Estimation and Impact Detection for State Estimation of Quadruped Robots
in IEEE Robotics and Automation Letters, vol. 2, no. 2, pp. 1023-1030, April 2017 (PDF) DOI: 10.1109/LRA.2017.2652491

@article{camurri2017ral,
      author={M. {Camurri} and M. {Fallon} and S. {Bazeille} and A. {Radulescu} and V. {Barasuol} and D. G. {Caldwell} and C. {Semini}},
      journal={IEEE Robotics and Automation Letters},
      title={{Probabilistic Contact Estimation and Impact Detection for State Estimation of Quadruped Robots}},
      year = {2017},
      volume = {2},
      number = {2},
      pages = {1023-1030},
      doi = {10.1109/LRA.2017.2652491},
      ISSN = {2377-3766},
      month = {April}}

M. Fallon, M. Antone, N. Roy, S. Teller
Drift-Free Humanoid State Estimation fusing Kinematic, Inertial and LIDAR sensing
2014 IEEE-RAS International Conference on Humanoid Robots (PDF) DOI:10.1109/HUMANOIDS.2014.7041346

@inproceedings{fallon2014humanoids,
author={M. F. {FallΓ³n} and M. {Antone} and N. {Roy} and S. {Teller}},
booktitle={2014 IEEE-RAS International Conference on Humanoid Robots},
title={Drift-free humanoid state estimation fusing kinematic, inertial and LIDAR sensing},
year={2014},
volume={},
number={},
pages={112-119},
doi={10.1109/HUMANOIDS.2014.7041346},
ISSN={},
month={Nov},}

A. Bry, A. Bachrach, N. Roy
State Estimation for Aggressive Flight in GPS-Denied Environments Using Onboard Sensing
2012 IEEE International Conference on Robotics and Automation (PDF) DOI:10.1109/ICRA.2012.6225295

@inproceedings{bry2012icra,
author={A. {Bry} and A. {Bachrach} and N. {Roy}},
booktitle={2012 IEEE International Conference on Robotics and Automation},
title={State estimation for aggressive flight in GPS-denied environments using onboard sensing},
year={2012},
volume={},
number={},
pages={1-8},
doi={10.1109/ICRA.2012.6225295},
ISSN={},
month={May},}

Credits

Additional contributors

Andy Barry, Pat Marion, Dehann Fourie, Marco Frigerio, Michele Focchi, Benoit Casseau, Russell Buchanan, Wolfgang Merkt

License

Pronto is released under the LGPL v2.1 license. Please see the LICENSE file attached to this document for more information.

More Repositories

1

allan_variance_ros

ROS compatible tool to generate Allan Deviation plots
C++
474
star
2

plane_seg

Plane Segmentation Utilites
C++
159
star
3

isam

iSAM is an optimization library for sparse nonlinear problems as encountered in simultaneous localization and mapping (SLAM).
C++
90
star
4

pronto-distro

Pronto is now built in ROS and developed at https://github.com/ori-drs/pronto_core
C++
78
star
5

director

An intuitive user interface for operating field mobile robots
Python
27
star
6

pronto_anymal_example

Example binary running the Pronto state estimator on the ANYmal B robot
C++
24
star
7

recast_ros

C++
14
star
8

integrated-dynamic-motion-planning-framework

14
star
9

quadruped_robcogen

RobCoGen code generator for any quadruped robot from the xacro description
CMake
13
star
10

gaitmesh

C++
12
star
11

director_anymal_b_simple

Python
11
star
12

slam_tutorial

ORIentate tutorial: SLAM and factor graphs
Jupyter Notebook
9
star
13

hesai_description

URDF Model of hesai lidar products
CMake
8
star
14

trajectory_prediction_ros

C++
7
star
15

frontier_description

URDF of the Frontier Handheld Device
CMake
6
star
16

lfmc_gym

Training repository for learning Low-Frequency Motion Control (LFMC) policies using RL
C++
6
star
17

rloc_manuscript_supplementary_code

Supplementary code to the RLOC manuscript.
Python
5
star
18

fovis_ros

ROS node for FOVIS
C++
3
star
19

aicp_mapping

Auto-tuned Iterative Closest Point -- AICP -- Public
C++
3
star
20

vo_estimate

DEPRECIATED. DO NOT USE. LCM node for FOVIS. Uses pods.
C++
2
star
21

gpu_voxels_ros

C++
2
star
22

halo_description

Robot Model definition of the HALO (Handheld Alphasense Lidar Ouster)
CMake
2
star
23

apriltags_archived

C
1
star
24

hierarchical-planning-sequences

Learning Sequences of Approximations for Hierarchical Motion Planning (ICAPS 2020)
C++
1
star
25

director_digiforest

Python
1
star
26

drs-externals

(was called legacy_pods)
CMake
1
star
27

cdt_challenge_2021

CDT Challenge 2021: Autonomous exploration with wheeled robots
Python
1
star
28

surfel_map

C++
1
star
29

centermask_ros

A package for launching centermask and detectron nodes in a dockerised catkin workspace
1
star
30

ImMesh_hesai

C++
1
star
31

sdf_mp_integration

C++
1
star
32

manipulation_playground

A set of manipulation models used in the lab. Static and actuated models for visualisation and simulation
Python
1
star