Autonomous Car Summary
The information for my autonomous car project is starting to get a bit spread out between all the update posts, so I though making a nice summary was in order.

In part 1, I laid out my plans for the navigation algorithm and spent some time working on the computer vision part of the project. I was looking at sending an unboard camera image from my Android phone to a laptop to do some lane detection. The large variation between different roads posed a problem. I did get the algorithm to work pretty well with a perfect-looking road. There were also some issues with lag between sending the image, processing, and sending it back.
Python Asteroids Game
This is the final project for the Interactive Python course. The game runs from the browser using the SimpleGUI plugin. It works best on Google Chrome. Here's a link to the Asteroids Game
Autonomous Car in Design Contest
I entered my autonomous car into a design contest held by the makers of the ChipKit board that I used. Here's the video I used for my entry.
To help explain the car's navigation algorithm I made a flow chart that shows how each part of the algorithm interacts with the sensors (click for a larger image).
Autonomous Car pt.4
It finally drives!
I've done a lot more work on the code for the autonomous car. I played around with running the GPS heading updates through a FIFO array to try and smooth out any irregular data before sending it to the Kalman filter. I was a bit worried that this would slow down the heading updates too much, and it did. It evens out the data, but also causes a significant lag, making the car pretty much undriveable. I commented out the FIFO code, but left it in there in case anyone finds a use for it later on. You can find the latest version of my navigation code on my Github page.
I started playing around with the core timer on the PIC micro. Right now I'm using the core timer to change the update rate for the SD logger and the LCD screen. Previously, both of them were updating every time through the control loop. With the control loop running at around 50Hz, it produces a ton of data. ...
Autonomous Car pt.3
It's been a while since my last update on the autonomous car project. Lots of things have been
changed or redone. The biggest upgrade was replacing the Arduino mega with a Chipkit max32,
which I had discussed in my last post. The increased speed of the Chipkit board has really
improved the car. The first thing I noticed was that the loop time decreased from about 50ms
on the Arduino to around 20ms with the Chipkit. This means that the gyro scope data can be
updated much faster and helps produce a more accurate heading. I highlighted most of the car's
new features in the image below.

One of the added bonuses of the Chipkit is that it has a 3.3V logic level. This works out well since all the sensors are also 3.3V, and I could easily add an SD card for data logging without having to buy a ...
Autonomous Car pt.1
This post will detail my plans and progress for an autonomous car. I’ll be using what I learned from
building the balancing robot and courses though Udacity and MITx.
The goal is to take a small 1/10
remote controlled car and have it navigate a course on its own. To navigate the course, I plan to use an
Android phone, GPS, and an accelerometer/gyroscope. I will record a video stream through the phone
and then process it on my laptop using Python and the computer vision library OpenCV.
The Car
I chose a 1/10 scale car so that it would be large enough to hold all of the electronics. I was worried that
the cheaper and more common 1/16 scale cars would be too small. I found this car on Amazon for ...
Balancing Robot
The goal of this project is to make a self balancing robot, also called an inverted pendulum. The basic idea is that you have a mass located above its pivot point. This causes the robot to be unstable, and without any help, it will quickly fall over. Sensors on the robot will take acceleration and gyroscope measurements, which are sent to a control algorithm. As the robot starts to fall, the control algorithm will send a signal to the motor, telling it which direction and how much to move in order to keep the robot upright. This project involves a huge range of knowledge from mathematics, mechanics, and programming. And as I've quickly learned, the theory is a lot more complex than I originally thought. When I set out to make this robot, I decided to work towards a few specific goals:
- Keep the cost as low as possible ...