Real-Time Pathing Risk Prediction

The code base for this project can be found here and here

For the final project of my Bayesian Robotics class, the only requirement was to come up with a practical implementation of some of the concepts that were taught in the class. As such, my partner and I had an idea to implement real-time risk mapping and tracking for autonomous robots using only a depth sensor similar to the one found on the Microsoft Kinect. Both static and moving objects would be detected, with the static objects having a fixed region of high risk surrounding the object that the robot will want to avoid. For moving objects, the movement of the object itself is tracked and predicted. Once the velocity and direction of the object is found, we can predict where the moving object is likely to be in the near future. This likelihood region maps directly to the areas where we would like the robot to avoid. To achieve this, we used the Asus Xtion Pro sensor along with OpenNI and OpenCV for data acquisition and processing. Qt was chosen as the cross-platform framework for the front-end GUI.

Continue reading Real-Time Pathing Risk Prediction

NeoPixel Clock

The latest code base for this project can be found here

Here’s a quick weekend project that I did a week or so back. I decided to put together a standalone wall clock using Adafruit’s 60 NeoPixel ring, a ChronoDot real-time clock (RTC), TSL2561 light sensor, and a PIC12F1840 to tie everything together. The hardware was pretty straightforward, but the interesting part about this project was really with the one-wire protocol used to control the NeoPixels.

Continue reading NeoPixel Clock

RGB LED Cube Improvements

The original post for the LED cube can be found here

While the LED cube itself is pretty much finished, I recently had a chance to add a few new features and improvements to both the code and hardware. The main hardware improvement so far is a cube-to-Cerebot adapter PCB that replaces the interconnecting cable between the processor board and cube PCB. On the software side, I implemented a custom Ethernet driver that allows a user to read and process raw Ethernet packets. Using this driver, I added a new API that allows any external computer capable of writing raw Ethernet packets to control the cube. I also wrote the corresponding Python API that runs on any Linux machine with root.

Continue reading RGB LED Cube Improvements

Interactive Companion Cube

The latest code base for this project can be found here
Video and pictures are at the bottom of the post!

So I wanted to give a friend the 3D printed companion cube as a birthday gift, but I figured that just the cube by itself would be rather boring. Instead, why not add some audio functionality to the cube to make it a bit more impressive? And so I did. As I came up with this project idea only three weeks before the deadline, I was in a bit of a rush to get things working. As such, designing and ordering a custom PCB was out of the question. Instead of using a custom PCB, I came up with a stacking design using Adafruit’s perma-protoboards that would fit inside of the cube’s frame while still allowing enough real estate for all the components. As the frame was slightly smaller than the protoboards, I had to file the edges of the protoboards down a bit to get them to fit. The upside to this design was that I was able to achieve an extremely snug fit that should be pretty resistant to drops.

Continue reading Interactive Companion Cube

TinyOS on the MSP430 Launchpads

10/1/2014 – Updated compilation instruction for the MSP Debug Stack

My semester project for CS5204 Operating Systems was to get TinyOS running on some unsupported MSP430 chips. While there are some resources out on the interwebs on how to get TinyOS running on specific hardware platforms, these platforms are designed with hardware for a specific use cases (ex. telos/micaz). What I wanted to do was to get TinyOS running on a generic development platform, or specifically on the TI Launchpads. There are two versions of the Launchpads in circulation: a value line that uses the MSP430G2xxx line of microcontrollers and a higher end board that uses the MSP430F5529 microcontroller. Here I’ll detail the process of setting up a TinyOS programming environment for both TI Launchpad platforms. I’ll also give a brief overview of TinyOS’s architecture.

Continue reading TinyOS on the MSP430 Launchpads

Projects by Kevin