About hover thrust

Hello,
In PX4 SITL, I send /mavros/setpoint_position/local topic to PX4 and make the uav take off 2m in OFFBOARD mode. When the uav is hovering, I checked the thrust at this time through QGC and it is 0.706-0.708. Then Is it hovering normalized thrust?

Pretty sure, yes that’s normalized 0..1.

1 Like

OK, then how can I compute normalized thrust?

normalized_value = ( raw_value - min (raw_value) ) / ( max ( raw_value ) - min ( raw_value ) )

or

normalized_value = ( raw_value * hovering_normalized_thrust ) / gravity

Our whole controller is unit-less, the controller outputs a normalized thrust (aka collective throttle) and that’s then mapped to motor signals. If you want to make the output mapping non-linear have a look here.

1 Like

OK, I am going to using setpoint_raw/attitude topic to publish thrust and bodyrates. If I computed thrust_des, how can I convert it to normalized thrust

yes — in PX4 SITL the hover thrust you see (~0.7) is normal. The simulator assumes a generic quadrotor model where hover is usually around 0.5–0.7. It’s not an exact “real standard,” just the parameter MPC_THR_HOVER used in simulation. For a real drone, this value depends on weight, propellers, and motor setup.

OK. The following code is used to compute the normalized thrust.

target_acc[2] += GRAVITY;
Eigen::Matrix3d R = quat2RotMatrix(target_att);
thrust_des_ = target_acc.dot(R.col(2));

thrust_des_ = (thrust_des_ * 0.70) / GRAVITY; // normalized

Is right?

Yes, that’s basically right — just don’t hard-code 0.70, use the MPC_THR_HOVER param instead since it depends on the vehicle.

1 Like

OK, thanks for your answer.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.