With a personal passion for ocean sailing combined with a
inclination toward technologies that cooperate with natural forces, it
seems inevitable that I would be drawn to combining lighter-than-air
forces with my technology interests. In my never-ending quest to defy
gravity with the SRV-1 Blackfin, and inspired by the work of Chris and Jordi at DIY DRONES,
I launched a project to add sensors and onboard computation to a small
indoor helium blimp. This is build log of that project, with entries in
reverse chronological order.
My main objective in this project is to work on core computer
vision algorithms which enable the blimp to navigate through its
envirnment autonomously. The camera is the most important sensor - it
provides continuous live image capture for onboard "optical flow"
calculations, a very effective technique for obstacle detection and
velocity measurement. Beyond this, a 3D map of the environment needs to
be created, primarily using shape and color features that are extracted
from captured images, correlated with position and orientation that
were determined by the above sensors. Mapping is the most complex
challenge, but "SLAM" (simultaneous localization and mapping) is an
active area of research, and good techniques have already been
developed, though mostly for movement in 2 dimensions. Images are
captured at a full 30 frames/second, and the camera board has a 500MHz
Analog Devices Blackfin processor with 32MB memory performing
1000MIP's, so coupled with 802.11g WiFi communications, we have more
than enough horsepower to develop some interesting capabilities.
For those interested in YARB, we are now recommending a lower cost alternative, where you order the 66" blimp kit direct from the manufacturer - http://www.rcguys.com/66blimp.html, specifying the $229.95 version without motor controller. To complete the build, you need only add a battery (we recommend 850mAh 7.4V Lipoly), battery charger, and micro servo such as Hitek HS-55 or eFlight EFLRS75, along with the SRV-1 Blackfin Camera + Wifi. When you order the SRV-1 controller, please specify that it is for use with the YARB blimp, and we will provide a modified version of the motor controller. For additional info, email support@surveyor.com
The YARB version of SRV1Console has been posted at www.surveyor.com/blackfin/yarb.zip.
To configure YARB for a specific network, the default IP address of
169.254.0.10 should be changed in "srv.config" to the appropriate
address. Note that when YARB firmware starts, the gondola is carrying
the camera upside-down, so the image is flipped. The blue down-arrow
button on the console will flip the video to the right orientation.
We now have a very nice portable control console for YARB using the Google Android G1 phone.
The phone's tilt sensors are used to set power differentially to the
rotors, and buttons or the scroll wheel set the thrust vector servo.
All communication is via the wireless WLAN or G3 phone connection, and
live "FPV" (first person view) video is displayed on phone screen.
Steering via the tilt sensors is very natural - it only takes a few
minutes of practice to work out how much tilt is required to achieve
the desired motion and steer smoothly.
The new rig weighs about the same as the previous single-camera setup
with added sensors. It is actually a bit too light, so ballast has been
added using washers held in place on the Wifi antenna. There is a new
simplified console that steers via 4 arrow keys for direction (up,
down, left, right), the return key for reverse, and the spacebar to
stop motors. Control via keyboard seems more direct than using mouse
clicks, though the console will be able to steer via mouse clicks
directly on the display window - this would work nicely with portable
phones (iPhone, Android, etc).
Viewing of the live or archived video requires anaglyph (red/cyan) 3D glasses . Here is a short 3d stereo video clip captured from the blimp ...
It is fun to fly YARB around using stereo vision, but the real
point of this exercise is to develop the functions that compute
disparity between views of the two cameras in order to create a depth
map. Similar to human depth perception, this enables the robot to
measure distances to objects and obstacles without any additional
ranging sensors (e.g. sonar, IR, laser). Work has already started to
develop this capability in the Blackfin firmware.
Not so much visible progress over the past week, but a lot of work
has gone into improving the WiFi radio throughput and as well as adding
a Lisp interpreter to the core Blackfin firmware. Regarding the radio,
we increased the base connection from 921kbps to 2500kbps, which was
generally successful, though it exposed some latency issues in the java
console (SRV1Console) we use for remote control and video archiving.
Also, a lot of time was invested in porting a small Lisp interpreter
called "Lithp" to the onboard processor - this will be quite useful
when we start to develop search behaviors and autonomous problem
solving, but there is still some work to be done on integrating the
YARB and SRV-1 robot functions with the Lisp language.
As a quick test of the latest firmware, here is a video of YARB
cruising through the front room. The big brown lump on the couch is a
150-lb Chesapeake Bay Retriever named "Tank" who refuses to be
intimidated by a blimp.
I doubled the distance between compass and motors, and that seems
to have resolved the issue of magnetic field interference from the
motors. Also, I changed the two Maxbotics EZ0 sonars for 4 EZ1 sonars
with narrower beam widths. I haven't looked closely at the data yet,
but the sonar readings seem to be somewhat steadier.
Here's a photo of the gondola with the additional sensors - note the
tether to the compass out in front of the gondola -
The blimp now has additional sensors - a pair of Maxbotics EZ0
ultrasonic ranging modules and a Honeywell HMC6532 I2C compass. Also,
the camera module now points downward about 30-degrees via a simple
extender. The camera angle is pretty good now - the wide angle lens has
a field-of-view of approx 120-degrees, so the bottom of the frame
captures the scenary almost directly below.
At the moment, the sensor data is unfiltered, which allows us
to get an idea of how much variation there might be. The ultrasonic
data is pretty solid - the forward looking readings bounce around a
bit, but the download readings are fairly consistent. However, I think
we will change to a narrower beam module - probably the EZ1. Also, it
would be nice to have a couple of side-looking modules to enable some
degree of mapping capability.
The compass is less consistent, and it turns out that we're
getting magnetic field interference from the motors when they are
running. At the time I recorded the video clip below, I wasn't paying
attention to the readings, but subsequent tests show that the readings
are varying by as much as 15-degrees when the motors are powered.
Either we will have to move the compass, or add some compensation in
software.
Here's a snapshot of the gondola with the additional sensors -
The plan is to make changes in the sensors to clean up the
data, and then to write a script using the onboard C interpreter to let
the blimp wander around on its own, perhaps following a course based on
heading. After that, we will add some logic to use the camera to lock
onto an object and follow it around while maintaining altitude and
avoiding collision - that will be a bit more challenging.
Here's some video captured from yesterday's test session. The
caption overlay shows heading, forward distance and height above ground
in inches.
I have installed an SRV-1 Blackfin camera board and radio on a 66-inch helium blimp
(ordered without their motor controller for a $100 savings) -
interfacing the H-bridge on the SRV-1 combo radio/motor board directly
to the two prop motors and one of the Blackfin's timer channels to the
servo which vectors the prop thrust. Helium was supplied by a local
welding supply shop - Airgas. The 66-inch envelope takes approximately
16 cu-ft of helium.
Here's SRV1Console with some different buttons that control the
vectoring of the props and invert the video (the Blackfin board is
suspended upside-down from the blimp gondola).
Using SRV1Console's archiving feature, I captured the video
feed while piloting the blimp around the hallway and front room from my
office. The blimp is surprisingly easy to pilot - this was my first
attempt, and I didn't break anything, though there were some close
encounters. The camera's a bit out of focus in the following video and
the afternoon light washes out the scene somewhat, but you get the
general idea.
Next step is to add ultrasonic sensors and a compass in order
to start programming some autonomous exploration. This promises to be a
very interesting project.