This is a comprehensive repository of Udacity Robotics Software Engineer Nanodegree final project. In this project, we built a package which is capable from SLAM(Simultaneous Localization And Mapping), executing navigation goal and pick up/drop off objects.
This repository is tested and successfully built under Ubuntu 16.04 and ROS Kinetic, with Gazebo 7.15 integration.
Install package tools:
$ pip install catkin_pkg
$ pip install rospkg
$ sudo apt-get install python-rospkg
For related ros package(very important):
$ sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-ar-track-alvar-msgs
$ sudo apt-get install ros-kinetic-navigation
Update everything:
$ sudo apt-get update && sudo apt-get upgrade -y
$ mkdir -p catkin/src
$ cd catkin_ws/src
$ catkin_init_workspace
$ git clone --recursive https://github.com/pat-CIMAR-UF/RoboND_Home_Service_Robot.git
$ cd ..
$ catkin_make
Official ROS pkgs:
$ cd catkin_ws/src/RoboND_Home_Service_Robot/scripts
$ chmod +x test_slam.sh
$ ./test_slam.sh
Then find the teleop terminal and control the robot as prompted.
$ cd catkin_ws/src/RoboND_Home_Service_Robot/scripts
$ chmod +x test_navigation.sh
$ ./test_navigation.sh
Then select the "2D Nav Goal" tab from rviz to give the robot an goal location.
$ cd catkin_ws/src/RoboND_Home_Service_Robot/scripts
$ chmod +x home_service.sh
$ ./home_service.sh
A better mp4 file could be downloaded here. It's smaller than this gif and clearer.
Comments about the gif above.
When initiated, the red sparse particles are created by the Adaptive Monte Carlo Localization package. The sparse distribution means the AMCL is very uncertain about the the exact location of the robot.
The blue square is the virtual object the robot is supposed to pick up. As one can see, the red sparse particles didn't converge while the robot is moving towards the pick up location. The AMCL package cannot localize the robot well because of the lack of clear landmarks/features on the way.
When the robot reached the pick-up location, it rotated itself first for a better trajectory later.
When robot moving to the drop-off location, the red AMCL particles converged, because of sufficient good landmarks/features.
The robot reached the planned pick-up and drop-off locations, the xterm terminal reported every step, and the virtual objects appeared and disappeared as planned, so this project could be concluded as a success.