A local University has asked for my help in diagnosing a recent fly-away and crash of their stock 3DR X8+ copter. Although I can find several instances of operator error, I need help understanding the root cause. Data flash logs were provided, but no .tlog.
This was the first test flight since loading the latest stable firmware 3.4.6. They reloaded the .param file, and ran through Mission Planner’s set-up wizard. Here is the brief narrative:
I was testing from midfield of a football field at UH, with a set of metal bleachers about 50 yards west and a set of concrete bleachers about 50 yards east…the drone and myself were both facing south at launch time, with wind blowing from the east (blowing in the opposite direction of the flyaway). I was trained to start each flight in ALT HOLD mode, and then switch to LOITER mode after gaining a few feet of altitude…I followed that same procedure this time, and I was attempting to just get the drone a few feet off the ground and have it hover in LOITER mode for the initial test. The drone did not hover much at all and instead took off on a B-line for the bleachers. I first reacted by quickly switching back and forth once between ALT HOLD and loiter to see if I could get the drone to stabilize. I then tried an RTL as a last resort, and by the time I realized that the RTL was not going to work, the drone was nearly colliding with the bleachers. In hindsight, it probably would have been better to roll to the west instead of performing the final RTL…though I’m not sure it would have mattered either way with all the errors.
Everything definitely went to hell well before the second RTL…I am guessing that line 6500 is right around when the crash happened…I think the log probably ran for a few seconds after the crash, before the drone shut down…after the crash, the motors were kicking for a few seconds before eventually stopping a few moments before I made it to the scene of the crash.
The plot below shows a divergence from the blue GPS position and the red EKF position. The GPS is accurate.
GPS HDOP and Sats looks fine until after line 6500. If the crash already occurred then this would be expected.
Below is a plot showing the errors and flight modes. The operator didn’t touch the sticks, other than Throttle after arming the copter. The Yellow line shows his mode changes.
The abrupt attitude changes at line 6500 likely represent the crash.
The red line also shows the vibration spike that likely represents the crash, but it the speed (blue) continued to increase from 12m/s to 20m/s, and the altitude shows a smooth descent from ~15m to ground. So perhaps the aircraft was still flying? We can’t trust any of the data after line 6500 because the GPS starts to fail then, and EKF had already malfunctioned. Either way, the EKF errors started about 4 secs prior to the abrupt changes in attitude and vibration.
This shows more detail of the vibrations
Here is the Log Analysis, I don’t know whether the Compass failure was caused by the crash.
Size (kb) 726.5810546875
No of lines 9121
Duration 0:00:27
Vehicletype ArduCopter
Firmware Version V3.4.6
Firmware Hash e707341b
Hardware Type
Free Mem 0
Skipped Lines 0
Test: Autotune = NA -
Test: Brownout = GOOD -
Test: Compass = FAIL - Large change in mag_field (1069.24%)
Min mag field length (76.58) < recommended (120.00)
Max mag field length (895.44) > recommended (550.00)
Test: Dupe Log Data = GOOD -
Test: Empty = GOOD -
Test: Event/Failsafe = FAIL - ERRs found: FLT_MODE CRASH
Test: GPS = WARN - Min satellites: 5, Max HDop: 2.56
Test: IMU Mismatch = WARN - Check vibration or accelerometer calibration. (Mismatch: 1.35, WARN: 0.75, FAIL: 1.50)
Test: Motor Balance = FAIL - Motor channel averages = [1447, 1518, 1453, 1363, 1501, 1460, 1348, 1469]
Average motor output = 1444
Difference between min and max motor averages = 170
Test: Parameters = GOOD -
Test: PM = NA -
Test: Pitch/Roll = NA -
Test: Thrust = NA -
Test: VCC = UNKNOWN - No CURR log data
I do not understand what caused the EKF errors, but once the EKF_CHECK-2 occurs, the copter will no longer attempt to hold its position and should enter LAND mode. The operator should have been able to fly the copter back into position, but he was too reliant on the automation. I would have expected the copter to drift in the wind, put it appears to have taken off at high speed up wind. The operator reports that the copter started to fly away immediately upon switching to LOITER mode, however the errors don’t show up until about 7 secs later, by which time the copter was already flying away at 10 m/s. Should the EKF_CHECK_THRESH sensitivity by increased for earlier detection?
I’m requesting some assistance in understanding what may have been the root cause or the EKF errors before I try to put this bird back in the air.
Thank you for your time.
2017-06-09 11-48-22.bin (342.4 KB)
2017-06-09 11-48-22.log.param (10.1 KB)