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?