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.
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.
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...
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.
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.
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!