betaflight / betaflight

Open Source Flight Controller Firmware
GNU General Public License v3.0
8.06k stars 2.87k forks source link

Hold Pos in the first GPS Rescue stage as in the LAND stage #13545

Open wshadw opened 1 month ago

wshadw commented 1 month ago

Is your feature request related to a problem? Please describe

The problem is that during the first stage (ASCEND), the drone continues to drift forward and may crash. I have encountered this problem several times while flying in the mountains close to the surface.

Describe the solution you'd like

I think it's worth adding a position hold in the first stage (ASCEND) of the rescue, the same as in the landing stage (LAND).

Describe alternatives you've considered

For now I have solved the problem by setting Angle and Throttle to 1900 for the first stage of connection loss. This allows you to change the vector of forward motion to upward motion, preventing a possible collision with an obstacle ahead. But with such settings it is dangerous to fly in the forest or fly under obstacles, since the drone will slam into it at full speed.

Other information

No response

jsk2084 commented 3 weeks ago

Prior to 4.5 (and 4.4), ascend mode worked a bit differently. Instead of leveling “flat” and climbing, it would attempt to fly straight up with little to no velocity. During the development of the newer versions of Rescue, I did extensive testing and found that the IMU would drift at a steady rate away from correct heading. To address this vulnerability, the ascent mode was changed to what we have now.

However, many changes to the IMU code have been made since then - It’s much more robust and less prone to these heading errors. I would be interested in seeing how the older ascent phase code would do now in prolonged climbs, after those imu improvements.

Aside from that heading drift vulnerability, the previous ascent mode was more refined than the current “level flat” method, and GPS Rescue might benefit if we brought it back. I’d love to help test this and find out. :-)