Purpose: detect visual landmarks and avoid obstacles.
H-Lines uses optical flow to detect and locate prominent line
segments that are horizontal in 3D space. Its advantages are
- It's fast. Most optical-flow techniques are very cpu intensive
and so tend to be slow.
- It complements sonar well because it's best suited to detecting
obstacles that are difficult for sonar to locate.
To compute 3D distances, two frames are needed. Between each frame, the
robot (or just the camera) must move forward a short, known distance -- about 150 mm.
Travel should be in a straight line, without rotation. To start a new H-Line
passing it a travel distance of
For each subsequent frame, move the robot or camera, then call
again, passing it the distance traveled. After each call, the
indicates how many 3D line segments were located. To retrieve data
for the 3D line segments, use
The camera should be tilted down about 30 degrees when using H-Lines, but it should not
otherwise be twisted. The tilt angle must be specified with good precision.
Executing Through MavisCtl
The H-Lines functionality uses eight parameters:
Fortunately, all but one (robot#width), are easily defaulted. See
for descriptions of these parameters.
The camera-placement and calibration parameters must also be set:
See Configuring Mavis
and Camera Calibration
for more on these parameters.
How It Works