Lab & Project
Labs and Projects
- Logistics and Policies
- Lab Content and Schedule
- Course Project Guidelines
- Suggested Project Topics
- Documentation for hardware and software used in the lab.
The lab content of this course begins with some exercises designed for
students to gain some familiarity with programming embedded systems at
various levels of abstraction with varying amounts of infrastructure
support. It then progresses to team projects. Teams of three to five
students will be expected to develop a plan of action including a time line
and defined division of responsibilities, and then execute a project that
culminates in a demo session and a poster presentation. Project reports are due
Friday, December 14 at noon (Pacific). Presentations will be held on Monday,
December 10, 9am-12pm, 204 Cory.
Logistics and Policies
Lab Times: Tuesday 10-1, Wed 2-5 pm and Thu 4-7 pm, in 204 Cory
IMPORTANT: Please read these
lab safety guidelines and lab policy.
Each lab will be graded according to the following rubric:
Pre-Lab - 10% - Should be done before lab, handed in when you get to lab.
Lab Checkout - 45% - You have one week to complete the lab and show the TA.
Lab Writeup - 45% - Writeups are due exactly one week after lab.
Late pre-labs may be handed in during lab for half credit, no pre-labs will be accepted after lab session.
Late Checkout and Lab writeups will be deducted 10% for each day late. Late checkout does not extend your writeup deadline. The writeup is due a week after the scheduled lab date for each lab. You must notify the GSI at least 4 days in advance for any emergency or situation to extend the deadlines.
Lab Writeup Guideline
Lab Content and Schedule
All Labs are taken from the
and updates will be made over the course of the semester.
Please prepare the prelab exercises
before your lab session begins.
- Lab 1 (August 28, 2012): Interfacing with the WiiMote
Using LabVIEW, you will establish a Bluetooth connection
to a Nintendo WiiMote and send commands to the remote
to stream its accelerometer data back through the Bluetooth connection.
The goal of the lab
is to interface with an embedded system, calibrate
and measure an accelerometer, and graph the results.
Prelab Exercises: Section 3.1.3
Lab Exercises: Section 3.1
- Lab 2 (September 4, 2012): Embedded Development Tools
Through the exercises in this lab, you will learn to use some common tools for programming embedded systems. The goal is to gain some familiarity with the tools by creating a basic "hello world" program using each of them. You will be introduced to the National Instruments sbRIO (Section 1.1 and 1.2), and you will learn how to program it using Wind River Workbench (Section 1.3), Xilinx SDK (Section 1.4), and LabVIEW (Section 1.5).
Prelab Exercises: Section 1.2.3
Lab Exercises: Section 1.2, Section 1.3, Section 1.4, and Section 1.5
- Lab 3 (September 11, 2012): Generate Music and Program an ADC in MicroBlaze
In this lab, you will program and debug "bare-iron" C code (code that executes in the absence of an operating system) and learn about the MicroBlaze soft-core processor. You will learn about interrupts and how to use them to generate music, and you will learn how to configure an analog-to-digital converter (ADC) to sample an analog input.
Prelab Exercises: Section 2.1.4 and Section 2.2.4
Lab Exercises: Section 2.1 and Section 2.2
- Lab 4 (September 18, 2012): Cal Climber Navigation in C
This lab will introduce you to the Cal Climber platform. You will program a state machine that reads sensors and drives a robot with a basic sense of orientation while avoiding obstacles. The programming will be done in C using Wind River Workbench.
Prelab Exercises: Section 4.2.2
Lab Exercises: Section 4.2
- Lab 5 (September 25, 2012): Cal Climber Hill Climb in C
Using your results from the previous lab, you will implement a state machine that instructs the robot to navigate to the top of an incline while avoiding cliffs and obstacles. You will use feedback from the accelerometer to differentiate between an incline and level ground.
Prelab Exercises: Section 4.3.2
Lab Exercises: Section 4.3
- Lab 6 (October 2, 2012): Model-Based Cal Climber Navigation and Hill Climb
In this lab, you will recreate the previous two labs using a model-based approach. You will design a control algorithm using Statecharts in LabVIEW, verify it using a 3D physics simulator, and deploy the solution to the Cal Climber.
Prelab Exercises: Section 4.4.3 and Section 4.5.2
Lab Exercises: Section 4.4 and Section 4.5
- Lab 7 (October 9, 2012): Project Management
Students will finalize project
teams and project definitions, construct a plan for the project with specific
milestones and assign responsibilities to project participants.
Prelab Exercises: Section 5.1.2
Lab Exercises: Section 5.1
Course Project Guidelines
Projects will be performed in teams of up to five students and should
be selected from the list of suggested projects given below. In exceptional circumstances, student
teams may propose projects that are not on this list. All projects
should include nontrivial applications of two or more of the following
key concepts in the course:
The project report (a poster presentation and demo) should make clear which
of the above key concepts are being addressed and how.
For example, a project that addresses the fourth and last bullet could focus
on code generation from high-level modal models, and demonstrate a design
environment based on LabVIEW or Ptolemy II for an embedded target.
- modeling of physical dynamics,
- reliable real-time behavior,
- modal behavior governed by FSMs coupled with formal analysis,
- real-time networks,
- simulation strategies, and
- design methodologies for embedded systems design.
Software platforms can be "bare iron," real-time operating systems,
embedded tools like LabVIEW Embedded or Simulink/Stateflow with Real-Time Workshop,
or standard operating systems such as Windows or Linux. Attention to design quality
and reliability and trustworthiness of the end product is essential.
For many of the projects, it is highly advised to identify a mentor (typically
a graduate student) who provides familiarity with the relevant hardware
A list of hardware available for student projects can be found here.
Each group should turn in a single 1-page charter for your project.
Recall that your charter should include:
- Major Deliverables
- Risk and Feasibility
Project Milestones and Schedule
Working backwards from the completion due date (For Fall 2012,
this is December 14), determine when tasks need to be done to complete
the project on time. Ensure you are allowing adequate time for
debugging integrating disjoint components from several people can
take a week or more.
Be sure to consider events such as Thanksgiving (11/22-11/23),
Finals Week, etc.. Milestones should indicate which team member
is responsible and be no more than one week apart. Be sure to
include non-technical tasks such as practicing the presentation
or writing the report. Also include a plan to meet with your
mentor, preferably once a week (you may want to organize your
milestones to land on these dates).
Do not hesitate to be painfully specific. Through the rest of
the semester, you will be submitting milestone reports to track
your progress in completing these milestones and discussing your
milestones with your mentor. Certainly, the milestones could
change during the course of the project as you learn and debug
Guidelines for Project Presentations:
- This year's presentations will include slides and a demo. All
presentations will be videotaped.
- You will have 20 minutes for your presentation and demo (make sure to leave additional time for questions).
It's very important to finish on time. Practice your presentation several times.
- Topics to cover:
- Overview of the project and your approach
- Hardware/software platform and tools used
- Main technical challenges -- in design or implementation -- and how you tackled them.
Focus on the top 3, at most one slide on each. Include any cool algorithms or
design insights that you came up with.
- Demo -- could be interleaved with the presentation or performed right after
- Finish with a 1-slide summary: what did you achieve, what more can be done?
Guidelines for Project Reports:
- One report per team. Hard deadline: Friday, December 14, 2012, 12 noon. Submit on bSpace.
- Recommended length: 5-10 pages, use at least 11 pt font
- Topics to cover:
- Introduction & Problem Definition
- Outline of your Approach and how it compares to existing projects
- Algorithms and Formal Models used
- Major Technical Challenges in the Design/Implementation and how you tackled them
- Summary of Results -- what worked, what didn't, why, ideas for future work
- A one-paragraph narrative on the roles each team member played in the project
- How the project applied 2 or more of the key concepts from the course.
- Feedback: List of topics covered in class that came in handy; any topics that weren't covered that would have been useful
- Illustrate algorithms and models with diagrams, include pictures of your hardware, screenshots, etc.
- Keep the report short and precise; avoid lengthy and verbose descriptions!
- You must submit your Peer Evaluation Form to the GSIs in person, or on bSpace electronically.
Suggested Project Topics
Below is a list of suggested projects for Fall 2012. This list
will grow until it is time to pick projects. If you want to
pursue a project outside of the list, please see the instructors.
- Semantic localization
This project addresses the problem of indoor localization, but rather than
trying to identify where in 3-D space a person or object is, it will identify
what room they are in. The strategy will be to put an ultrasonic emitter in
each room that emits a different signature, and then to use the microphone
on a smartphone or other audio pickup device to distinguish the signatures.
This could possibly be augmented using accelerometer data to estimate
position within a room, as done in the
ACComplice project from CMU, or to use accelerometer data to determine
when the person is "on the move" and may be moving from one room to another.
Mentor: Dorsa Sadigh
Imagine a restaurant where the waiters are robots. What would it take
to implement this? Here are some of the things that might be involved:
(i) perform motion path planning to navigate between the kitchen and tables where customers are sitting;
(ii) obey high-level commands from a customer like "Bring me Menu Item A", expressed in structured
English or a more formal specification language;
(iii) respond to dynamically-changing specifications (customer cancels an order, waiter is hailed by
another customer while navigating to the kitchen, etc.);
(iv) pick up possibly delicate objects --- cups and plates --- place them on a "tray" and navigate between
obstacles to "safely" reach the kitchen, and
(v) optimize the distance traverse or time taken or energy consumed in meeting requirements.
This project will cover several concepts from the class, including
modeling, formal specifications, controller synthesis, real-time behavior, etc.
Some subset of the above requirements can be performed. The project can be performed
with iRobot Creates or with other platforms such as Lego Mindstorms/NXTs.
- Wearable Fall Detector
This project will use accelerometers and/or gyros attached to clothing
to detect when a person has fallen. Key to this project is to learn
the character of the sensor data that indicates a fall and to network
multiple sensors together to aggregate their data and to report
- Model-Based Design of Motion Control Systems
This project would enter into a design contest
being conducted by Advanced Motion Controls, a leading maker of motion control
systems, that has a due date for Phase I of Dec. 7, and a
proposal deadline of Sept. 28. The project is defined as a
simulation-only project, which is not quite suitable for a class project
for this course, but we have begun negotiations with the company to obtain
hardware prior to their Phase II so that the project can include some
- Improved Microblaze Interaction
This project will focus on the interaction between the PowerPC and the
Microblaze to provide more convenient development and debugging of
real-time embedded code.
- Robot Following
This project develop a mechanism for a robot to follow a beacon.
In addition to the lab iRobot platform, the project should consider other
low-cost alternatives such as the
- Gesture Mimicking
This project will use the Xbox Kinect to recognize gestures, and then mimick those gestures in
Bioloid robots under the
control of a microcontroller.
- Pipeless Chemical Plant
This project will develop a small pipeless chemical plant, like
that described by the Multiform Project at TU Dortmund. In such a chemical plant,
instead of moving material around in pipes, material is moved around in vessels carried by robots.
- Sound Source Localization using Distributed Real-Time Platforms
This project will involve determining the location of an acoustical
source using an array of precisely positioned microphones on
distributed platforms. A gunfire detection system like
ShotSpotter (currently deployed in Oakland) is an example application.
A platform consists of a
Renesas SH7216 microcontroller
equipped with a microphone and a floating-point unit for any required
signal processing. The distributed platforms will form a small
time-synchronized network that enables simultaneous sampling of sound
on all microcontrollers.
an implementation of the
IEEE 1588, will be used for clock
synchronization. This project involves real-time programming in C
without an operating system.
- Quadrotor Control
This project will use the Parrot AR Drone
quadrotor aircraft in combination with the lab infrared localization
infrastructure to achieve precise and safe maneuvers within a confined area.
- Real-time Interactive Multimedia
Mentor: Dai Bui
The main idea of the project is to use multiple monitors to display large
video computer graphics. The main challenge is to synchronize the
pictures between displays to minimize the jitter between and create a
smooth picture, while also making sure that the sound and video stay
A small example application with two cell phones can be
Another aspect of this project could be interfacing the display system
with human input using Kinect.