Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/toshikinakamura0412/emcl_ros
ROS implementation of emcl (mcl with expansion resetting)
https://github.com/toshikinakamura0412/emcl_ros
cpp dynamic-reconfigure localization mcl mit-license robotics ros ros-noetic
Last synced: 3 days ago
JSON representation
ROS implementation of emcl (mcl with expansion resetting)
- Host: GitHub
- URL: https://github.com/toshikinakamura0412/emcl_ros
- Owner: ToshikiNakamura0412
- License: mit
- Created: 2024-05-03T09:58:19.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2024-06-22T16:34:07.000Z (7 months ago)
- Last Synced: 2024-11-20T21:58:45.240Z (2 months ago)
- Topics: cpp, dynamic-reconfigure, localization, mcl, mit-license, robotics, ros, ros-noetic
- Language: C++
- Homepage:
- Size: 147 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# emcl_ros
![Build Status](https://github.com/ToshikiNakamura0412/emcl_ros/workflows/build/badge.svg)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)ROS implementation of emcl (mcl with expansion resetting)
Support Dynamic Reconfigure
## Environment
- Ubuntu 20.04
- ROS Noetic## Install and Build
```
# clone repository
cd /path/to/your/catkin_ws/src
git clone https://github.com/ToshikiNakamura0412/emcl_ros.git# build
cd /path/to/your/catkin_ws
rosdep install -riy --from-paths src --rosdistro noetic # Install dependencies
catkin build emcl_ros -DCMAKE_BUILD_TYPE=Release # Release build is recommended
```## How to use
```
roslaunch emcl_ros emcl.launch
```## Running the demo
```
# clone repository
cd /path/to/your/catkin_ws/src
git clone https://github.com/ToshikiNakamura0412/scan_to_pcl_ros.git
git clone https://github.com/ToshikiNakamura0412/gyrodometry_ros.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git# build
cd /path/to/your/catkin_ws
rosdep install -riy --from-paths src --rosdistro noetic
catkin build -DCMAKE_BUILD_TYPE=Release# run demo
## terminal 1
export TURTLEBOT3_MODEL=burger
roslaunch emcl_ros test.launch
## terminal 2
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
```
### Use gyrodometry
```
roslaunch emcl_ros test.launch use_gyrodom:=true
```## Node I/O
![Node I/O](images/node_io.png)## Nodes
### emcl
#### Published Topics
- /emcl_pose (`geometry_msgs/PoseWithCovarianceStamped`)
- The estimated pose of the robot
- /tf (`tf2_msgs/TFMessage`)
- tf (from the global frame to the odom frame)
- ~\/particle_cloud (`geometry_msgs/PoseArray`)
- The particle cloud of mcl#### Subscribed Topics
- /cloud (`sensor_msgs/PointCloud2`)
- The input pointcloud data
- If ~\/use_cloud is false, this topic is not used
- /initialpose (`geometry_msgs/PoseWithCovarianceStamped`)
- The initial pose of the robot
- /odom (`nav_msgs/Odometry`)
- The odometry data
- /scan (`sensor_msgs/LaserScan`)
- The input laser scan data (default)#### Parameters
##### EMCL Parameters
- ~\/expansion_position_dev (float, default: `0.07` [m]):
The standard deviation of the expansion noise in position
- ~\/expansion_orientation_dev (float, default: `0.2` [rad]):
The standard deviation of the expansion noise in orientation
- ~\/init_x (float, default: `0.0` [m]):
The initial x position of the robot
- ~\/init_y (float, default: `0.0` [m]):
The initial y position of the robot
- ~\/init_yaw (float, default: `0.0` [rad]):
The initial yaw of the robot
- ~\/init_position_dev (float, default: `0.1` [m]):
The standard deviation of the initial noise in position
- ~\/init_orientation_dev (float, default: `0.05` [rad]):
The standard deviation of the initial noise in orientation
- ~\/laser_step (int, default: `4`):
The step of the laser scan
- ~\/likelihood_th (float, default: `0.002`):
The threshold of the likelihood
- ~\/particle_num (int, default: `420`):
The number of particles
- ~\/reset_count_limit (int, default: `3`):
The limit of the reset count
- ~\/sensor_noise_ratio (float, default: `0.03`):
The ratio of sensor noise to the actual sensor noise
- ~\/use_cloud (bool, default: `False`):
If true, use pointcloud instead of laser scan##### OdomModel Parameters
- ~\/ff (float, default: `0.17` [m]):
Standard deviation of forward noise per forward
- ~\/fr (float, default: `0.0005` [m]):
Standard deviation of forward noise per rotation
- ~\/rf (float, default: `0.13` [rad]):
Standard deviation of rotation noise per forward
- ~\/rr (float, default: `0.2` [rad]):
Standard deviation of rotation noise per rotation##### Scan Parameters
If pointcloud is used, following parameters are used.- ~\/range_min (float, default: `0.12` [m]):
The minimum range of the sensor
- ~\/range_max (float, default: `3.5` [m]):
The maximum range of the sensor##### Common Parameters
- ~\/use_dynamic_reconfigure (bool, default: `False`):
If true, use dynamic reconfigure## References
- 上田隆一, "詳解 確率ロボティクス Pythonによる基礎アルゴリズムの実装", Kodansya, 2019
- https://github.com/ryuichiueda/emcl
- 赤井直紀, "LiDARを用いた高度自己位置推定システム - 移動ロボットのための自己位置推定の高性能化とその実装例", コロナ社, 2022
- https://github.com/NaokiAkai/ALSEdu