Altitude Jump Problem in Loiter and AltHold Mode

Hi everyone,

I am experiencing a constant altitude jump issue while hovering with my system in both Loiter and AltHold modes. The drone flies normally and maintains stable altitude in Stabilize mode, but when switched to AltHold or Loiter, it begins to rapidly change altitude, oscillating up and down by about half a meter.

System details:
Frame: Hexacopter +
Motors: X9+
Propellers: 34 inch
Total Weight: ~60 kg
Autopilot: Cube Orange+
Firmware: 4.5.7

I have checked for:
Proper barometer isolation and foam protection
GPS signal stability
Vibration levels (seem within normal range)

Despite that, the issue persists.
Has anyone experienced similar altitude jumps? Could this be related to barometer interference, PID tuning, or air pressure fluctuations?

Any insights or recommendations for troubleshooting steps would be greatly appreciated.
Sharing log file here: https://drive.google.com/file/d/1b-DLBooVGAjoBXIEN4slBRMXTpdAtO8X/view?usp=drive_link

You are missing step 20 of the ArduPilot methodic configurator software. You did not configured the altitude acceleration PIDs yet, so that strange behavior is actually normal.

1 Like

Thank you very much for the quick response, could you kindly review the logic and proposed parameter changes for fixing altitude oscillations offered to me by artificial intelligence in order to understand the processes.

CRITICAL: Enable hover throttle learning
MOT_HOVER_LEARN,2
MOT_THST_EXPO,0.60

Position Controller Z (altitude)
PSC_ACCZ_P,1.2
PSC_ACCZ_I,2.4
PSC_ACCZ_FLTE,20.0
PSC_ACCZ_SMAX,25

Velocity Controller Z (vertical speed)
PSC_VELZ_P,8.0
PSC_VELZ_I,2.0
PSC_VELZ_FLTE,5.0
PSC_VELZ_FLTD,5.0

Acceleration limits (softer for heavy platform)
ATC_ACCEL_P_MAX,35000
ATC_ACCEL_R_MAX,35000

Throttle Mix (headroom during maneuvers)
ATC_THR_MIX_MAN,0.5
ATC_THR_MIX_MAX,0.9
ATC_THR_MIX_MIN,0.1

Rationale:
MOT_HOVER_LEARN=2: Essential for controller to establish correct throttle baseline (currently blind at 0)
PSC_ACCZ_P: 0.5→1.2: Higher inertia requires proportionally higher P gains (counter-intuitive but correct for heavy platforms)
PSC_ACCZ_I: 1.0→2.4: Faster error compensation to prevent I-term windup oscillations
PSC_VELZ gains: Increased to match mass/inertia ratio vs. default assumptions
ATC_ACCEL__MAX: 20k→35k: Actually softer for heavy platform - prevents motor saturation during aggressive commands
ATC_THR_MIX: Increased headroom to maintain altitude during roll/pitch maneuvers

Questions for the community:

  1. Are these PSC values reasonable for a 60kg platform, or should I scale differently?
  2. Any concerns with MOT_THST_EXPO=0.60 for 34" props on X9 Plus motors?
  3. Should I approach this incrementally (smaller steps), or are these values conservative enough for direct testing?
  4. Any other parameters I should adjust for heavy-lift-specific behavior?

Sorry but most of that is just wrong.

You have two options

Read the extensive ArduPilot documentation or
Use ArduPilot methodic configurator software

Using an ArduPilot untrained AI for ArduPilot configuration is very error prone and dangerous.

3 Likes

Vibrations are quite high, flight duration is too short to confirm better.

I think you need to do more first-flight practice with a smaller drone.