Older blog entries for motters (starting at number 33)

Still working on the Sentience stereo vision project. I'm still making refinements and improvements, mainly on increasing the accuracy of the depth maps. I'm really quite pleased with some of the recent changes. Although there is still quite a lot of "noise" in the depth images detection of objects or people seems very reliable even under poor artificial lighting conditions.

I'm trying to get the depth maps as accurate as they can possibly be, so that the quality of occupancy grids produced from the maps will have a similar or even better level of accuracy. There's nothing particularly special about the webcams which I'm using. There is no special frame capture synchronisation or colour correction, but I can still get reasonable results. This should mean that a sophisticated three dimensional perception system can be built using very cheap "off the shelf" hardware.

Well its been quite some time since I last posted on this diary. My work situation has been all over the place since the end of last year, so I havn't done all that much on robotics projects. I'm now unemployed, so I've got plenty of time but no money. Probably nothing much will happen until I can get a new job of some sort to finance my robotics habit.

Robocore is on hold at the moment, and over the last few months I started a few other projects. One of them is a vision system for microscopes called "littlepeek". The main aim of that system is to analyse photos of living cells and extract information about the nuclei which can be used for cancer diagnosis. It's an interesting problem, and could bring real medical benefit if I could persuade anyone to back it. The other project is a simplified version of my stereo vision system. This is a boxed version of the vision system on my two humanoids, and could also potentially become a commercial product.

I'm now working on transfering the robocore system from simulation onto my Flint robot. One interesting thing which I've discovered almost by accident is that the robot is able to move its eyes in a similar way to a person.

If you rotate your head your eyes don't move in a similarly smooth fashion but instead as a series of jumps, known as saccades. The robot is also now able to do this. As its head is rotated it can keep its eyes fixated on an object. As the head carries on moving around it eventually is unable to track the object and the eyes move suddenly to another visible target.

The result looks quite lifelike, but apart from cosmetic appearance its also a useful feature. I'm hoping to develop this a bit further so that the robot can visually judge distances to objects with reasonable accuracy, using only a single camera and movements of the head.

11 Dec 2004 (updated 11 Dec 2004 at 18:12 UTC) »

Over the last couple of weeks I've been adding more bits to the robocore simulation. I've now got a much better value assignment system going, such that in the simulation the robot is able to learn that things with different colours have a strong discriminative value (they taste good or bad), but that their texture and shape don't. This is quite a nice system which would work with any kind of categorisation.

The part which is currently occupying me is speech understanding and production. I'm trying to make a model of the way speech works which is reasonably realistic, such that damage to the maps or connections within Brocas or Wernickes areas produces similar aphasias to those seen in people after brain damage or strokes. Fundamentally, speech production is just about motor control. As the philosopher John Searle says, "I open this flap in the bottom half of my head and a racket comes out". Rather than trying to explicitly represent words I'm just having the system detect phonemes - the small components of speech which have a direct correlation to specific movements of the larynx and mouth.

The first experiment just involves repetition. So the system listens to some speech and then tries to speak exactly the same sentence itself. This may sound really easy and trivial but it actually involves learning complicated sequences of phonemes.

Work on Robocore continues. I've implemented secondary neural maps for colour, shape and texture categorisation and have also included an IT (inferior temporal) map which is a kind of meta-map classifying the three earlier ones. Shape categories are formed based upon the radial wave method described in Steve Grands recent book about his robot.

The resulting simulation works (the robot moves towards blue blocks and avoids red ones), but to become a more general system capable of being run on a real robot some additional components are needed. The next stage is to implement the notorious "thalamocortical loop" which forms the crux of the dynamic core theory. This might be tricky and involves some close scrutiny of Edelman's often cryptic writing style. One key property of the dynamic core is the ability to automate common behaviors. For example, learning to ride a bike initially involves a lot of conscious effort, but once you have learned it just becomes automatic and you don't really have to think about it.

It seems that the forum idea on my web site was a mistake. Someone emailed me offering to host a forum, but now it seems that their server is down and the forum has been inaccessible for an awfully long time. Appologies to anyone who tried to post but couldn't.

I now have a little forum on my site, which hopefully will allow people to ask or look up answers to questions about the various robotics projects on my site.


In other news, I'm now beginning to work on a new piece of software which I've called "robocore". This is an implementation of the "dynamic core" hypothesis developed by Gerald Edelman. Edelman did try to test his theory using a series of robotics experiments called "Darwin", but to my knowledge the more advanced parts of his ideas about consciousness have never been tested experimentally.

The nice thing about robocore is that it is entirely self-organising. Concepts of various kinds may arrise spontaneously according to a selectionist principle without explicit supervision. Edelman's original Darwin experiments included quite detailed simulations of neurons and their interconnections, but in order to keep things as simple as possible my implememtation only preserves the basic essence of the theory, such as topological organisation, value mediated association and reciprocal connections between cortical maps.

I've made a sourceforge site for my Human Body Project, which is a spinoff software component originally developed on my Rodney robot for detecting and learning about people.


Work continues on the Flint ape-bot. I've added some arms and legs to enable it to interact with its environment in more interesting ways. Each arm has six axes and the legs are only four. Whether the robot will ever be able to walk (supporting its own weight) is an open question at the moment, but walking isn't my main aim.

I've added force sensitive resistors to the hands, body and legs which should give some tactile feedback, allowing Flint to nudge objects and observe the effects. The hands aren't strong enough or sufficiently mobile to actually pick things up though.

I've updated some of the primal sketch stuff which I started a couple of years ago, and used it for detection of box-shaped objects and geometric scene analysis.

In a simple test the geometric information from primal sketches can be used for recognition of different scenes. I had Flint look left, right and straight ahead and remember what he had seen. I then dissconnected power to the servos and manually moved his head into different positions, then had him guess in what direction he was looking based only upon what he could see. With some tweaking of weightings the recognition is pretty much completely reliable. These are only basic tests, but they do prove that relative geometry matching methods work.

I've found the best way to test any new vision algorithm is firstly to test it with natural lighting during the day, then close the curtains and switch on artificial lights and check if the recognition still performs in the same way. Under artificial lighting the contrast decreases and the apparent colour of things changes quite substantially, so most vision systems fail to generalise between the two lighting situations. By using a primal sketch this problem is greatly reduced, since only edges information is considred, with the edge detection threshold adjusting automatically as contrast reduces.

I'm now doing the final testing on what will be my second generation humanoid. This project is more animatronic than the previous one, but uses much the same technology as Rodney. My aim was to build something which doesn't obviously look like a robot (looks more like an animal) in order to encourage social interactions.

So far the new robot has 8 axes all related to head and face movements. Although it does have arms and legs these are just passive at the moment. All the existing axes checked out apart from the neck tilt which wasn't quite geared enough to prevent the motor from stalling as the head tilted back. Replacing the neck tilt servo with a 5.5Nm unit fixed the problem. The cameras in both eyes also checked out ok. I was a little unsure as to whether they would both work since they've been hacked about a fair bit. For reasons of fitting the cameras within the space available inside the head one of them is mounted upside down, but this can easily be corrected in software.

The new robot isn't designed to be a replacement for Rodney. I'll still be using both robots, with Rodney mainly focussed on pure research while the new one (as yet unnamed) will be used as a technology demo geared towards social interaction due to its more organic appearance.

24 older entries...

Share this page