EE 590P

Fall 2015

Advanced Topics of Digital Computers: Ubiquitous Computing

Course Information

Instructor Mayank Goel
Time Tuesday, 6:00PM – 8:50PM (EEB 037)
Office Hours Tuesday 5:30 to 6PM, EEB 037
Instructor Email mayank@cs.washington.edu
Teaching Assistant Mohit Jain, mohitj@cs.washington.edu
TA Office Hours Tuesday 5:30 to 6PM, EEB 037

The aim of this class will be to introduce the students to ubiquitous computing. We will focus on how traditional topics of computing have evolved to support the vision of a connected, portable, and a human-centric computing environment. The course will include discussion into contribution of various fields, including human-computer interaction, embedded computing, computer vision, distributed systems, machine learning, and electrical engineering. The students will gain practical experience in developing sensing systems in different application domains, such as activity recognition, health sensing, gestural interaction, etc.

The course will be a combination of lectures, tutorials, class discussions, and demonstrations. Students will be evaluated on their class participation, reading summaries, and individual assignments/mini-projects (5 assignments in total).

There are no pre-requisites for the course.

This class is intended to be highly interactive and students will be asked to kick off the discussion for that day’s topic based on the assigned readings. Prior to class, all students are required to post a paragraph summary of the reading(s) and questions or discussion points to the message board. The highlighted papers on the schedule are the required papers, but additional optional papers are also listed that you can use for reference either in this class or in the future.

Lectures and discussion will occur during the first half of classtime and the second half will consist of tutorials on how to build and prototype various ubicomp systems. There will be 5 individual assignments to practice these concepts. Although not required, you are allowed to work in groups to learn the material, but are required to complete and submit individual work.

Grading:
Students will be evaluated based on their mini projects/assignments, class participation, and reading summaries. Students are expected to have the readings and summaries completed prior to class (see class schedule). Note that class discussion will largely be based on these readings. Class participation includes submitting reading summaries prior to class and active engagement in class discussions. Also, students should inform the instructor on any work travel or other commitments that might arise during the quarter.
Assignments (5): 60%
Reading summaries: 15%
Class participation: 25%

Schedule

DateDiscussion Topic and ReadingsAssignments
Oct. 6, 2015Introduction & History of Computing[A0 assigned]
[A1 assigned]
Oct. 13, 2015History of UbiComp
[A0 due]
Oct. 20, 2015Activity Tracking
[A1 due]
[A2 assigned]
Oct. 27, 2015Health Sensing
Nov. 3, 2015Location Tracking

Guest Tutorial: Elliot Saba
Software Defined Radios

[A2 due]
[A3 assigned]
Nov. 10, 2015Novel Interaction
Nov. 17, 2015Smart Homes. Guest Lecture: Gabe Cohn
Guest Tutorial: Eric Whitmire
3D Modeling

[A3 due]
[A4 assigned]
Nov. 24, 2015Low Power Sensing
[A5 assigned]
Dec. 1, 2015Wearable Computing
[A4 due]
Dec. 8, 2015What's next?
[A5 due]

Assignments

Assignment 0: Introductions

Introduce yourself on the message board and include the following information: current work position/company, any research interests (and/or areas of specialization), what you want to get out of this class, your experience with software and hardware, the kinds of classes you have taken so far in PMP, and anything else you would like to share. Also include how comfortable are you programming and what is your preferred programming language(s).

Assignment 1: Sampling and Processing Accelerometer Data: Step Counter on Android

Develop an android app that counts steps. Design an interface that shows the number of steps as a user walks with the tablet in their hand. You will be using the raw data from the accelerometer and/or gyroscope to complete this task. The data will require some very simple signal processing before you can count the number of steps. Just focus on the basics in this assignment. We will do more advanced signal processing in subsequent assignments. You can use peak detection, zero crossing, or your own technique for counting. You can assume the user only holds the tablet in a fixed posture in their hands. You are welcome to assume a different placement or posture of the tablet or phone, but please be sure to document how the device needs to be held somewhere on the interface. Optional – If want a challenge, attempt to detect steps in any orientation and posture. Please have your application installed and ready to show in class on the due date and also submit your source code to the assignment submission site.

Assignment 2: Sampling and Processing Camera Data: Optical Heart Rate Monitor

Develop an optical heart rate monitoring app using the built in camera on your android tablet. There is a technique called photoplethysmography (PPG), which consists of detecting changes in blood volume during a cardiac cycle. By illuminating the skin and measuring the observed optical changes, it is possible to extract heart rate. In this assignment, you can assume the person will be holding their finger steady on the phone’s camera to simplify the signal processing. Normally, you can just use the LED near the camera as the illumination source, but our lablets don’t have an LED. You’ll need to use a light source for a second device, such as your phone. At a minimum you will need to low pass filter the data you will be extracting from the camera prior to using peak detection to extract heart rate. For the app, we ask you to both plot the heart rate signal on the interface and show the extracted heart rate in real time. Please have your application installed and ready to show in class on the due date and also submit your source code to the assignment submission site.

Assignment 3 – Software Defined Radio: Decoding RF Signals

You will be given a low-cost SDR module for the quarter, which you will us for this assignment. Your task will be to use GNU Radio and the SDR hardware to decode some RF signals. Obviously, you will be limited to RF signals that operate within the frequency limits of the current SDR hardware. We are providing everyone with 315 MHz garage door remotes as one option for something to decode. These remotes have 4 buttons and your task will be to decode each of the four buttons when pressed. You will use GNU Radio to stream the filtered signal to a file sink, where you will use the programming language of your choice to decode the signal (python, C, C++, java, etc). We suggest you first decode the signal using post processing and then attempt to decode it in real time. For this assignment, it is sufficient to decode a button press in semi real time – a few second delay is totally fine. Either on a graphical user interface or in the command line, it should show which button is being pressed (button 1, 2, 3 or 4). We ask you submit the following materials for this assignment – the GRC file (if modified from the example), the decoding source code, and a demo video showing buttons being pressed and it being reflected on the screen. We suggest you start with the garage door remote, but if you are confident with this assignment we will allow you the flexibility to decode something else that is of interest to you. This could be a wireless mouse, some proprietary hub, etc. If you decide not to use the remote, please send us an email first. Submit your assignment to the assignment submission site.

Assignment 4 – 3D Printing:

You will create a 3D model for a case (and print it out) that will house the sensor and microcontroller for A5. In A5, you’ll build a bluetooth-enabled wearable heart rate monitor using the parts we provide you. To get the best heart rate signal, you will need a way to securely attach the sensor and microcontroller on your finger. Your task will be to design some sort of housing that will hold the sensor, the microcontroller, and the batteries as well as attach to your finger. You will turn in your actual print out when you submit A5, but we ask you submit your 3D model (in STL format) as indicate on the schedule. This gives you some time to tweak the design (if needed) after you start working on A5 and prior to actually printing the part. Submit your assignment on the assignment submission site.

A5 – Microcontrollers and Sensors:

You will build a wireless wearable heart rate monitor using the micro-controller, Bluetooth, and PPG modules we provided in class. The aim of this project is learn how to write basic micro-controller code, interface with an analog sensor, and stream data to a mobile device using Bluetooth. Using the sample code provided in class and from your experience from the previous assignments, you will sample raw data from the PPG sensor and do some pre-processing (basic filtering) on the micro-controller itself and send this pre-proposed data in real-time to the android device using Bluetooth. On the android, you will write an app that collects this data, further processes the data (peak counting or frequency tracking) to determine the heart rate. Your android app should also graph the heart rate in real time. You are welcome to architect the system how you like, but we ask that you do some processing on the micro-controller. It is tempting to stream all the raw data from the PPG sensor to the android device and process everything there. Sometimes this makes sense, but many times with power constrained devices you want to reduce the amount of wireless transmission to conserve power. Your wearable monitor should be able to operate while someone is walking around, so your 3D printed case will be critical in holding your sensor and hardware firmly in place on you finger. You will submit your arduino sketch file for your micro-controller, the android source, your final case design (STL file), and a video of your system working.

Class Materials