I have a question to the unit of the control gains. I’ve briefly looked into the code. It seems like to me, the rate is in centidegree before it’s multiplied by the gain. Does it become the PWM duty cycle? If I know the exact blade pitch I want per deg/s rate, is this the correct math? "rate [centideg/sec] *Kp [sec/100] * (pitch_max-pitch_min) [deg]/(PWM_max_pitch-PWM_min_pitch) [duty_cyc] " Should that give me the result in [deg]?
First, all of the angular rates are in rad/sec and attitudes are in rad. The gain kp in the rate controller is multiplied by the rate error in rad/sec. the output is not pwm, it is a nondimensional value ranging from -1 to 1. For cyclic inputs it is scaled by the cyclic max parameter
Translating that to cyclic blade pitch gets a little more difficult to follow. So if you got to the motors library and look at MotorsHeli_Single.cpp, there is a function called move_actuators which contains the math for converting the input pitch, roll and collective to the servo outputs.
Hope this helps.
Thanks Bill, that does help.