Project 2 — Reactive Robotics using ROS and TurtleBots

Due Thursday, December 4, 2014

NOTE: The hardcopies of the parts of this assignment are due at the beginning of the class period. This means that if you are even a minute late, you lose 20%. If you are worried about potentially being late, turn in your assignments ahead of time. Do this by submitting them to me during office hours or by sliding them under my office door. Electronic copies are due by 1:00 pm on the due date. Submit them through D2L before the time they are due. Do not send assignments to me through email or leave them in my departmental mail box.

1. Motivation

The basis of all of intelligent robotics is tying sensing to acting. To do that we need sensors, actuators, and some connections between them; these components comprise the robots. In this class, we'll work on robots in teams. This assignment will give us greater experience with all of these aspects of robotics, as well as finally give us a chance to put them to use on physical robots.

2. Goals

The goals of this assignment are:

3. Assignment Overview

You will program and demonstrate an autonomous robot that carries out a simple set of behaviors in Rawl Engineering Practice Facility (REPF). You will also turn in written material regarding the design and implementation of the robot software.

4. Assignment Details

You will use ROS to control a physical TurtleBot moving in a set of connected hallways in the basement of REPF. The behaviors your robot will carry out are the same as those from Project 1 which are as follows, ordered from highest priority to lowest:

  1. Halt if collision(s) detected by bumper(s).
  2. Accept keyboard movement commands from a human user.
  3. Escape from (roughly) symmetric obstacles within 1m in front of the robot.
  4. Avoid asymmetric obstacles within 1m in front of the robot.
  5. Drive forward.

The details of these behaviors and the overall reactive architecture are the same as for Project 1, so you should see that project for details. Indeed, it should be possible to simply use the software you implemented for Project 1 to control the robot in Project 2.

5. Demo

You will need to demonstrate your code to me in the hallways outside of REPF B2 REPF B4 (Software Studio). The demonstration will probably only take 15 minutes but I will set aside half hour slots for each group. You will reserve your slot with a doodle poll. The poll is at https://doodle.com/rtqmpx2hfqm4ghps.

6. What to Turn In

You will turn in both a hard copy and an electronic copy of each of the following components.

6.1 ROS Launch Files

You will turn in a copy of your ROS launch file.

6.2 Launch File Documentation

To explain the launch file, you will turn in a document describing it. Essentially, you need to translate the XML in this file into a textual description for a lay audience. This documentation should be from 3/4 to 1 page in length (roughly 80 characters per line, 50 lines per page), not including any figures, which may be of any length. This document must also give explicit instructions listing all steps needed to launch and run your project on the CSN Linux boxes.

6.3 Robot Code

You will turn in the actual code you have written to control this robot. This will be written in C++. Your source code should be well structured and well commented. It should conform to good coding standards (e.g., no memory leaks). You are required to follow the ROS C++ Style Guide.

6.4 Robot Code Documentation

Besides the comments included with your code, you will turn in a document explaining the data structures and algorithms used in your code. This document will also describe which particular reactive architecture you chose to use, why you chose it, and what particular features of your code embody the elements or characteristics of this architectural style. This documentation should be from 1.5 to 2 pages in length (roughly 80 characters per line, 50 lines per page), not including any figures, which may be of any length.

7. Notes on this Assignment

You may write your program from scratch or may start from programs for which the source code is freely available (such as on the web or from friends or student organizations). If you do not start from scratch, you must give a complete and accurate accounting of where all of your code came from and indicate which parts are original or changed, and which you got from which other source. Similarly, for the written components of this assignment you may follow the format or content of other written works but you must give a complete and accurate accounting of who deserves credit for all parts of your documents. Failure to give credit where credit is due is academic fraud and will be dealt with accordingly. Please see OU’s academic integrity website.

You may use whatever computing resources you have access to for the development and testing of your world and launch files and your control code. However, your control code must compile on the CSN Linux machines using g++ or make (if you provide a make file) and must launch and run successfully on those machines by following the instructions you provide on doing so.