Skip to content

Simple differential drive robot for indoor environments simulated using ROS and Gazebo.

License

Notifications You must be signed in to change notification settings

adipandas/indoor_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

indoor_bot

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.



SLAM

GazeboSim Cartographer-SLAM
GazeboSim RViz


Autonomous exploration for SLAM

GazeboSim Autonomous-SLAM
GazeboSim RViz


Localization and Navigation

Gazebo Rviz
GazeboSimLocalizationAMCL RVizLocalizationAMCL


Installation

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

  1. Install ROS: http://wiki.ros.org/ROS/Installation

  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 https://github.com/adipandas/indoor_bot.git
    cd ~/catkin_ws
    catkin_make
    source devel/setup.bash

How to use?

SLAM

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:=/path/to/map.yaml world_file:=/path/to/your_gazebo.world

References

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