PX4 SITL Drone Not Climbing Above 0.1m During Takeoff

I am running PX4 SITL with Gazebo using the x500 model, but my drone does not climb above 0.1m when executing a takeoff command. The takeoff is detected, but the altitude remains stuck at 0.1m, and the drone does not ascend further.

Here’s what I’ve checked and tried so far:
1. Takeoff Altitude Parameter (MIS_TAKEOFF_ALT)
• Set to 2.5m (param set MIS_TAKEOFF_ALT 2.5)
• Verified with param show MIS_TAKEOFF_ALT
2. EKF2 Status (ekf2 status)
• local position: 1
• global position: 1
• terrain: 1
• However, Preflight Fail: height estimate not stable warning occurs.
3. Sensor Data (listener sensor_combined)
• IMU and accelerometer values appear normal.
• Gyro readings are active.
• However, dist_bottom_valid: False in vehicle_local_position.
• Set to 0 (Barometer) → No improvement.
5. Motor Outputs (listener actuator_outputs)
• Motors are receiving signals and spinning.
• However, thrust does not seem to increase above hover level.
6. Gazebo Physics & Gravity
• gz physics -p confirms gravity is 9.81 m/s².
• gz topic -e /gazebo/default/x500_1/actuators shows actuator commands are being published.
7. Force Manual Climb in Altitude Mode
• commander mode altitude
• commander arm
• commander throttle up
• The drone still does not climb above 0.1m.
8. PX4 Logs & Additional Tests
• PX4 logs show Takeoff detected.
• The drone remains in the “taking off” state but does not exceed 0.1m.

Question:
• Why is the drone not climbing above 0.1m despite a correct takeoff command?
• How can I resolve the “Preflight Fail: height estimate not stable” warning?
• Could this be a Gazebo-PX4 synchronization issue or a terrain-following problem?

Any insights or debugging suggestions would be greatly appreciated! :rocket:

Environment:
• PX4 Version: Latest master branch
• OS: Ubuntu 22.04 (WSL2)
• Gazebo Version: Garden
• Simulator Model: x500
• EKF2 Parameters: Default, with some modifications as mentioned above

Which x500 model? Which world? What parameters did you change?

I just tested it and it works. Try a clean build (rm -rf build) and run again

make px4_sitl gz_x500

And either takeoff in QGC or nsh command line

commander takeoff

Thanks for the response!

I’m using the x500 model in Gazebo, and I’ve made some modifications to the world settings. Here’s what I’ve done so far:
1. Gazebo World Modifications:

•	Configured SIM_GZ_HOME_ALT to 0 to prevent altitude mismatch issues.

2.	Spawned Two x500 Drones at Different Locations:
model://x500 x500_1 0 1 0.2 0 0 0 model://x500 x500_2 5 5 0.2 0 0 0
3.	Start Command for Each Drone:

PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_NAME=“x500_1” PX4_GZ_MODEL_POSE=“0,1,0.2” PX4_SIM_MODEL=x500 ./build/px4_sitl_default/bin/px4 -i 1
PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_NAME=“x500_2” PX4_GZ_MODEL_POSE=“5,5,0.2” PX4_SIM_MODEL=x500 ./build/px4_sitl_default/bin/px4 -i 2 &

4.	Issue:
•	The drone detects takeoff but does not climb above 0.1m.
•	Preflight Fail: height estimate not stable warning appears.
•	listener vehicle_local_position shows dist_bottom_valid: False.

Would really appreciate any insights on why the takeoff is limited to 0.1m and how to stabilize height estimation

1 Like

You’re not launching the sim correctly, please see the docs

Also the default branch is main not master so make sure you’re using main.