Questions about TRIM_ARSPD_CM and MIN_GNDSPD_CM

For an aircraft that is using GPS, but no compass or airspeed sensor:

  1. Are TRIM_ARSPD_CM and MIN_GNDSPD_CM still used in AUTO and RTL modes?
  2. Why is MIN_GNDSPD_CM default set at 0? Wouldn’t it be important to set this to the aircraft’s stall speed?
  3. How does ardupilot know not to stall the aircraft if MIN_GNDSPD_CM is 0?
  4. How is TRIM_THROTTLE used in AUTO and RTL assuming TRIM_ARSPD_CM and MIN_GNDSPD_CM are also used?

Ground speed does not equal airspeed unless there is zero wind. It’s pretty easy to hover a plane over a certain ground spot when the airspeed and wind speed are equal to each other. Stall speed comes from airspeed and is completely independent of ground speed.

When an airspeed sensor is used (or you use the airspeed estimate from the GPS), TRIM_THROTTLE is not used in auto throttle modes. When airspeed is not available, TRIM_THROTTLE is used.

So the main confusion is that both TRIM_THROTTLE and TRIM_ARSPD_CM are implied to be used on automatic throttle modes. After some testing, I found that TRIM_ARSPD_CM actually dictates the aircraft’s speed in automatic throttle modes (like AUTO and RTL).

There is also ARSPD_FBW_MIN and ARSPD_FBW_MAX that are additional factors in determining the aircraft’s speed in automatic throttle modes.

Here is a summary of the conflicts/confusion:
Min speed: ARSPD_FBW_MIN and MIN_GNDSPD_CM seem to overlap responsibility
Cruising speed: TRIM_THROTTLE and TRIM_ARSPD_CM seem to overlap responsibility
Max speed: ARSPD_FBW_MAX