Yesterday I finally made a few real world test flights in the mountains (midrange, midaltitude, 12…14 km at 2000 … 3000 m).
I discovered that there is really no good mode for flying longer range… Loiter mode sucks because you have to push the stick forward all the time, and it is not very precise, i.e. finding the best speed is very difficult. Also loiter mode is inefficient, because if you release the stick pressure, it brakes and looses effciency.
I ended up flying Acro mode all the time, because you set it up, and do not have to touch the controls. However, there is one problem - the throttle, it was very delicate, you lower it by one or two notches, and the copter goes down 2…3 m/s, you move it up, and it goes up. Also, I had a lot of thermals and downdrafts, so that you have to play with the throttle all the time.
Thinking about it, I feel there is a need for something similar to ACRO mode with Altitude control, i.e. you would set the attitude with the roll/pitch stick, but the throttle would maintain altitude like Alt Hold mode.
Acro Mode is very useful for longer range flights, especially if you have a crosswind (I had it between 25 and 40 km/h), as it allows to compensate for it by just rolling against it.
Another thing which immediately jumped into my mind is Efficiency Optimizer
The efficiency of the copter (energy per distance) depends on speed. Most copters are more efficient at moderate speeds than at hover, in my case that is about 15 % at about 30 km/h. From there the efficiency begins to drop, and from a certain speeed upwards, in my case above 70 km/h, it becomes really bad.
One cool feature would be speed control which would try to optimize automatically the speed so as to obtain best range. It is not as simple as selecting the best airspeed, because you have to consider the wind speed and direction.
The idea could be that the AP would try in a certain mode adjust the speed (copter inclination at constant altitud) so as to obtain the best efficiency per ground distance covered. It would constantly try to make small adjustments to speed and than check the efficiency, and based on that make again adjustments.
If the climb or descent rate is constant, that optimization would still work
Line of Sight Loss Warning Another interesting option is to implement a warning when the copter will fly behind mountain. Basically, you have to draw a line between the copter and home point, and check the ground elevation along that line using the terrain data. Once the ground elevation comes close to a preset value, a warning is issued that the copter is about to loose the Line of Sight.
I have implemented such a feature on my Ground Station for planes a long time ago, but it runs on Raspberry Pi and Python, so I am not sure if the STM processors would have enough spare computation power to do something like this on the FC side.
On the other hand, I doubt that we need to have more than 30 km of distance, so that at about 30 m/point, you need only to check about 1000 points max every 500 mS.