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.
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).
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. ...
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 ...
UGV Board v1.1
Unmanned Ground Vehicle board for the ChipKit Max32The UGV board is my attempt to put together all the things I found useful in building my autonomous car and a few new features that I thought would be good to have. As always you can find the latest source files for all my work on my Github page. The goal was to build a board that will work well with my autonomous car setup but also have the ability to adapt for use in other autonomous robotics projects.
At the time of writing this the UGV v1.1 has the following features.
Breakout for a GPS antenna ...
After much work with the Python OpenCV library and testing the image processing on the car, I've decided that I'll leave the computer vision part of this project for later. The simple line detection works well for images like the ones in my previous post. But for more complicated images, such as roads without yellow lane markers, line detection won’t be enough. I'm looking into using a neural network with OpenCV to keep the car on the road.
Now I am working on the steering. My goal is for the car to steer into the direction of the next waypoint from its current location. I also got a lot of new stuff for the car. Here's how it looks today. I upgraded to an Arduino mega (see below for why), Xbee for sending data wirelessly to my laptop, and a GPS module.
I spent a lot of ...