The goal of this project is to launch autonomous robot (Turtlebot) in simulated Gazebo environment to provide home service: pick and place operation of objects in arbitrary locations.
This package loads Turtlebot model into Gazebo world. This robot will be used in the project to provide home service.
This package is used to teleoperate Turtlebot from keyboard. In this project it is used to control robot during environment mapping.
This package provides a convinent way to visualize Turtlebot in RViz, including map visualization, path visualization, sensor readings tracking, etc.
slam_gmapping
is a ROS package that implements laser-based SLAM
(simultaneous localization and mapping). The implementation is based on
Rao-Blackwellized particle filter for localization combined with occupancy grid
mapping algorithm.
In this project slam_gmapping
is used to map the environment for a home
service robot where it will operate. It is assummed that environment is static
and thus map can be prebuilt and then reused by a localization-only algorithm
(like AMCL, for instance).
This package implements Adaptime Monte-Carlo Localization algorithm, based on particle filter.
It is assumed that the map of the environment is known in
advance (for instance, built using slam_gmapping
package).
In this project amcl
is used to localize robot during its home service
operation.
This package solves a problem of global navigation linking together local and global path planners. In this project it is used to plan a path given goal pose of the Turtlebot.
This package provides a service add_markers
that will add or delete markers
in RViz at requested location.
I decided to implement this package using services because I think that it is
a good case for this kind of communcation: markers are shown and hidden only as
a response to certain events (robot reached some location). Moreover, this
approach allows to fully decouple add_markers
package from robot target locations:
those are communicated through service requests by other packages.
This package is a core of robot home service schedule. It defines pick and place
locations, activates moving action using move_base
package and controls
markers visualization using add_markers
service.