CS 424, Fall 2017

Real-Time (and Cyber-physical) Systems

Advanced Embedded Computing

Lab Resources and Machine Problems

(Lab Location: SC 2325/2327)

Equipment Setup

In cs424, we will be programming an iRobot create using a Raspberry Pi 3 Model B. iRobot Create is a robotics platform that can be programmed through a serial interface called OI (Open Interface). We will be using OI to read the sensors, and control the actuators. Raspberry Pi is a small single-board computer with USB, WiFi, Bluetooth, Ethernet, HDMI, Audio, and GPIO connectivity. When the iRobot is in motion, the Raspberry Pi is powered through an external battery. The entire setup is mobile, and it looks like the following:

Class Materials Additional Resources
Overview of cs424 lab and a summary of iRobot Create.
To setup your iRobot with Raspberry Pi and install softwares, follow Equipment Assembly and Initial Setup.
iRobot Create Manual
Refresher for POSIX thread programming
Thread scheduling in Linux.
Raspicam, C++ API to control Raspberry Pi Camera
OpenCV Documentation, Open Source Computer Vision.

Machine Problem 1

In this problem, we will set up iRobot Create with Raspberry Pi, and implement a program using C++ that drives the robot according to the given instructions.

Class Materials Additional Resources
mp1 Problem Specification
Example program to test and start mp1
iRobot Create OPEN INTERFACE Specification
libirobot-create library header
libirobot-create Official Documentation
Note that we use a modified version of libirobot-create

Machine Problem 2

Write a C++ program that drives iRobot by closely following the walls, i.e. the contour of a maze, and plots it. At the same time, the robot identifies known objects inside the maze using the camera. The robot also runs arbitrary external tasks given as binaries. The robot must ensure its own safety, and complete navigating the maze as fast as it can.

Class Materials Additional Resources
mp2 Problem Specification
Help on Object Identification and Plotting Contour
Object Identification Code and Query Images
Object Identification using OpenCV
2D Drawing using OpenCV
2D Transformation Matrix

Machine Problem 3

In this problem, you will apply the principles learned in class to improve your design of the robot software (your C++ program) developed for mp2. While mp2 focused primarily on functionality needed for the robot mission (such as navigation, safety, and computer vision tasks), mp3 will focus on the overall software architecture and design.

Class Materials Additional Resources
mp3 Problem Specification

Machine Problem 4

In this MP, you will apply the principles learned in class to improve your navigation module. Specifically, you will use a feedback control loop to follow walls without bumps. While the earlier machine problems focused on safety and mission critical functionality and the overall architecture, this one focuses on designing and implementing the correct control loop.

Class Materials Additional Resources
mp4 Problem Specification