indoor_bot is simple differential drive robot for indoor environments simulated using GazeboSim and ROS. Currently, it simulates a 2D-LiDAR sensor, an IMU and a simple camera as gazebo plugins.

This package includes some demos explaining use of this package for SLAM and Localization.


GazeboSim Cartographer-SLAM
GazeboSim RViz

Autonomous exploration for SLAM

GazeboSim Autonomous-SLAM
GazeboSim RViz

Localization and Navigation

Gazebo Rviz
GazeboSimLocalizationAMCL RVizLocalizationAMCL


This package was developed for ROS-melodic. But should be compatible for other versions of ROS1.

  1. Install ROS:

  2. Install the packages by executing the following commands in your terminal:

     source /opt/ros/melodic/setup.bash
     sudo apt-get install ros-${ROS_DISTRO}-gazebo-*
     sudo apt-get install ros-${ROS_DISTRO}-navigation
     sudo apt-get install ros-${ROS_DISTRO}-joint-state-*
     sudo apt-get install ros-${ROS_DISTRO}-visualization-msgs
     sudo apt-get install ros-${ROS_DISTRO}-cartographer-*
     sudo apt install ros-${ROS_DISTRO}-multirobot-map-merge 
     sudo apt install ros-${ROS_DISTRO}-explore-lite
     sudo apt-get install ros-${ROS_DISTRO}-teleop-twist-keyboard
  3. Clone this repo and build the package.

     source /opt/ros/melodic/setup.bash
     mkdir -p ~/catkin_ws/src
     cd ~/catkin_ws/src
     git clone
     cd ~/catkin_ws
     source devel/setup.bash

How to use?


Launch SLAM and Map the environment using teleoperation.

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

roslaunch indoor_bot cartographer_slam_teleop.launch

Instead of manually building the map, you may prefer also try to use RRT-exploration to autonomously map the robot frontier. For more documentation, please refer this page.

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

roslaunch indoor_bot cartographer_slam_rrt_exploration.launch

Once mapping is complete use map-server to save the map. In onother terminal execute the following to save your map:

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

roscd indoor_bot
cd maps
rosrun map_server map_saver -f <robotworldname>

Localization and Navigation

To localize using the map generated from SLAM you can use the following command:

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

roslaunch indoor_bot amcl_localization.launch map_file:=<filepath> world_file:=<gazebo file path>


  1. ROS Navigation Stack: link
  2. RRT exploration: link
  3. Cartographer SLAM: link
  4. teleop_twist_keyboard: link