Thank you very much for your verification.

I’m sorry for my late reply. It took me time to figure out the script.

I would like to clarify my understanding below and have some questions.

**Clarification of my understanding:**

So, the thrust output of each motor in MultirotorMixer.cpp script is below.

outputs[i] = roll * _rotors[i].roll_scale + pitch * _rotors[i].pitch_scale + yaw * _rotors[i].yaw_scale + thrust * _rotors[i].thrust_scale;

The above expression can be written as below for hexacopter X.

output[1] = roll * rotors[1].roll_scale + pitch * rotors[1].pitch_scale + yaw * rotors[1].yaw_scale + thrust * rotors[1].thrust_scale

output[2] = roll * rotors[2].roll_scale + pitch * rotors[2].pitch_scale + yaw * rotors[2].yaw_scale + thrust * rotors[2].thrust_scale

output[3] = roll * rotors[3].roll_scale + pitch * rotors[3].pitch_scale + yaw * rotors[3].yaw_scale + thrust * rotors[3].thrust_scale

output[4] = roll * rotors[4].roll_scale + pitch * rotors[4].pitch_scale + yaw * rotors[4].yaw_scale + thrust * rotors[4].thrust_scale

output[5] = roll * rotors[5].roll_scale + pitch * rotors[5].pitch_scale + yaw * rotors[5].yaw_scale + thrust * rotors[5].thrust_scale

output[6] = roll * rotors[6].roll_scale + pitch * rotors[6].pitch_scale + yaw * rotors[6].yaw_scale + thrust * rotors[6].thrust_scale

output[1] = roll * (-1) + pitch * (0) + yaw * (-1) + thrust * (1)

output[2] = roll * (1) + pitch * (0) + yaw * (1) + thrust * (1)

output[3] = roll * (0.5) + pitch * (0.87) + yaw * (-1)+ thrust * (1)

output[4] = roll * (-0.5) + pitch * (-0.87)+ yaw * (1) + thrust * (1)

output[5] = roll * (-0.5)+ pitch * (0.87) + yaw * (1) + thrust * (1)

output[6] = roll * (0.5) + pitch * (-0.87) + yaw * (-1) + thrust * (1)

output[1] = Control Value_roll * _roll_scale * (-1) + Control Value_pitch * _pitch_scale * (0) + Control Value_yaw * _yaw_scale * (-1) + Control Value_thrust * (1)

output[2] = Control Value_roll * _roll_scale * (1) + Control Value_pitch * _pitch_scale * (0) + Control Value_yaw * _yaw_scale * (1) + Control Value_thrust * (1)

output[3] = Control Value_roll * _roll_scale * (0.5) + Control Value_pitch * _pitch_scale * (0.87) + Control Value_yaw * _yaw_scale * (-1) + Control Value_thrust * (1)

output[4] = Control Value_roll * _roll_scale * (-0.5) + Control Value_pitch * _pitch_scale * (-0.87) + Control Value_yaw * _yaw_scale * (1) + Control Value_thrust * (1)

output[5] = Control Value_roll * _roll_scale * (-0.5) + Control Value_pitch * _pitch_scale * (0.87) + Control Value_yaw * _yaw_scale * (1) + Control Value_thrust * (1)

output[6] = Control Value_roll * _roll_scale * (0.5) + Control Value_pitch * _pitch_scale * (-0.87) + Control Value_yaw * _yaw_scale * (-1) + Control Value_thrust * (1)

where

_roll_scale: Scaling factor applied to roll inputs compared to thrust.

_pitch_scale: Scaling factor applied to pitch inputs compared to thrust.

_yaw_scale: Scaling factor applied to yaw inputs compared to thrust.

**Question 1:**

Are “_roll_scale”, “_pitch_scale”, and “_yaw_scale” calculated values or input values?

If those are calculated values, where could I find the calculation in a script?

If those are input values, what are the name of the parameters in https://dev.px4.io/v1.9.0/en/advanced/parameter_reference.html?

**Question 2:**

I think “Control Value_roll”, “Control Value_pitch”, and “Control Value_yaw” are comes from the attitude rate controller.

Is my understanding correct?

Where in a script could I find the connection from the attitude rate controller output to the control values in the above expression?