Course website: Robotics Software Engineer
There are a total of 5 projects, starting off easy with ROS essentials and building a world in Gazebo, and ending with making a mobile robot perform a pickup-dropoff in an unknown map using the ROS navigation stack.
All media files can be found in the media folder.
Project folders in this repository are complete on their own and require no additional downloads.
Contents of each project should be placed in the src
folder of the catkin workspace. To avoid any possible conflicts,
it's advised to have a separate workspace for every project.
Requirements: Ubuntu 16.04 and ROS Kinetic
Dependencies: listed in every project's README (will be updated, check back soon!)
Before getting started, open the terminal and execute this line:
sudo apt-get update && sudo apt-get upgrade -y
An introduction to Gazebo: creating models and buildings and populating a world with them. world
files created in this project were used in the subsequent projects.
A very basic visual servoing task in which a differential drive mobile robot detects and pursues a ball.
Given a map generated by pgm_map_creator
, Adaptive Monte Carlo Localization (also called particle filter localization) is used to localize the robot. As can be seen from the converging yellow markers, only the first few sensor updates are sufficient for the robot to be confident enough of its location relative to the map.
ROS package used: amcl
Initial guesses | Estimates after first few sensor updates |
---|---|
Example 1 | Example 2 |
---|---|
This project assumes known robot pose to map an environment. The robot uses camera data to recognize previously visited regions in the map using a graph-based SLAM approach known as Real-Time Appearance Based (RTAB) mapping (under the hood, bag-of-words is used for detecting loop closures). More information on this can be found here.
ROS package used: rtabmap_ros
Actual world in Gazebo | Map created by RTAB mapping |
---|---|
This is where all the previous projects come together. gmapping
is used to create a map in which the turtlebot then traverses from the starting point to the drop-off point via the pick-up waypoint. The package is represented by a
marker.