Older blog entries for motters (starting at number 14)

Have been experimenting with various webcams which I might use for the next version of Rodney. All the cameras which I've tried have Direct Media compatible drivers, so that I can access a pair of cameras simultaneously.

The tiny Digital Dream L'espion is about the size of a matchbox and produces an image which is similar in quality to the Quickcam Express. It's very lightweight and would be ideal for a robot of some sort, but I think the way that the USB cable plugs into the side might make it awkward to incorperate into a stereo vision head.

I also have an old pair of USB ZoomCams. I originally intended to use these on the first version of Rodney, but decided against it because the drivers under windows 98 were a bit dodgy to put it mildly. However, under winXP the drivers seem ok. The main advantage of this camera is the quality of the image, which looks significantly cleaner and less grainy than the Quickcams. If I take off the outer shell of the camera to expose the bare circuit it looks like it would be relatively easy to mount this so that it could have both vertical and horizontal movement. I could maybe use half of a ping-pong ball to cover the electronics and make it look aesthetically more like an eye.

I've now got hold of an ASC-16 servo control board from www.medonis.com, which is going to replace the miniSSCs in the next version of Rodney.

The new board will be better because it includes speed/acceleration control in hardware, whereas previously all that was done in software. It also includes a few analogue inputs which might be useful, and it runs off a single 5V power supply, wereas the SSC needed two separate supplies.

I've tried the recently released open edition of Borland's Kylix 3. It looks nice, and completely identical to the windows equivalent C++ Builder which I've been using to develop Rodney's vision system.

Actually, I chose C++ Builder precisely becase I knew that Borland were developing a Linux version. This should mean that I can port Rodney's code to linux with minimal effort, whilst not losing the modern drag and drop type development.

There are a couple of unknowns when dealing with Linux. Firstly is the question of how does video for linux work, and does it support simultaneous access of two cameras. Secondly is the question of how serial comms works under linux. Under windows I'm using the MScomm control, and presumably there is something equivalent in linux.

At last after months of searching the web and asking on newsgroups I've finally managed to get Rodney's two quickcams running at the same time and on the same computer. This may not seem like much, but for me I think this is a significant breakthrough, which should permit some interesting new experiments.

Check out the demo on http://www.fuzzgun.btinternet.co.uk/rodney/vision.htm

In the pipeline are plans for the next version of the Rodney robot, and this may eventually use firewire webcams so that I can get a higher frame rate at large resolutions and without the noise which results from video compression algorithms. Firewire cameras should work with the same WDM system which I've developed already.

- Bob

I've made use of a snake algorithm in order to improve the object detection ability of my Rodney robot. This helps to avoid inappropriate background detections which were previously a problem.

Have a look at some of the results at http://www.fuzzgun.btinternet.co.uk/rodney/vision.htm

After writing the optical flow and segmentation routines for the vision system of my Rodney robot I've now combined the two algorithms to form an object detection system.

The fundamental assumption is that parts of the image which are moving in approximately the same manner usually belong to the same object. Of course this isn't always true, but as a general commonsense rule it holds most of the time.

At the moment the combined method merely highlights areas of the image which it thinks belong to the same object. It doesn't actually carry out any recognition of the identified areas, but that is the logical next step.

Work on Rodney's vision system continues apace. The latest algorithm to be completed is a texture-based segmentation routine. This breaks the image down into a number of coloured blobs.

After some tweaking of the algorithm I've managed to get it working quite well, even on the often poor quality images captured from the robot's webcams. This segmentation routine may be very useful for detecting face-like areas of the image for face recognition. The characteristic shapes produced by different hand movements may also be a strong candidate for recognition using this algorithm.

I've written a small demo program to calculate optical flow from an attached webcam. The program works quite nicely and zips along at 20fps on my 1.7GHz P4. At present it's written using the only C++ compiler I have to hand, Borland C++ Builder version 4, and I've got no idea what DLLs you would need to run the executable standalone since the help system is pretty vague on that score.

Anyhow, the general idea is to use optical flow information to help my Rodney robot recognise certain types of gesture. The prime candidates are head nodding/shaking and finger/arm pointing. These elementary social events together with other information from speech recognition all help to give the robot important clues about what is going on and where it's attention should be focused.

If anyone wants to have a go at porting the program to MFC or KDE I'd be interested to have a look at the results, since I havn't really done much C++ programming for years.

http://www.fuzzgun.btinternet.co.uk/rodney/vision.htm

Still plodding on with Dr Cynthia's book whilst sitting in the museum park in York with some bizarre medieval festival going on in the background. I'm sure that people of the tudor period didn't smoke cigarettes or use mobile phones. But anyway, there's a lot of interesting an potentially useful stuff in there, and the way that the behaviors and emotions are implemented seems neat.

I was watching some of the videos on the CD which comes with the book. The frame rate for Kismet's vision system seems ok, even with quite a lot of stuff going on at a 128x128 resolution. By contrast Rodney's vision system is much slower than the reputed 40Hz rate of Kismet, so I've started porting the vision system which I wrote in VB to C++. I'm using the only C++ compiler I have - Borland C++ Builder version 4 - and the improvement in the performance of Rodney's vision system simply by going from one language to another is impressive. Using C++ I can easily do all the necessary processing and still maintain the 33Hz frame rate of the quickcam. The performance is so good in fact that it might become practical to detect eyes within an image of a face by their occasional blinking.

So the next version of Rodney's vision system will probably be in C++. The only question is how to make the C++ program communicate with the robot's other modules. For this I might use UDP rather than microsoft's proprietory COM technology, because that would mean that the program would be easier to port to linux at a later date.

Have just got my copy of "designing sociable robots" by Cynthia Breazeal which describes the construction and software of the MIT Kismet robot. The vision system on the robot looks fairly simple, consisting only of motion, skin tone and primary colours detection. Nevertheless the videos on the accompanying CD look good with some interesting behaviors being displayed.

For distance measurement it looks like she has used the same sort of simple subtraction which I've used on Rodney. This just gives an overall indication of whether there is an object close to the robot and how fast it might be moving.

5 older entries...

X
Share this page