Checking your log, it is clear that your altitude estimation was out of control, and the drone was climbing when it was supposed to go down. The landing mode does not help since it still requires altitude control which needs a good altitude estimation. Observe how different was the Kalman filter estimation with respect to the barometer. It thinks is going down when actually is going up; the barometer is consistent with the video:
Eventually, the fail-safe of the Kalman filter commands to land which does not happen because the altitude estimation is fooling the control at the end of the flight:
I think the problem is that the camera started reporting insanely high downward velocity. This is most likely caused by high vibration so perhaps it would be good to switch to use David Sastre’s vibration mount which has been added to the T265 wiki page.
altitude estimation was out of control, I think the problem caused by camera high vibration,
i use David Sastre’s vibration mount, and use different 3M vibration isolation foam, Softer is better
Good morning, @WangLouis I can’t access your last log. Also, are you using a range finder? sometimes when the barometer is very noisy and the altitude prediction is not that accurate, a range finder can send small corrections to the set-point of the altitude control and keeps the altitude of the drone more consistent. This is the terrain following feature of Arducopter.
Your application seems very particular. Have you tried a sonar or a radar as range finder? LiDAR is the best when it works, but I agree it is not the best when there is water or fog. Also, when using the T265 camera, be aware that there must be features around no farther than approximately 15m or your position estimation may not be good enough for flying. If you have the chance, you can even print your own features and place them around.
I think the height changes are coming from the camera’s vertical velocity. Beyond the adviced about vibration dampening I don’t know what else to say, the issue is in the camera itself, not in ArduPilot. Your idea to try changing the VISO_VEL_M_NSE might work, I’m really not sure.
Perhaps it would be good to stop the EKF from consuming the camera’s vertical velocity by setting EK3_SRC1_VELZ = 0.
By the way, before the first takeoff you should lift the vehicle about 1m and then put it back down again to allow the T265 to calibrate the scale. If you’re using the python scripts, you should then see a message like, “T265: Tracking Confidence High” displayed. I’ve recently added this to the wiki page.
By the way, it looks like the vehicle has quite high vibrations on the forward-back direction. If the autopilot is hard-mounted to the frame it might be good to instead add some vibration isolation.
This is awesome @WangLouis ! did you design this mount yourself? I have had issues with vibrations and the T265 camera before. Any advice you can give me for designing one or, if it is possible, can you share the files for this?