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.
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.
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.
OK, thanks for your answer.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.