February 29th, 2004

I spent all day working on this website. I replaced the "pictures" section with the "progress" section. Besides including the pictures that were in the pictures section, I'll be able to post our progress and new information here. Most of the time I wasn't actually working on the html or JavaScript, but I was looking through old emails and receits looking at dates and writing down our progress since January 2003. Luckily for the first few months I had kept a journal.

February 28th, 2004

I've been doing various experiments with edge detection using my QuickCam. First, I tried converting the image into black and white and then finding the differences between each pixel and the one next to it. This worked great for detecting vertical changes in brightnes. Then I tried using the difference between each pixel and the one below it. This worked well for detecting horizontal edges.

Next I found the average of the vertical and horizontal differences. Now my program showed edges of light and dark objects somewhat well.

Then it was time to use color. After writing some code and spending a while debugging it, I got it working.

Finally, I ran some videos on a different computer and set up the Quickcam so it was watching the computer screen. I ran my program (on my computer - not the different computer) and watched the video after it had been "edgified". It worked very well. It filtered out all but the important information.

February 14th, 2004

I received a couple checks in the mail from stuff I've sold on eBay. Finally I'm able to pay back my debts! I also got a 12" length of chain - it turned out the first chain wasn't long engough. Luckily the guy who sold it to me was nice enough to ship some extra chain.

I just ordered a 15-pin D-Sub crimp-style connector for the Roboteq controller along with some other connector parts. I've been thinking about Expeditor's sensory input. I want any unneccesary information to be filtered out. That's one reason why I don't like a camera - it has lots of extra info. I would prefer a SICK laser scanner, but they're very expensive. One way to filter out junk would be to use simple edge-detection algorithms. They could detect differences in color or brightness. Hmm...

February 12th, 2004

I made some more changes to the neural network software and did some more experiments - all very successfull. For a few months now I've been thinking about how to implement feedback into the neural networks. This is important for detecting objects' distances with only one camera, and other such things. I have a basic (well, maybe a little more than basic) idea about how I'm going to do this, so I guess I'll begin work on feedback.

February 11th, 2004

Today I changed my neural network software. The output of each neuron is a number from -1 to +1. The outputs of the neurons in the output layer of the networks were previously treated as if they were only 1s or 0s. I was planning on having multiple outputs in the steering network, for slight-right-turn, normal right turn, sharp right turn, etc, but then I thought, "Wait a minute! Since the networks are a form of fuzzy logic - the outputs are not actually 0s or 1s - and it's silly to pretend they are!" So I changed it - successfully!!! Now to get steering information from a network I just use the output of one neuron.

I also wanted to change my software so it would talk to the AX2500 motor controller. After writing some code that used the MSComm control, I created a quick test network that detected the position of an object I was holding. I then gave a line of code to my program that told it to make the steering proportional to the object's position. When I powered up the controller and ran my program, it worked perfectly! I'm often surprised by how well my camera-image processing networks work! This paticular network was processing nine frames per second. Driving a car across the desert will require quite a few more networks. Hopefully processing speed won't be an issue.

February 8th, 2004
Today my goal was to get the steering motor functioning as a giant servo, and to find a way to control it. The back panel of the Mini-ITX computer only has one serial port, but there's a header for a second serial port on the motherboard. I spent a while at stores trying to buy a connector for this, but I couldn't. After a while I just took a firewire cable that fit the COM2 header and cut it in half. After finding the correct wires to use, I lengthened the cable myself. Finally, I plugged it into the Roboteq controller, and it worked!

I really need a 15-position male crimp D-Sub connector to plug into the motor controller. Right now my wiring is very messy. After adding a potentiometer for feedback, I have tons of wires just stuck into the port. I must be able to get a DB15 connector somewhere - it's the same as a joystick!