SITL Fly away in LAND mode with Tricopter

Hello all,

When I tested vibration failsafe on multiple frames, I noticed that tri frame flies away in LAND mode.
You might reproduce the issue in SITL as the following steps:

  1. ./Tools/autotest/sim_vehicle.py -v ArduCopter -f tri --console -w
  2. param set EK3_IMU_MASK 1
  3. loiter
  4. arm throttle
  5. rc 3 2000 (climb to 30m)
  6. rc 3 1500
  7. param set SIM_ACC1_BIAS_Z 2
    param set SIM_ACC2_BIAS_Z 2
    param set SIM_ACC3_BIAS_Z 2

As you see the below, the drone landed on a location far from the landing position.

I have tested other frames (deca, dodeca-hexa, hexa, octa, octa-quad, quad, and y6), and I could not see the issue. The issue only happens in tri frame. Thanks!

Test version: d599052da3
Logs: https://drive.google.com/drive/folders/1mnT-gcLm58zD84uB7_hnVf4wVQEAcl8y?usp=sharing

Thanks for the report. I’ve added this to the “requires investigation” section of our 4.1 issues list. To be clear though, this is most likely an issue with the SITL tricopter model, not a real flight code issue.

I’ve had a look into this and created this issue. I think the issue is just that the simulated tricopter needs to lean quite a bit (about 6 degrees) to maintain position. In the test you’ve done, I think the EKF failsafe (and vibration failsafe) have triggered which leads to the vehicle switching into a pilot controlled LAND. E.g. the autopilot is not trying to control the horizontal position. The vehicle levels out and descends at the LAND_SPEED. Leveling out in a tricopter though leads to horizontal movement.

So I think this is expected behaviour but we could improve things in two ways:

  1. make the SITL model more realistic so the vehicle only needs to maintain about 2 or 3 degrees to counteract the yaw torque from the mistmatched motor
  2. add the ATC_HOVR_ROL_TRM that helicopters have to allow tuning the required amount of lean angle to compensate for the tail angle.

Thanks for the report.

1 Like

@rmackay9 Thanks! Either way looks good for me though I prefer the second method from the user’s point of view.