Using MAVLink to debug your flight (CanberraUAV style)

Following on from Tridge’s article (here), this article focuses on the bottle drop malfunction in CanberraUAV’s flight at the UAV Outback Challenge 2012.

The aim is to show the evidence and theories about why/how the bottle came off, with an emphasis on post-flight analysis on the flight logs. This will hopefully assist other users and developers in analysing their own flights.

What we know

  • Takeoff was at 13:43 (local time)
  • We entered the search area at 13:46
  • The bottle sensor showed “dropped” at 13:53
  • Over the next couple of minutes, our speed dropped to 50%
  • Exited the search area at 14:33
  • We landed back at the airport at 14:35
  • The UAV looked like this after landing:
  • The bottle was found in a field in the search area in 1 piece, undamaged.

It was obvious that the bottle had come off mid-flight. The parachute became tangled in the propeller. There was a large chip in the propeller that indicated a large collision with it, possibly from the bottle (note the propeller was brand new at the start of the competition).

As for any investigation, the aim is to review the events and data leading up to the event of interest. Fortunately, we have full flight logs (here). They were captured via MAVProxy. The analysis was performed using the Mavlink examples.

Analysis          

We had our bottle drop sensor (digital microswitch) connected to the voltage sensor on the APM.

Considering the speed drop after the bottle drop, a reasonable theory was that bottle “hung around” (possible caught on the tail) for a while, adding drag to the UAV. However, the throttle compensation needed to maintain cruise speed was needed throughout the entire flight after the bottle drop. This indicates a permanent effect – possibly engine damage.

Let’s take a look at that:

mavgraph.py flight.log VFR_HUD.airspeed VFR_HUD.groundspeed SYS_STATUS.voltage_battery:2

(The “:2” tells mavgraph to use the right-hand axis for the aforementioned variable)

So, we have the speed scale (m/s) of the left and microswitch voltage (mV) on the right.

This graph shows us the speed did definitely go down at around 13:56, several minutes after the bottle drop sensor showed dropped. Thus there was some time between the bottle coming off and the engine being affected.

Also of interest is the “almost drops” 5 times before the final drop. This could indicate that the microswitch was rapidly switching on/off for ~15 seconds on a number of occasions. Possibly the bottle was already loose and was rolling off the sensor.

 

The question is why the bottle was rolling off the sensor at these times. There seemed to be a possible relation to groundspeed though.

So, let’s have a look at what direction the UAV was flying in:

mavgraph.py flight.log VFR_HUD.heading SYS_STATUS.voltage_battery:2

This shows quite clearly that each time the UAV did a 90 degree turn, the bottle rolled off it’s sensor.

We can also look at the UAV’s roll and pitch:

mavgraph.py flight.log ‘degrees(ATTITUDE.roll)’ ‘degrees(ATTITUDE.pitch)’ SYS_STATUS.voltage_battery:2

(note roll and pitch are logged in radians. Mavgraph can do the conversion though, and any other basic maths)

Each time the UAV rolled, the bottle slipped a bit on the sensor. Maybe it was a bit loose?

As for the final drop, it would be possible that this would have imparted a large force of the UAV – if it was a sudden, forceful event (such as the propeller initially getting fouled with the parachute). So let’s take a look at the accelerometers and gyros for any evidence of this:

mavgraph.py flight.log RAW_IMU.xacc RAW_IMU.yacc RAW_IMU.zacc SYS_STATUS.voltage_battery:2

mavgraph.py flight.log ‘degrees(ATTITUDE.rollspeed) ‘degrees(ATTITUDE.pitchspeed)’ ‘degrees(ATTITUDE.yawspeed)’ SYS_STATUS.voltage_battery:2

Nope, nothing significant - no sudden large forces.

Thus the event would have not been particularly violent. It was most likely spread over some time.

Conclusions

Thus, given that:

  • The bottle coming off the UAV was not particularly violent
  • The UAV started slowing down a few minutes after the bottle came off
  • The bottle was starting to let loose during turns, when the UAV was rolling at ~60 degrees
  • The bottle itself show no signs of damage (thus was not caught in the propeller)

 

It is our best guess that:

  1. Some string from the parachute came loose during flight
  2. The rolls that the UAV was experiencing during turns may have moved the bottle assembly enough to let the string loose
  3. Once the string was extended far enough back, it got fouled in the propeller
  4. The bottle got partially ripped off – enough to trip the sensor, but not enough to completely release from the UAV
  5. The force of this let the parachute string slip freely around the propeller
  6. After several minutes, the propeller caught the string again, ripping off the bottle for good. As it came off, the rest of the parachute string caught on the engine block, damaging it
  7. As a result of this damage, the engine could not maintain speed at the given throttle level.
  8. The UAV continued slowing down until the Ground Station commanded a ~20% throttle increase.

 

 

 

And that’s how you analyse an incident with your UAV/drone:

  • Look at the physical evidence
  • Look at the flight logs for any unusual readings
  • Look for links (i.e. occurred at the same time) between different data variables and the physical evidence
  • Develop a timeline of events, with a focus on why one event led to another event and so forth until you reach the incident in question
  • Come up with the most likely, logical explanation for the incident.

 

Note: a full list of all the MAVlink datafields collected in a standard log is here. Note not all autopilots use all the datafields. Some may be blank.

Views: 1402

Comments are closed for this blog post

© 2017   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service