Older blog entries for motters (starting at number 42)

Added multi-threading to the stereo correspondence part of the software, so that when multiple stereo cameras are used together with a multi-core CPU the processing load is more evenly distributed. The processing time for dense stereo correspondence on a 2GHz processor is now about 50 milliseconds, since I've introduced a fast binarization step and am making greater use of vertical context. The bulk of the time is now not actually in the matching but the integral image calculation, which is very unlikely to be significantly improved upon.

I've got some electronics on order and mobile robot testing is hopefully going to commence in January, after a lot of delay and dithering (all of which is hardware related - the software is pretty much ready to run). Once I have something proven to work I'll release an initial alpha version of the software and a detailed description of how to independently reproduce the result (at last, robotics may yet become a proper science!).

Have been experimenting with simple mirrored stereo vision, as described on the Mirage Robotics site. It's fairly trivial to adjust the stereo sensor models to handle this type of setup. The good news is that this effect certainly works, and would simplify the camera calibration procedure. However it does look as if you need quite a large mirror in order to be able to get a good stereo effect, which limits the practicality of this design. This would be ok if you needed stereo vision on a large robot, but I think for most smaller robots it wouldn't be suitable.

So for the present it still looks like conventional twin camera stereo is the preferable option.

Found an interesting looking web site selling robot bases, which might be ideal for further development of the stereo vision system.


I could buy a cheap laptop with a dual core CPU which would probably provide more than enough computing power to do the job, and the whole robot could be constructed reasonably cheaply.

I've added a program to visualise the depth maps resulting from stereo correspondence. This is mainly so that I can tweak the algorithm and view the results. It has user interfaces for VS2005 and also for MonoDevelop.


Also I've added a roadmap with a list of things remaining to be done. Mostly its just down to integration testing.


I could use the humanoids for some testing, but the way that their vision is physically constructed isn't ideal and could introduce significant errors. Over the years I've gone from trying to implement biological-type stereo vision with eyes which can verge to a more engineering approach where the cameras are rigidly fixed in place and calibrated.

A bit more weekend roboting. I've now made the SLAM mapping multithreaded so that the system will scale nicely over multiple CPU cores. Testing on a dual core system shows that I'm getting a good distribution of the processing load. This means that the number of particles used to model the robots pose uncertainty at any point in time is scalable, so as more cores become available the mapping will be more robust and accurate.

Have done a little tidying up on the Sentience code and made a few speed improvements. My financial status is now recovering after a couple of years of economic delinquency and it looks like I'll soon be in a position to perhaps order an off the shelf robot such as the Corobot or 914 and begin integration testing the stereo vision and mapping software.

The main aim here is to develop visual perception software which will enable useful and economical robotics in a home or office environment, using cameras rather than laser scanners.

A new stereo vision/grid mapping result:


Although this looks 2D its actually a colour 3D occupancy grid map shown from above as a robot moves down a corridor. As the robot moves its exact pose is uncertain, and it must maintain accuracy by continually localising.

I remain optimistic - perhaps foolishly so looking at the state of my finances - that I'll have a working mobile robot using this system by the end of the year. Genuine spatial awareness for mobile robots using inexpensive vision sensing is within reach.

Some further stereo camera testing. These occupancy grids of an empty orange juice carton show the current state of play. They were produced just by holding the stereo camera and moving it around slightly to get good coverage. The system estimates the camera's movement through space and so is able to project individual depth readings into an independent coordinate frame.

After some physical re-alignment of the cameras and a calibration test the depth accuracy of Sentience is looking good. Here you can see a little animation.

This should allow me to build quite accurate 3D occupancy grids.

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.

33 older entries...

Share this page