LaMa ROS - Alternative Localization and Mapping for ROS.
https://github.com/iris-ua/iris_lama_ros
Developed and maintained by Eurico Pedrosa, University of Aveiro (C) 2019.
Overview
ROS integration of LaMa, a Localization and Mapping package from the Intelligent Robotics and Systems (IRIS) Laboratory, University of Aveiro. It provides 2D Localization and SLAM. It works great on a TurtleBot2 with a Raspberry Pi 3 Model B+ and an Hokuyo (Rapid URG).
Build
To build LaMa ROS, clone it from GitHub and use catkin
to build.
mkdir src
cd src
git clone https://github.com/iris-ua/iris_lama
git clone https://github.com/iris-ua/iris_lama_ros
cd ..
catkin config --extend /opt/ros/melodic
catkin build
The build was tested in Ubuntu 18.04 with ROS melodic. It will not build with catkin_make
or catkin_make_isolated
.
SLAM nodes
To create a map using Online SLAM execute
rosrun iris_lama_ros slam2d_ros scan:=base_scan
and to create a map using Particle Filter SLAM execute
rosrun iris_lama_ros pf_slam2d_ros scan:=base_scan
Both nodes will publish to expected topics such as /map
and /tf
.
Parameters
~global_frame_id
: The frame attached to the map (default: "map").~odom_frame_id
: The frame attached to the odometry system (default: "odometry").~base_frame_id
: The frame attached to the mobile base (default: "base_link")~d_thresh
: Traveled distance to accumulate before updating (default: 0.5 meters).~a_thresh
: Angular motion to accumulate before updating (default: 0.25 rads).~l2_max
: Maximum distance to use in the dynamic Euclidean distance map (default: 0.5 meters).~use_compression
: Should the maps be compressed (default: false).~compression_algorithm
: Compression algorithm to use, lz4 or zstd (default: "lz4").
Particle Filter SLAM only:
~particles
: Number of particles to use (default: 30).~threads
: Number of working threads, -1 means disabled and 0 will expand to the available number of cores (default: -1).~lgain
: Gain value for smoothing the particles likelihood (default: 3.0).
Localization node
This node requires the existence of the /static_map
service to load the map.
To run the localization just execute
rosrun iris_lama_ros loc2d_ros scan:=base_scan
Please use rviz
to set the initial pose. Global localization is not yet implemented.