Hi, well I havent worked much on the robot since last summer, he is unfortunately just sitting there on my table.
I got a bit of a problem with CPU overload when I added my context grammar code to the speech recognition. It seems the VIA processor just isnt up to it when to has to do speec recognition and the webcamera stream. The webcamera problems are quite simple, the camera pumps way more frames than I need so my code spends a lot of time just ignoring pictures as I only need 1-2 frames per second. I have not been able to adjust the webcamera stream framerate in any way through JMF (Java Media Framework) yet. If I can solve this I can free a lot of CPU load.
I also need to fix some bugs in my context switching and need to add semaphores so that I can better control when the robot should be listening and when not to (It frequently picks up its own voice which can cause some problems).
Other than that, the robot works pretty good, except that it cant do much. I never got the compass to work (only in 3 directions, the last one only gets messed up values) so it doesnt really have any idea about where it is in its internal map. Basing it just on wheel rotation wont work either since it frequently get stuck on carpet edges (the motor-kit I bought here doesnt have big enough wheels with high enough friction), and will then spin a bit before backing up and trying a different direction. This spinning will mess up any internal coords calculated based on wheel rotation, so the compass is necessary for correction. And I probably have to make some recognizable markers around it so it can e.g. triangulate as well. One solution might be to add some colored cards in the room up on the walls so that the camera can see these and calculate some approximate distances to figure out where it is in the room. My goal was for the robot to map out the rooms itself so that it made a rough 2d memory map of its surroundings based on ultrasonic pings while it explores the room.
I also need more sensors, which I might order soon since a colleague is also about to build a robot similar to mine, but is more focused on camera streaming and remote control (I like autonomous robots though). I am not quite sure if I should get the cheap ones here or the more expensive ones since I am not sure what precision I need for the sensors on the sides and back of the robot.
Also, the robot has had a bit of a rough time since the plexiglass plates are a bit fragile and my wife accidentaly stepped on the bottom layer and broke that which I then had to glue again. I really want some ABS plastic, preferably precut according to my design, since my hand-sawing is not exactly beautiful or precise. Also, hand-bending aluminium plates is hard to get precise, especially since the base-layers are not very precise either. You can safely say this is not my area of expertise.... I am mainly a software and hardware integration guy. Some with mechanical and structural skills would have done wonders on my robot. Hopefully I will make a JCP2 some day too.
On a sidenote, Asus has come out with a very nice small computer, the Asus eee. For anyone thinking about a similar robot project, get one of these computers! You get everything in one cheap package there. I must admit I have thought about perhaps getting one and make a JCP2 design with an integrated screen on its chest (taken from the Asus eee). I could then have 2 processors running in the robot and split the image recognition part from the voice recognition part to solve those issues.
Well, some day I will get the spirit back and start working on it again.