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.
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.