Skip to main content

Modified Pulse Sensing Algorithm

Our Physical Computing final project depends on a Pulse Sensor to detect a user's heartbeat. The people at World Famous Electronics created an Arduino library for their customers to use with their sensor. The library adds a lot of value because it provides users with a well researched algorithm for using the sensor to properly detect a heartbeat. Pulse Sensor users don't have to re-invent the wheel and code their own algorithms. Writing your own algorithm to do this is difficult, and the one provided by the company is better than the one that I came up with for our midterm.

Still, the provided algorithm isn't perfect. For some people it seems to miss some heartbeats and add extra heartbeats. A fellow ITP student, Ellen, showed me that it would have odd spikes in the beats-per-minute (BPM) value. It wasn't clear why this was happening. Since I previously had been analyzing the sensor's data in Python, I came up with a plan to figure out why the Arduino code was doing this and to figure out if there was anything I could do about it. After studying the data and making some plots, I was able to make some improvements the algorithm. It still isn't perfect but my changes address many of the weaknesses of the algorithm.

The original Pulse Sensor Arduino code is available online on GitHub. I am sharing this code with my fellow students who are also using the same sensor. After our projects are complete I will submit my modified code to GitHub as a pull request to share with the rest of the community.

Read more…

Perceptrons

Basic Perceptron

This week's assignment is to code a Perceptron in Python and train it to learn the basic AND, OR, and XOR logic operations.

I created a Perceptron function with parameters that will let me study the operation of this algorithm.

Read more…

Clustering and NumPy

K-means clustering

Our second assignment in our Learning Machines class is to implement k-means clustering in Python. I've implemented this in other programming languages but not in Python. Normally I'd use scikit-learn for this but it is a worthwhile exercise to think through how to do this in Python.

Read more…

More After Effects and Understanding Comics

Understanding Comics

Scott McCloud’s book Understanding Comics is ostensibly a book about comic books as an art form, including its history, evolution, and modern structure.

The author has much love for comics and fell in love with them as a child. I can partially relate in that when I was younger I looked forward to the Sunday newspaper and reading the comics. However, I never had an affinity for comic books and found them to be a waste of time. These days I only read Dilbert on a regular basis.

Read more…

Playtesting Results

Last week Camilla and I did Playtesting with our fellow students. In general the results were positive, with some testers expressing an interest in using the final project. Some of our ideas about how the interaction would work were not as well received as I expected.

Results Summary

One tester told us he had previously discussed our project idea with his wife, who works as a therapist. She thought it would be helpful to have some way to help patients practice breathing exercises before the session begins. I find it encouraging that somebody found our project to be sufficiently intriguing to talk about it with someone else. I know she'll be at the Winter Show and I'm looking forward to showing her the final result.

Read more…

Run Length Encoding

Our first assignment in our Learning Machines class is to implement a run length encoder and decoder. This is a simple data compression algorithm that benefits from repeated patterns.

It happens that I previously had an idea for an Arduino project that requires a light-weight data decompression algorithm to decode audio data. I was going to use run length encoding because it is simple to implement and the code itself won't take up much of the Arduino's precious memory. I'll also need to encode the audio files in Python, and I'll use the below code to do it.

Read more…

Stratasys 3D Printing

The 3D prints for my final Tesseracts project were done on the Ultimaker 2+ printers available at the NYU Makerspace. The print quality was good but the Makerspace also has professional 3D printers that can print at much higher resolutions. After our 3D printing class was over, I printed my tesseract models on a Stratasys Dimension Elite printer. Not only was the print quality excellent, but the print process was reliable and stress-free.

/images/itp/3d_printing/post_final/collection.png

Read more…