manual input mapping to roll and pitch

This commit is contained in:
Dennis Mannhart
2016-11-22 11:39:39 +01:00
committed by Lorenz Meier
parent 0c49abbef8
commit 6906d966ce

View File

@@ -2160,11 +2160,11 @@ MulticopterPositionControl::task_main()
z_roll_pitch_sp = R_yaw_correction * z_roll_pitch_sp;
// use the formula z_roll_pitch_sp = R_tilt * [0;0;1]
// to calculate the new desired roll and pitch angles
// R_tilt can be written as a function of the new desired roll and pitch
// angles. we get three equations and have to solve for 2 unknowns
_att_sp.pitch_body = asinf(z_roll_pitch_sp(0));
_att_sp.roll_body = -atan2f(z_roll_pitch_sp(1), z_roll_pitch_sp(2));
// R_tilt is computed from_euler; only true if cos(roll) not equal zero
// -> valid if roll is not +-pi/2
_att_sp.roll_body = -asinf(z_roll_pitch_sp(1));
_att_sp.pitch_body = atan2f(z_roll_pitch_sp(0), z_roll_pitch_sp(2));
}
/* copy quaternion setpoint to attitude setpoint topic */