<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>robots.net blog for motters</title>
    <link>http://robots.net/person/motters/</link>
    <description>robots.net blog for motters</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 21 Mar 2010 22:14:52 GMT</pubDate>
    <item>
      <pubDate>Sat, 27 Feb 2010 23:08:57 GMT</pubDate>
      <title>27 Feb 2010</title>
      <link>http://robots.net/person/motters/diary.html?start=75</link>
      <guid>http://robots.net/person/motters/diary.html?start=75</guid>
      <description>The current plan is to attempt to construct a 2D map based&#xD;
upon the features from omnidirectional stereo vision.  I can&#xD;
locate edge features close to the ground plane quite well,&#xD;
but the trouble with edges is that they're not very unique.&#xD;
 I could use the edge data, projected into cartesian&#xD;
coordinates, to begin building a local map, but after a&#xD;
short time the map would begin to degenerate.&#xD;
&#xD;
&lt;p&gt; So what's needed are more unique features rather than edges.&#xD;
 These could be tracked between frames (data association),&#xD;
and I could then use an off-the-shelf graph based SLAM&#xD;
algorithm, such as TORO to build a map.  At first I thought&#xD;
of using SIFT, which would be the obvious choice if I were&#xD;
an academic researcher, but there are software patent issues&#xD;
associated with that method that I'd rather not have to deal&#xD;
with.  FAST corners would be nice, but the relatively low&#xD;
resolution caused by the mirror distortion means that this&#xD;
algorithm doesn't work well.  But I can use the Harris&#xD;
corner features from "good features to track" which is&#xD;
already built into OpenCV.  Having been an OpenCV refusenick&#xD;
for quite a number of years I'm now slowly growing to like&#xD;
it.  Harris corners seem to work quite reliably, despite the&#xD;
low resolution.&#xD;
</description>
    </item>
    <item>
      <pubDate>Tue, 16 Feb 2010 21:31:09 GMT</pubDate>
      <title>16 Feb 2010</title>
      <link>http://robots.net/person/motters/diary.html?start=74</link>
      <guid>http://robots.net/person/motters/diary.html?start=74</guid>
      <description>Detecting the ground using an omnidirectional stereo vision&#xD;
system.&#xD;
&#xD;
&lt;p&gt; http://www.youtube.com/watch?v=JhNotSaBmnA&#xD;
&#xD;
&lt;p&gt; The green features in the centre mirror have been identified&#xD;
as being close to the ground plane.&#xD;
&#xD;
&lt;p&gt; Edge features close to the ground plane are detected by&#xD;
projecting all features from the centre mirror to the ground&#xD;
plane (the height of the camera is known), then reprojecting&#xD;
the ground features back into the image plane of the four&#xD;
peripheral mirrors. The reverse operation is then applied,&#xD;
and features within the centre mirror are compared. Features&#xD;
with small reprojection error must belong somewhere close to&#xD;
the ground plane.&#xD;
&#xD;
&lt;p&gt; This provides a convenient and general way of locating the&#xD;
ground, which does not depend upon unreliable texture,&#xD;
colour histogram or image segmentation methods.</description>
    </item>
    <item>
      <pubDate>Sun, 14 Feb 2010 15:55:49 GMT</pubDate>
      <title>14 Feb 2010</title>
      <link>http://robots.net/person/motters/diary.html?start=73</link>
      <guid>http://robots.net/person/motters/diary.html?start=73</guid>
      <description>A brief explanation about the new combined stereo and&#xD;
omnidirectional vision system on the GROK2 robot.&#xD;
&#xD;
&lt;p&gt; http://streebgreebling.blogspot.com/2010/02/combined-stereo-and-omnidirectional.html&#xD;
&#xD;
&lt;p&gt; Having tried the classical space carving/voxel colouring&#xD;
techniques, and found them wanting, I'm going to try simpler&#xD;
methods such as edge, line and motion detection.  If the&#xD;
robot is stationary an observed moving object, like a&#xD;
person, should show up well and be easy to triangulate.</description>
    </item>
    <item>
      <pubDate>Mon, 1 Feb 2010 23:32:27 GMT</pubDate>
      <title>1 Feb 2010</title>
      <link>http://robots.net/person/motters/diary.html?start=72</link>
      <guid>http://robots.net/person/motters/diary.html?start=72</guid>
      <description>Looks like it's been a while since I last blogged here, so&#xD;
here's an update.  In the last six months I've mainly been&#xD;
writing more stereo vision code.  This was primarily for use&#xD;
with the Surveyor SVS, but I also wrote a version which runs&#xD;
on a PC under Linux.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; http://code.google.com/p/libv4l2cam/&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; v4l2stereo was initially written as an easy way in which to&#xD;
test the stereo algorithm before transferring it to the&#xD;
blackfin, but later developed into a piece of software in&#xD;
its own right.  You can see an example of the stereo&#xD;
disparities obtained with the Minoru webcam here:&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; http://www.youtube.com/watch?v=EUcLAarcj7U&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; The Minoru only has a short 6cm baseline, so the effective&#xD;
stereo range is not very great (probably less than two&#xD;
metres), but it works well on Linux.  As is always the case&#xD;
with webcams the image capture is not synchronized, so if&#xD;
the cameras are moving quickly the delay does become a&#xD;
problem - but for most slow moving robots would be ok.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; A recent nice feature of v4l2stereo is that it can be run in&#xD;
"headless" mode with no GUI output to the screen and also&#xD;
can stream the image over a network using gstreamer.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; I also replaced Rodney's head with a simplified version&#xD;
which has the Minoru webcam mounted on it.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; http://www.youtube.com/watch?v=gNRdcwrTOM0&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; As of December 2009 I've also been experimenting with&#xD;
omnidirectional vision.  I saw one of the videos from Pi&#xD;
Robot a while back, and had been meaning to try out&#xD;
something similar using a Christmas tree decoration as a&#xD;
spherical mirror.  This actually works very well, and I've&#xD;
now created a new project called Omniclops for this code,&#xD;
since I didn't want to mix it up with anything else.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; http://code.google.com/p/omniclops/&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; Fortunately the geometry for a spherical mirror is pretty&#xD;
simple to deal with, and the results look promising.  So&#xD;
promising in fact that it's a cause for regret that I didn't&#xD;
try doing this many years ago.  I've been aware of this type&#xD;
of vision for at least a decade, but the mirrors always&#xD;
looked too exotic or expensive to be worth bothering with,&#xD;
and the idea of making a parabolic mirror by hand without&#xD;
milling machinery seemed like probably something which&#xD;
wouldn't be very successful.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; Whilst fooling around with omnidirectional vision using a&#xD;
Christmas decoration a thought occurred to me.  Could I&#xD;
somehow combine stereo vision with omnidirectional vision,&#xD;
so that objects could be ranged without needing to do&#xD;
structure from motion?  At first I just thought of using a&#xD;
couple of mirrors with one of the stereo cameras, but then I&#xD;
thought why not just use a single camera with a wide field&#xD;
of view looking at multiple mirrors spaced some distance&#xD;
apart.  This seems like a good way to do things for the&#xD;
following reasons:&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; - You only need a single camera&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; - There are no camera synchronisation issues&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; - There are no illumination/colour correction issues&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; - Ultra wide field of view compared to conventional stereo&#xD;
vision&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; - Very cheap to build&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; On the down side the resolution of the image within each&#xD;
mirror is rather low, but this probably isn't a major&#xD;
handicap.  Also the geometry is more complex than for&#xD;
ordinary stereo vision, but not prohibitively so.  I lashed&#xD;
up a prototype from aluminium and cardboard, using five&#xD;
mirrors made from Christmas decorations (carefully) sawn in&#xD;
half to make hemispheres.  You can see the resulting effect&#xD;
like so:&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; http://www.youtube.com/watch?v=QIuljh7Piso&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; This is effectively the same as having five cameras with&#xD;
overlapping fields of view and fisheye lenses.  Currently&#xD;
I'm thinking that this approach may be well suited to voxel&#xD;
coloring/space carving volumetric techniques, since it&#xD;
complies with the simple plane ordering constraint and the&#xD;
positions of the mirrors are known.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; Workwise, I'm pretty much unemployed now - like a lot of&#xD;
software engineers at present - so I can work on this full&#xD;
time and see if I can get any useful volumetric modeling.</description>
    </item>
    <item>
      <pubDate>Fri, 24 Jul 2009 22:23:30 GMT</pubDate>
      <title>24 Jul 2009</title>
      <link>http://robots.net/person/motters/diary.html?start=71</link>
      <guid>http://robots.net/person/motters/diary.html?start=71</guid>
      <description>Calibrating the pan and tilt mechanism (again)&#xD;
&#xD;
&lt;p&gt; http://streebgreebling.blogspot.com/2009/07/pan-and-tilt.html&#xD;
&#xD;
&lt;p&gt; I've adapted older code to simplify this procedure and make&#xD;
it more integrated with the rest of the system.</description>
    </item>
    <item>
      <pubDate>Tue, 21 Jul 2009 19:30:05 GMT</pubDate>
      <title>21 Jul 2009</title>
      <link>http://robots.net/person/motters/diary.html?start=70</link>
      <guid>http://robots.net/person/motters/diary.html?start=70</guid>
      <description>Views from both cameras as an animated gif.&#xD;
&#xD;
&lt;p&gt; http://groups.google.com/group/sentience/web/anim1.gif&#xD;
&#xD;
&lt;p&gt; The effective stereo range with the cameras spaced 12cm&#xD;
apart looks like it's 4-5 metres.  Objects in the far&#xD;
distance shouldn't appear to move.</description>
    </item>
    <item>
      <pubDate>Sun, 5 Jul 2009 17:04:25 GMT</pubDate>
      <title>5 Jul 2009</title>
      <link>http://robots.net/person/motters/diary.html?start=69</link>
      <guid>http://robots.net/person/motters/diary.html?start=69</guid>
      <description>GROK2 gets new cameras.&#xD;
&#xD;
&lt;p&gt; http://streebgreebling.blogspot.com/2009/07/grok2-gets-new-cameras.html&#xD;
&#xD;
</description>
    </item>
    <item>
      <pubDate>Fri, 19 Jun 2009 22:53:55 GMT</pubDate>
      <title>19 Jun 2009</title>
      <link>http://robots.net/person/motters/diary.html?start=68</link>
      <guid>http://robots.net/person/motters/diary.html?start=68</guid>
      <description>A brief guide to using the Minoru stereo webcam.&#xD;
&#xD;
&lt;p&gt; http://code.google.com/p/sentience/wiki/MinoruWebcam&#xD;
&#xD;
&lt;p&gt; It seems to me that this device might be quite useful for&#xD;
robot projects.  It wasn't very long ago that such as device&#xD;
would cost a couple of thousand dollars or more.&#xD;
&#xD;
&lt;p&gt; In addition to the feature based stereo I may also try&#xD;
implementing a dense stereo algorithm.  My thoughts on using&#xD;
this as a replacement for the cameras on GROK2 are that the&#xD;
baseline is probably a little on the short side, but that it&#xD;
probably would work.</description>
    </item>
    <item>
      <pubDate>Sun, 31 May 2009 16:56:16 GMT</pubDate>
      <title>31 May 2009</title>
      <link>http://robots.net/person/motters/diary.html?start=67</link>
      <guid>http://robots.net/person/motters/diary.html?start=67</guid>
      <description>This weekend I've been experimenting with the Minoru stereo&#xD;
webcam, which I think could turn out to be very useful for&#xD;
robotics purposes.&#xD;
&#xD;
&lt;p&gt; You can find my review here:&#xD;
&#xD;
&lt;p&gt; http://streebgreebling.blogspot.com/2009/05/minoru-stereo-webcam-review.html&#xD;
&#xD;
&lt;p&gt; At the moment I'm still undecided as to whether I'll use the&#xD;
Minoru to replace the existing cameras on GROK2.  I've&#xD;
ordered some wide angle lenses which I'll try using.  If the&#xD;
new lenses fit then this device might be ideal.</description>
    </item>
    <item>
      <pubDate>Mon, 25 May 2009 18:40:03 GMT</pubDate>
      <title>25 May 2009</title>
      <link>http://robots.net/person/motters/diary.html?start=66</link>
      <guid>http://robots.net/person/motters/diary.html?start=66</guid>
      <description>Have done more testing this weekend and fixed some important&#xD;
bugs.  It transpired that there was still a "glitch" issue&#xD;
with the direction of one of the encoders reversing&#xD;
seemingly at random, but I've managed to work around that. &#xD;
Also the motion control and joystick servers are now talking&#xD;
together as they should.&#xD;
&#xD;
&lt;p&gt; I need to write a new utility program which will allow me to&#xD;
visualise the occupancy grids after doing an initial&#xD;
joystick guided training run.  This should allow me to check&#xD;
that things look as I expect them to.&#xD;
&#xD;
&lt;p&gt; I've also ordered one of the Minoru 3D webcams.  Apparently&#xD;
these are UVC compliant and will work on Linux.  If I can&#xD;
get a pair of images out of the device this would make an&#xD;
excellent replacement for the existing stereo cameras,&#xD;
whilst also solving my V4L1 issues.  However, even if the&#xD;
Minoru does look like a usable stereo camera I'll need to&#xD;
assess image quality and field of view compared to the&#xD;
existing cameras which I'm using.&#xD;
&#xD;
&lt;p&gt; Wheel odometry is now calibrated, and repeatability looks&#xD;
good over short distances, such that the rate of increase in&#xD;
pose uncertainty should be unmanageably small.</description>
    </item>
  </channel>
</rss>
