PyCon 2014: 24 Days Out. Autopilot works! Sort of.

Screen Shot 2014-03-19 at 2.58.37 PM

Today was finally the moment of truth to determine whether or not the autopilot algorithm I’d put together would actually work.  If all worked according to plan from yesterday, then I could literally just plug everything in and it would go swimmingly.  I first tested the automated pitch controls that I’d demonstrated yesterday with the rest of the blimp:

It did in fact work. I did the same test with the yaw control. Unfortunately, I messed up the recording and was actually hitting “stop record” rather than “start record” for the filming so I got the complete inverse of what I wanted. So I won’t show the whole video, but here’s a picture of what the resulting video looked like:
IMG_0189
In short, yawing worked as well.  After a few minor touch ups, we were confident that we could go through with a full blown test flight, so we walked the blimp to a nearby park.  In hindsight, it would have been worth it to walk a little further to go to a bigger test area.
IMG_5460

IMG_5464

It’s a very scary thing to just throw a fairly buoyant blimp into the air with motors.  The absolute worst case scenario is that the blimp pitched up, the motors were throttled up, and some unaccounted for exception was triggered that locked out any controls.  We tested everything gradually, and so we first started by plotting waypoints on a map and just walking the waypoints.  While I didn’t have the motors on to create thrust, the tail rudder rotated accordingly to direct Larry to the correct point, and we found that the blimp could walk through the course.

Next we actually went through our first test run.

 

Unfortunately, GPS does not account for trees.  There are some apparent errors with the autopilot already, but they’re better explained by taking a look at the second, more intense trial run:

The video was cut short, but what happened after filming was actually fairly interesting.  Up front, the biggest problem was factoring in how to deal with the wind.  If not for that, I’m confident that the autopilot algorithm would have worked.  Anyway, after the blimp went off course by a significant amount, we stopped filming and ran to go and retrieve the blimp.  At that point it actually went above a building and looked like it was about to come down on it.  The knee-jerk reaction at that point would have been to kill the motors, but I instead signaled the blimp to apply more thrust.  The result was that the blimp was able to regain its pitch and safely navigate back toward us.

The reason that the wind had detrimental effects was twofold.  The first of which is that the onboard altimeter was calculating altitude by using temperature, pressure, and humidity.  Therefore, a gust of wind would affect both the pressure and the temperature and instantaneously cause a change in the reading for altitude, at which point the blimp would try to adjust its pitch to compensate.  Therefore, you’ll notice that the blimp is seemingly pitching up and down at random.  Apparently, everyone in the RC hobby game knows that you should use GPS to measure altitude, but I didn’t know that.  So I’m going to adjust the code so that altitude is read from the GPS rather than the altimeter.

The second problem with the wind is just how to deal with it in general.  The problem here is that the blimp will yaw with an intensity proportional to the delta between its current and target azimuth.  However, since there are no opposing forces (i.e. gravity in the case of pitch), rotational inertia will cause the blimp to overshoot its yawing movement, and the wind only exacerbates this problem.  Before testing again, I’ll consult with physics and the internets to see how to go about formulating the best way to determine rudder movement and account for rotational inertia.

At that point we’d reached the end of the weekend, and now I’ll go back and fine tune some of the aforementioned problems and re-test in hopefully one final weekend.