Thursday, January 25, 2007

New Boards

The servo motor and servo controller boards have now been manufactured for me. I collected them last week. Ive soldered the connectors onto them and I am now waiting for a some new PIC and Picaxe processors to arrive. As soon as this happens I will actually have everything I need to drive my robot joints.

The annoying thing is that while I was waiting for my boards to be manufactured, I figured out how to build the multiplexer using USB electronics. One USB multiplexer could have easily done the work of 8 or more RS232 multiplexers! Oh well, thats a job for another day...

Sunday, December 31, 2006

Natural Language Processing

I recently had a look at natural language processing and speech recognition. It makes for an interesting interface between people and machines. I had already experimented with voice control of robots but that was before I was able to program the Microsoft Speech SDK properly.

After doing some research I have come up with a possible template for a speech processing NLP module for conversing with and controlling a robot. Im hoping the system will be capable fo the following:
  1. Distinguishing between conversation types, Question, Statement and Command
  2. Acquiring semantic knowledge by parsing Statements.
  3. Retrieving facts from semantic knowledge base by answering simple Questions
  4. Performing Commands by comparing what was said against a list of acceptable commands
  5. Asking a user for the definition of a word that does not appear in the lexicon and updating it

To do this Im planning to save semantic memory in the form of human readable files which can be parsed for content. Effectively you can tell the robot whatever you like, you can ask it a question about what you said later too.

For understanding the general gist of the conversation I am using an Augmented transition Network or ATN. This contains a finite state machine whoose states are triggered by the grammer of the word it is parsing. This method is quite fiddley and takes a lot of fine tuning, but you can usually make sense of the sentances spoken.

At this time Ive gotten as far as the ATN section. I'll get around to the rest of it when I get some time.

Sunday, November 12, 2006

Neural Networks

As well as working on my android I am also developing a general purpose vision system in my spare time. I wanted it to recognise objects by the way they look. I intend to use this mechanism in my robot for determining who people are by looking at thier faces.

I decided that I would try a nueral network just as an excersise to see how well suited neural networks are to recognising visual objects. I can tell you - they are pretty impressive!

I trained this network to recognise the numbers 0-9 visually by looking at the content of some bitmap files. All the bitmaps were the same size 80x60 pixels so I needed to give the network to have 4800 inputs and 10 outputs (one for each number). After a few nights of messing around with learning coefficients and training epochs I got the network to generate a really good set of outputs. I am seriously considering not programming my robot to walk and letting a neural net do the work for me.

Neural networks can do amazing things if you have the patience to sit there and train them!

Sunday, October 29, 2006

Data Recovered

I wrote a vision system making use of the VFW system to capture live images in windows before I learned to program Direct X. The hard disk the data was on decided to lose its FAT so I lost all my data. I had to leave my computer on for three days to recover all teh stuff on the broken hard disk but I got the bits I wanted back!

Here is a screenshot of the basic version 2 vision system just doing basic image processing. Im going to expand the basic engine to include Neural nets for face and object detection. I also intend to whack in some program code to deal with stereoscopic vision and also 2d to 3d conversion in the style of David Marr.

I also intend to add in the functionality to ascertain the colour of an given pixel so the name of the colour can be reported back. Ive got an algorithm that tells you the name of the closest colour match i.e. "dark blue" to any given RGB value. The table has over 700 colour definitions in it. Its has so many colour names that I had to resort to using excel to write the C program code for me!

Monday, October 23, 2006

A New Hope

Maybe its too soon to tell but I got hold of some data recovery software and I think theres a chance that I will be able to get back all of the work I lost on my hard disk. If thats the case then building my robot vision AI and navigation systems will be a breeze. All I need to do is leave my PC on for the next 7 hours...

Friday, October 13, 2006


Here are the PCB layouts for the boards Im having made. Im expecting that the robot will have somewhere in the order of 30 servo motors and 5 to 6 controller units.

I mentioned before that the electronic design of my robot will be generic. Most robot parts (limbs and body) will simply consist of multiple servomotors and sensors connected to a single SSC and input sensor reader. Im going to need a USB hub or two to support that many peripheral devices.

I'll bet the guys that will assemble the boards for me must be rubbing their hands together!

Wednesday, October 11, 2006

New Designs

Here are the designs Im having made for me. One is the Multiplexer/SSC and the other is a revision of my older dual servo. In theory they will work with almost any radio control equipment so possibly if people want them I will sell units on.

Current Status

Ive been very busy recently! Ive let my projects slip a bit. Still thats not such a bad thing, Since my last blog Ive learned PIC Assembly langauge, Network Programming and the basics of Direct X 9.0 programming for C++. I already knew assembly language but didnt use it on my projects bacause it was so much cheaper and easier to use Picaxe Chips instead. Thats probably going to change because soon I will be ditching RS232 and using USB as the communication system for most of my projects.

Anyway I digress.. my Android project is back on and running at full steam! Whilst Im waiting for my electronic systems to be made for me im going to have another look at robot vision. This time Im going to go the whole hog and do it full colour stereoscopic. Ive seen program code for acquiring images with two Webcams simultaneously but im not sure If I want to do it that way at all. I waiting for two colour analogue cameras and I think I'll do a bit of hardware multiplexing with that..

Until then watch this space...