All Projects → VorpalBlade → Quickmcl

VorpalBlade / Quickmcl

Licence: gpl-3.0
QuickMCL - Monte Carlo localisation for ROS

Projects that are alternatives of or similar to Quickmcl

direct lidar odometry
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds
Stars: ✭ 202 (+741.67%)
Mutual labels:  localization, robotics, ros
Champ
𓃡 Quadruped Robot based on MIT Cheetah I
Stars: ✭ 526 (+2091.67%)
Mutual labels:  robotics, ros
Behaviortree.cpp
Behavior Trees Library in C++. Batteries included.
Stars: ✭ 793 (+3204.17%)
Mutual labels:  robotics, ros
Linorobot
Autonomous ground robots (2WD, 4WD, Ackermann Steering, Mecanum Drive)
Stars: ✭ 598 (+2391.67%)
Mutual labels:  robotics, ros
Ros best practices
Best practices, conventions, and tricks for ROS. Do you want to become a robotics master? Then consider graduating or working at the Robotics Systems Lab at ETH in Zürich!
Stars: ✭ 799 (+3229.17%)
Mutual labels:  robotics, ros
Ros comm
ROS communications-related packages, including core client libraries (roscpp, rospy, roslisp) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).
Stars: ✭ 525 (+2087.5%)
Mutual labels:  robotics, ros
Autorally
Software for the AutoRally platform
Stars: ✭ 595 (+2379.17%)
Mutual labels:  robotics, ros
Pinocchio
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Stars: ✭ 432 (+1700%)
Mutual labels:  robotics, ros
Gibsonenv
Gibson Environments: Real-World Perception for Embodied Agents
Stars: ✭ 666 (+2675%)
Mutual labels:  robotics, ros
Ardupilot
ArduPlane, ArduCopter, ArduRover, ArduSub source
Stars: ✭ 6,637 (+27554.17%)
Mutual labels:  robotics, ros
Cpprobotics
cpp implementation of robotics algorithms including localization, mapping, SLAM, path planning and control
Stars: ✭ 727 (+2929.17%)
Mutual labels:  robotics, localization
Elevation mapping
Robot-centric elevation mapping for rough terrain navigation
Stars: ✭ 520 (+2066.67%)
Mutual labels:  robotics, ros
Awesome Robotics
A curated list of awesome links and software libraries that are useful for robots.
Stars: ✭ 478 (+1891.67%)
Mutual labels:  robotics, ros
Fourth robot pkg
4号機(KIT-C4)用リポジトリ
Stars: ✭ 7 (-70.83%)
Mutual labels:  robotics, ros
Libsurvive
Open Source Lighthouse Tracking System
Stars: ✭ 462 (+1825%)
Mutual labels:  ros, localization
Roborts
An open source software stack for Real-Time Strategy research on mobile robots
Stars: ✭ 592 (+2366.67%)
Mutual labels:  robotics, ros
Champ setup assistant
CHAMP Package Config Generator
Stars: ✭ 24 (+0%)
Mutual labels:  robotics, ros
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+15966.67%)
Mutual labels:  robotics, ros
Odas
ODAS: Open embeddeD Audition System
Stars: ✭ 435 (+1712.5%)
Mutual labels:  robotics, localization
Cartographer
Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.
Stars: ✭ 5,754 (+23875%)
Mutual labels:  robotics, localization

QuickMCL

CircleCI codecov

This package implements an MCL localisation node based on (Thrun et al., 2005) as well as on reverse engineering what AMCL does.

The CPU and memory usage of QuickMCL compared to AMCL is analysed in this blog post, and it turns out QuickMCL is way better.

This was done as course-work for a robotics master program, but I thought it turned out good enough it was worth putting it up publicly after the fact. I might make improvements to it after the fact if there is any interest in the project.

This has been tested with ROS Kinetic, Melodic & Noetic, but I see no reason why it shouldn't work with newer ROS.

Just like AMCL this package estimates the location of the base_link TF frame in the map frame, but then publishes the difference between map and odom.

As inputs to the node the change over time in the odom to base_link transform is used, as well as the point cloud from the laser scanner. In addition a map is required.

Documentation

How to use the software is documented in a separate file.

There are also example launch files, in particular the one for the node of this package may be of interest. All parameters and ROS names can be overridden here. In addition there are extra launch files for related nodes that are needed or are useful in combination with this package.

As for code documentation: Doxygen documentation can be generated to the directory doc_generated by running doxygen in the directory of this file.

Limitations

Compared to AMCL:

  • Only the likelihood field model is implemented, not the beam model.
  • No support for beam skipping.
  • Only odometry type implemented is differential drive.

Shared with AMCL:

  • The map offset is taken into account, but not the rotation.

Extra features compared with AMCL

  • QuickMCL can either use a PointCloud2 topic (in the base_link TF frame) or a LaserScan topic for the sensor data. See the launch file for the laser filter for an example of how a node that converts from the laser scan to a point cloud can look.
  • Multiple resampling types implemented (low variance, adaptive, KLD).
  • Some parameters that are hard coded in AMCL (such as KLD bucket sizes) are tunable via ROS parameters.
  • Code is more documented.
  • Some bugs in AMCL have not been "reimplemented"!
    • AMCL has incorrect variance handling in the odometry models by default. You have to explicitly select "corrected" models with it.
    • Clustering wraparound for the circle cut (pi/-pi) fixed. (AMCL bug)
  • Checks if particles are inside free space and penalises particles that aren't.
  • More efficient resampling with respect to performance when the number of particles is large.
  • Lower memory usage than AMCL.

References

  • Thrun, S., Burgard, W., Fox, D., 2005. Probabilistic robotics, Intelligent robotics and autonomous agents. MIT Press, Cambridge, Mass.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].