This is the capstone ROS project from the Udacity Robotics Software Engineer course.
The robot's task is to pickup a package and deliver it to a goal location. The robot utilizes a map for localization and navigation. The map was initially created using the gmapping ROS package based on Simultaneous Localization and Mapping algorithm (SLAM). The robot utilizes the Adaptive Monte Carlo Localization ROS package (AMCL) to track the pose of the robot against a known map.
The source code is released under an MIT license.
Author: Andres Campos
The packages: add_markers, pick_objects, slam_gmapping, amcl,move_base, navigation and turtlebot_gazebo have been tested under ROS Kinetic on Ubuntu 16.04. This code is for personal learning and any fitness for a particular purpose is disclaimed.
To install all packages from this repository as Debian packages use
sudo apt-get install ros-kinetic-...
Or use rosdep:
sudo rosdep install --from-paths src
- Robotics Operating System (ROS) (middleware for robotics)
sudo rosdep install --from-paths src
- Adaptive Monte Carlo Localization (amcl) (probabilistic localization system for a robot moving in 2D)
sudo apt-get install ros-kinetic-amcl
- move_base (allows the user to move the robot to a desired position and orientation)
sudo apt-get install ros-kinetic-move-base
- navigation (2D navigation stack that outputs a velocity command to a mobile base given odometry information and a target pose)
sudo apt-get install ros-kinetic-navigation
- turtlebot_gazebo (Gazebo launch and world files for TurtleBot simulation)
cd /catkin_ws/src
git clone https://github.com/turtlebot/turtlebot_simulator
cd /catkin_ws
source devel/setup.bash
rosdep -i install turtlebot_gazebo
- gmapping (creates a 2D occupancy grid map from laser and pose data collected by a mobile robot)
cd /catkin_ws/src/slam_gmapping
git clone https://github.com/ros-perception/slam_gmapping.git
- turtlebot_teleop (allows the user to teleoperate a robot)
cd /catkin_ws/src
git clone https://github.com/turtlebot/turtlebot.git
To build from source, clone the latest version from this repository into your catkin workspace and compile this package using
cd catkin_workspace/src
git clone https://github.com/acampos074/HomeServiceRobot.git
cd ..
catkin_make
Navigate to the /src/scripts directory, and launch the shell script:
./home_service.sh
- world.launch: Gazebo launch and world file
- amcl_demo.launch: probabilistic localization system
- view_navigation.launch: 3D visualizer
Subscribed Topics
-
/pick_objects/marker_state(std_msgs/Bool)Tracks the boolean state of the marker. Set to false if the package is not in its pickup location.
-
/amcl_pose(geometry_msgs/PoseWithCovarianceStamped)Reads the estimated X & Y coordinates of the mobile robot from the AMCL algorithm.
Published Topics
-
/visualization_marker(visualization_msgs/Marker)Displays the shape, size, color and position of a marker.
Published Topics
-
/pick_objects/marker_state(std_msgs/Bool)Tracks the boolean state of the package. Set to false if the package is not in it's pickup location.
Please report bugs and request features using the Issue Tracker