• Stars
    star
    478
  • Rank 91,950 (Top 2 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created about 8 years ago
  • Updated 4 months ago

Reviews

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

Repository Details

A ROS node to perform a probabilistic 3-D/6-DOF localization system for mobile robots with 3-D LIDAR(s). It implements pointcloud based Monte Carlo localization that uses a reference pointcloud as a map.

mcl_3dl

Build Status Codecov License

Package summary

mcl_3dl is a ROS node to perform a probabilistic 3-D/6-DOF localization system for mobile robots with 3-D LIDAR(s). It implements pointcloud based Monte Carlo localization that uses a reference pointcloud as a map.

The node receives the reference pointcloud as an environment map and localizes 6-DOF (x, y, z, yaw, pitch, roll) pose of measured pointclouds assisted by a motion prediction using odometry.

Currently, the supported motion model is differential-wheeled-robot. The node provides classic MCL; currently, it doesn't implement adaptive feature like KDL-sampling and etc.

Algorithms

A fundamental algorithm of mcl_3dl node is Monte Carlo localization (MCL), aka particle filter localization. MCL represents a probabilistic distribution of estimated pose as density and weight of particles and estimates the pose from the distribution.

Node I/O

mcl_3dl I/O diagram

Install

from source

Note: mcl_3dl_msgs package is required to build mcl_3dl package.

# clone
cd /path/to/your/catkin_ws/src
git clone https://github.com/at-wat/mcl_3dl.git
git clone https://github.com/at-wat/mcl_3dl_msgs.git

# build
cd /path/to/your/catkin_ws
rosdep install --from-paths src --ignore-src -y  # Install dependencies
catkin_make -DCMAKE_BUILD_TYPE=Release  # Release build is recommended

from apt repository (for ROS Indigo/Kinetic/Lunar on Ubuntu)

sudo apt-get install ros-${ROS_DISTRO}-mcl-3dl

Running the demo

The example bag file of 2+4-DOF tracked vehicle with two Hokuyo YVT-X002 3-D LIDAR is available online. Pre-processed (filtered) 3-D pointcloud, IMU pose, odometry, and map data are packed in the bag.

# Download the example bag (230M)
wget -P ~/Downloads https://openspur.org/~atsushi.w/dataset/mcl_3dl/short_test3.bag

# Running the demo
roslaunch mcl_3dl test.launch use_pointcloud_map:=false use_cad_map:=false \
  use_bag_file:=true bag_file:=${HOME}/Downloads/short_test3.bag

The map data in the bag was generated by using the cartographer_ros and filtered by using pcl_outlier_removal and pcl_voxel_grid utilities.

Rviz image of the demo

MarkerArray shows several mcl_3dl internal information.

  • Purple spheres: sampled points used in the likelihood-model calculation
  • Red lines: casted rays in the beam-model calculation
  • Red boxes: detected collisions in raycasting

To try global localization, call /global_localization by the following command.

rosservice call /global_localization

Demos without odometry and without IMU are also available.

Contributing

mcl_3dl package is developed under GitHub flow. Feel free to open new Issue and/or Pull Request.

The code in this repository is following ROS C++ Style Guide. A configuration file for clang-format is available at https://github.com/seqsense/ros_style/.

License

More Repositories

1

neonavigation

A 2-D/3-DOF seamless global/local mobile robot motion planner package for ROS
C++
301
star
2

ebml-go

A pure Go implementation of bi-directional EBML encoder/decoder
Go
76
star
3

mqtt-go

Yet another Go MQTT 3.1.1 client library: Go-ish interface, extensible and thread-safe (experimental stage; the API may change in future release)
Go
35
star
4

hokuyo3d

A ROS driver node for VSSP protocol compliant HOKUYO 3D LIDARs
C++
15
star
5

bloom-release-action

GitHub Action to bloom release the ROS package.
Shell
14
star
6

assets-sync-action

GitHub Action to deploy asset files to multiple repositories.
Shell
7
star
7

catkin-release-action

GitHub Action to create ROS package release candidate branch
Shell
6
star
8

go-sum-fix-action

GitHub Action to update go.sum. (Mainly for working with Renovate Bot which sometimes lacks package sum.)
Shell
5
star
9

s3iot

AWS S3 Uploader/Downloader for IoT-ish applications
Go
4
star
10

eagle2svg

Eagle cad to SVG converter
Python
4
star
11

alpine-ros

[DEPRECATED] This repository has been deprecated! Visit new repository ->
Dockerfile
4
star
12

ROS-quick-start-up

ROS quick start-up tutorial by using actual robot. This text was used in the Robotics Seminar #99 held by the Robotics Society of Japan.
HTML
3
star
13

terraform-provider-ucodecov

Unofficial terraform provider for codecov.io
Go
3
star
14

cartographer_hokuyo3d

Google Cartographer SLAM Settings for Hokuyo YVT 3D LIDAR.
Lua
3
star
15

ublox-rtcm3

ublox M8T to RTCM3
Batchfile
3
star
16

ntrip-proxy

Shell
2
star
17

imu_compensate

Automatic imu calibration node for ROS.
C++
2
star
18

switchweb

SwitchBot Client on local Web
Go
2
star
19

gh-pr-comment

GitHub PR comment post tool from CI environments
Go
2
star
20

libmpsse

Automatically exported from code.google.com/p/libmpsse
C
1
star
21

rsj_seminar_navigation

Tutorial of navigation package for RSJ seminar 99
CMake
1
star
22

.rospkg-assets

Asset files for ROS packages
1
star
23

rtcm3_ros

C++
1
star
24

sandbox

Go
1
star
25

twfeed

Go
1
star
26

actions-runner

GitHub Actions Runner Docker image
Dockerfile
1
star
27

docker-ros-bloom

Shell
1
star
28

setup-gh-pr-comment

GitHub Action to setup gh-pr-comment
TypeScript
1
star
29

festival-voices

Mirror of http://festvox.org/packed/festival/2.5/voices/ for buildfarms
Makefile
1
star
30

roslint-pip

pip installable roslint forked from https://github.com/ros/roslint
Python
1
star