Autopilot failed to recover after midair collision

Summary

I was recently piloting my flying wing, in FBWA, running Ardupilot with a friend, and he collided with me while in the air. After the collision, my plane went into a dive. I demanded max pitch up and could tell my plane was recovering, but wasn’t recovering fast enough which resulted in a crash. During the dive, I noticed my plane was not recovering fast and stopped demanding max pitch up as I was unsure of the orientation and didn’t want to dive my plane into the ground at a higher speed. I have been analyzing the logs and can see that the autopilot was only giving max pitch up, (30 degrees) while I was demanding it, when I released the sticks while the plane was still in a dive, the CTUN.Navpitch drops to -2 degrees while my plane had a CTUN.Pitch of -50 degrees.

Flight log download link

Plane Configuration

  • 14” wing span flying wing
  • Arduplane v4.6.2
  • Flying in FBWA

Questions:

  1. May someone analyze my logs to figure out why the autopilot wasn’t issuing more pitch up during the dive?
  2. What does the AETR.Elev log parameter show, I’ve read the documentation and see that it is the normalized premixer control surface output but don’t intuitively understand what that means? Would it be correct to say it is the amount of elevator being demanded into the mixer for the current desired CTUN.Navpitch?
  3. If my plane goes into a dive in the future, are there arduplane features/functions I could use to help recover faster? I know some commercial RC planes have a switch that quickly brings a plane to level flight.
  4. After anonymizing the binary log file, I am no longer able to open it in the Ardupilot online UAV viewer, but still can open the logs in mission planner. Is this a bug or the expected behaavior?
1 Like
  1. It looks like pitch tune could be improved a bit, during recovery target pitch rate is not reached, there is some noise in pitch control.
    To me it looks like the recovery was limited by roll controller rate limit as according to the log you were doing max commanded roll rate.
  2. It is mapped to ±4500 centidegrees.
  3. I would consider having manual mode for recovery.
  4. That is expected the site can’t parse log files in text form. You can use GitHub - EosBandi/anomizer · GitHub to anonymize the log and keep it in the .bin form.
1 Like

for anonymizing logs, you could also use this fork if you want gui and dont want to set up python, uses same logic as used by @Eosbandi - Anomizer. download the exe for windows from releases

1 Like

@LupusTheCanine Thank you for taking the time to review my logs, I greatly appreciate it.

  1. I agree, the pitch tune could be improved some, but I’m confused why the pitch rate demanded by the autopilot was so low while my plane’s attitude was -45 degrees. In the plot below, you can see that CTUN.NavPitch drops to -2 degrees when I let off of the pitch stick (RCIN.C2). I would have expected the autopilot to continue to issue the max NavPitch of 30 degrees until the Pitch gets closer to its target. Does that seem odd to you?
    1. Additionally, I do not see where the roll controller hit the rate limit. Which log parameter were you looking at?
  2. Yes, that makes sense.
  3. Ok I will definitely do that in the future. I was hoping I could configure a mode for Ardupilot to quickly level the plane but I guess I’d have to do something very custom to make this possible.
  4. Perfect, thank you for the python anonymizer! I’ll try this out.

@Ishitbh Sweet, thank you for this additional log anonymizer! I’ll also check this one out!