17-422/722,05-499/899: Assignments
====================================================================================================
NOTE: We are using Canvas for the SPRING 2021 Semester and this page is **OUT OF DATE**
We will auto-redirect you to in 5 seconds.
====================================================================================================
There will be four individual assignments, and one final project.
Assignment |
Assigned |
Due |
Assignment A3: Sensing and Machine Learning |
03/18 |
04/01 |
Assignment A2: Fabrication and Embedded Computing |
03/02 |
03/16 |
Assignment A1: Step Counters on Android |
02/11 |
02/25 |
Assignment A0: Introduction |
02/02 |
02/04 |
All the assignments are to be done individually. The final semester long
project will be done in groups of up to 3 students. Do not forget to demo
your product. Sign-up sheet will be uploaded to Piazza. If you cannot make
the pre-allocated time slots, contact the instructors and the TAs.
Assignment 3: Sensing and Machine Learning (Tentative, subject to some changes!)
You will build a gesture detector using the accelerometer on Android and a Machine Learning model trained and
running on the phone. The aim of this assignment is to learn how to do feature engineering by analyzing your sensor
data, train, validate and test basic machine learning models. Building on top of your assignment 1, you will use the
on-phone accelerometer. The phone will then use Weka (using the starter code) to learn a model that you will then
test using the smartphone app itself.
The starter code has exact todos in comments that will guide you through the whole assignment.
For gestures, you are free to choose any four of the alphanumeric characters (lower or uppercase). As I said in
the class if you do not want to use machine learning at all and just develop heuristics to solve this problem, feel
free to do that! However, I believe that if you are confident that a heuristic-based approach would work, just
extract those high-level bits and send them to an ML model instead of coming up with your thresholds, etc.
For calculating the accuracy, we will rely on your video submission and our posthoc analysis of your solution.
Starter code repo
Deliverables:
- Android Source Code
- Video
- ARFF file generated by the code (optional)
Grade distribution:
- Accuracy of gesture recognition: 80%
- Smartphone implementation: 20%/li>
Submit the deliverables on Canvas. This information is also updated on Canvas.
Assignment 2: Fabrication and Embedded Computing (Tentative, subject to some changes!)
In this assignment, we will build a touch pressure sensing device using a light intensity sensor and a
micro-controller (Particle Argon). The aim of this assignment is to learn how to write basic micro-controller code,
interface with a sensor, build 3D printed case, and casting silicone. The fabrication aspect will be critical in holding
your sensor firmly in place and the microcontroller will allow you to stream the sensed information to the cloud and
finally to a mobile device. Using the library on the Particle cloud, you will sample raw data from the RGB sensor, do
some pre-processing (basic filtering) on the micro-controller itself. We will detect two levels: just touching (when on
top of the silicone) and pressing (on either side or top). You can detect the pressure levels on any side of the
fabricated cube. Each part of the assignment is explained in more detail below:
Fabrication:
- We will fabricate a 3D printed case with thin sides (~1mm) to hold the RGB sensor firmly in place. The thin
sides will allow us to easily apply pressure on the wall. The case does not need to be bigger than 2.2 cm cube
(internal dimensions). Keep in mind that the outer dimensions will be a bit bigger because you need to factor in
the wall thickness.
- The case needs to have the sensor at the bottom and the top needs to be open to pour the silicone. To place
the sensor at the bottom and route the connected wires out of the case, we need to create a small opening at the
bottom of the case. After placing the sensor and routing the wires out, and before pouring the silicone, you
will need to seal the bottom opening to prevent any silicone from leaking. You can do this either using hot glue
or electrical tape. The electrical tape is not going to be as secure as robust as hot glue but you are welcome
to experiment. We also recommend testing the light sensor out before sealing it in and pouring silicone into the
casing.
- Next, we will use clear silicone caulk to create a thick layer of silicone on the light sensor. The silicone
takes around 24 hours to cure and solidify. Make sure to not move the case too much during these 24 hours.
We would recommend you to leave the case at the same location where you pour the silicone. For most of you that
will be the lab space in Wean 4120. You can also do it at home if you have access to the silicone.
link
- As the silicone cures, it sinks. If you have time, you can pour more silicone but it is not needed. More
silicone might help with detecting more pressure levels though
- While using the silicone, please wear protective gloves and make sure to wash your hands after use. The
material is toxic if ingested.
- For 3D printing, submit your STLs on Piazza and we will print them in batches twice each day. We will
contact you when your prints will be ready. You can print as many iterations as you like.
Interfacing the microcontroller with the sensor:
- All connections will be made using the provided breadboard. If you have never used a breadboard, read about
it online. If doubts persist, reach out to the instructors.
- To connect the RGB sensor with the microcontroller you need to connect the I2C connections on the sensors
(Vcc, GND, SDA, SCL). There are few other connections on the sensors that you need not connect. Vcc is the high
voltage signal from the board and you have to connect it to the Vin or 3V3 on the particle. The rest of the
three pins connect to their namesakes on the board.
- You can power the microcontroller over USB or using the provided LiPo battery.
Signal processing and pressure gesture detection:
- We will then extract the data from the RGB sensor, implement simple signal processing techniques to
detect a change in pressure whenever a person applies pressure on the sides of the wall or on the top of
the silicone.
- We will detect two levels: just touching (if on top of the silicone) and pressing (on any sides or the
top)
- (Extra credit) Given the sensor we are using is an RGB sensor and the light intensity changes with
change in pressure, you can color code the sides of the case and detect directionality. For example, if the
two sides of the case are red, two yellow, then when you press on these sides, the change in the RGB signal
will be different. Using this difference, you can detect directionality.
Resources for this assignment
Grade distribution:
- Accuracy of pressure detection: 40%
- Serial output: 10%
- 3D printed output: 20%
- Silicone casting: 10%
- Display on the phone: 20%
Deliverables:
- Demo
- STL file for the 3D model
- Video
Submit the video and STL files on Canvas. The information is also updated on Canvas.
Assignment 1: Step Counters on Android (Tentative, subject to some changes!)
Develop an android app that counts steps. Design an interface that shows the number of steps as a user walks with the
phone 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 simple signal processing before you can count the number of steps. You can use peak detection,
zero crossings, or your own technique for counting. Overall, refer to all the techniques we discussed in the class.
The app should also display the sensor data and/or processed data in realtime using XYPlot. If you make any assumption
about the phone’s orientation, your app should inform the user about the assumptions. Optional – If want a challenge,
attempt to detect steps in any orientation and posture and run it as a service in the background. We won’t give you
extra credits, but maybe chocolate! 🙂
Please have your application installed and ready to show during the office
hours on the due date. I will post a sign up sheet for demos soon.
Deliverables:
- On Piazza:
- Source code (an archive of the whole project folder)
- Video(s) of the app
- Very short description of your approach
- A demo before the class or during the office hours on the due date.
Grade distribution:
- 70% performance
- 15% real-time data display
- 15% resilience to spurious data (e.g., user wringing hands)
For performance, as long as the estimate will be within 15% of my actual number of steps, you will get full credit,
below that, you lose 10% grade for every 10% error. We will test the app on the instructor(s) and the student themselves,
and grade the *best* performance.
Submit the deliverables as a private post to the instructors on Piazza
(just choose Instructor(s) in “Post to”, instead of “Entire Class.” Make sure
to select “assignment 1” as the folder for this private post.
Assignment 0: Introductions
Introduce yourself. Fill out this questionnaire
and include the following information: current status, any research
affiliations, 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, and anything else you would like to
share.
Last updated: 2021-03-08 10:53:00 -0500
[validate xhtml]