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 | Autonomous-SLAM |
---|---|
Gazebo | Rviz |
---|---|
This package was developed for ROS-melodic. But should be compatible for other versions of ROS1.
-
Install ROS: http://wiki.ros.org/ROS/Installation
-
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
-
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
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>
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