Skip to content
LaMa on ROS
C++ CMake
Branch: master
Clone or download
Latest commit 95ad867 Oct 2, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
include/lama/ros Go public. Oct 2, 2019
CMakeLists.txt Go public. Oct 2, 2019
LICENSE.txt Go public. Oct 2, 2019
package.xml Go public. Oct 2, 2019

LaMa ROS - Alternative Localization and Mapping for ROS.

Developed and maintained by Eurico Pedrosa, University of Aveiro (C) 2019.


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).


To build LaMa ROS, clone it from GitHub and use catkin to build.

mkdir src
cd src
git clone
git clone
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.


  • ~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.

You can’t perform that action at this time.