A service robot that can be tasked to pick up and drop off items in an indoor environment.
A full demo run for this project can be found at this link (alt. link).
In this project a service robot has been used to simulate service tasks in an indoor environment. This project acts as a basis for building more advanced systems such as a roomba (robot vaccum cleaner). The models of the robot and the world have been made in gazebo.
Keywords: slam, localization, mapping, path planning, ros_nav_stack, base_planner, amcl.
Author: Rutvik Patel
The my_robot, add_markers and pick_objects packages have been tested under [ROS] Kinetic on Ubuntu 16.04.7 LTS (Xenial Xerus). This is prototype code, expect that it won't be maintained for future ROS versions.
The project has been developed and tested on Ubuntu 16.04 LTS with ROS Kinetic.
Start by updating your system using sudo apt-get update && sudo apt-get upgrade
-
Install map_server package using the command
sudo apt install ros-kinetic-map-server
-
Install slam_gmapping package using the command
sudo apt install ros-kinetic-slam-gmapping
-
Install amcl package using the command
sudo apt install ros-kinetic-amcl
-
Install move_base package using the command
sudo apt install ros-kinetic-move_base
-
Install teleop_twist_keyboard package using the command
sudo apt-get install ros-kinetic-teleop-twist-keyboard
-
Additionally install xterm using the command
sudo apt-get install xterm
At the catkin workspace root, use catkin_make
to build the packages from source.
To Launch the file go to the scripts
directory and run the shell script of choice. The scripts will launch all the required ros nodes in different xterm terminals. The scripts perform the following tasks:
test_slam.sh
: Launch the gazebo world containing the robot along withslam_gmapping
node to perform slam and generate map,rviz
to vizualize the results andteleop_twist_keyboard
to allow manual control of the robot.test_navigation.sh
: Launch the gazebo world containing the robot along withamcl
node to perform localization andrviz
to vizualize the results.pick_objects.sh
: Launch the gazebo world containing the robot along withamcl
node to perform localization,rviz
to vizualize the results andpick_objects
node to test and simulate the robot motion from spawn location to pickup point and finally to drop-off point.add_markers.sh
: Launch the gazebo world containing the robot along withrviz
to vizualize the results andadd_markers
node to test and simulate the spawning of a visual object marker (purple colour) at the pickup and drop-off points.home_service.sh
: This script launches the full project to simulate the working of the service robot and orchastrate the pickup and delivery mission. It launches the gazebo world containing the robot along withamcl
node to perform localization,rviz
to vizualize the results, andpick_objects
andadd_marker
nodes to orchastrate the robot mission (path-planning and dummy object marker vizualization).
Run the scripts by invoking them as shell commands - ./<script_name>.sh
. If the script is not an executable, run the command chmod +x <script_name>.sh
to make it an executable and then run the previous command. Alternatively, you can run the scripts using bash <script_name>.sh
or sh <script_name>.sh
For a full demo run of the mission, refer to the video link above.
- Robot at spawn location as soon as the gazebo world loads:
- Robot is on its way to pick up the purple ball (object in question):
- Robot has reached the pickup point and has collected the object:
- Robot is en route to the drop-off point:
- Robot has reached the drop-off point and has delivered the object:
- Robot has moved away and has successfully completed its mission:
- ROS
- rviz
- Navigation Guide - Tune
base_planner
andamcl
parameters.