|
|
|
@ -350,7 +350,7 @@ void Plane::stabilize_acro(float speed_scaler)
@@ -350,7 +350,7 @@ void Plane::stabilize_acro(float speed_scaler)
|
|
|
|
|
/*
|
|
|
|
|
manual rudder for now |
|
|
|
|
*/ |
|
|
|
|
steering_control.steering = steering_control.rudder = rudder_input; |
|
|
|
|
steering_control.steering = steering_control.rudder = rudder_input(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -450,9 +450,7 @@ void Plane::calc_throttle()
@@ -450,9 +450,7 @@ void Plane::calc_throttle()
|
|
|
|
|
void Plane::calc_nav_yaw_coordinated(float speed_scaler) |
|
|
|
|
{ |
|
|
|
|
bool disable_integrator = false; |
|
|
|
|
if (control_mode == STABILIZE && rudder_input != 0) { |
|
|
|
|
disable_integrator = true; |
|
|
|
|
} |
|
|
|
|
int16_t rudder_in = rudder_input(); |
|
|
|
|
|
|
|
|
|
int16_t commanded_rudder; |
|
|
|
|
|
|
|
|
@ -462,11 +460,15 @@ void Plane::calc_nav_yaw_coordinated(float speed_scaler)
@@ -462,11 +460,15 @@ void Plane::calc_nav_yaw_coordinated(float speed_scaler)
|
|
|
|
|
millis() - plane.guided_state.last_forced_rpy_ms.z < 3000) { |
|
|
|
|
commanded_rudder = plane.guided_state.forced_rpy_cd.z; |
|
|
|
|
} else { |
|
|
|
|
if (control_mode == STABILIZE && rudder_in != 0) { |
|
|
|
|
disable_integrator = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
commanded_rudder = yawController.get_servo_out(speed_scaler, disable_integrator); |
|
|
|
|
|
|
|
|
|
// add in rudder mixing from roll
|
|
|
|
|
commanded_rudder += SRV_Channels::get_output_scaled(SRV_Channel::k_aileron) * g.kff_rudder_mix; |
|
|
|
|
commanded_rudder += rudder_input; |
|
|
|
|
commanded_rudder += rudder_in; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
steering_control.rudder = constrain_int16(commanded_rudder, -4500, 4500); |
|
|
|
@ -499,11 +501,11 @@ void Plane::calc_nav_yaw_ground(void)
@@ -499,11 +501,11 @@ void Plane::calc_nav_yaw_ground(void)
|
|
|
|
|
// manual rudder control while still
|
|
|
|
|
steer_state.locked_course = false; |
|
|
|
|
steer_state.locked_course_err = 0; |
|
|
|
|
steering_control.steering = rudder_input; |
|
|
|
|
steering_control.steering = rudder_input(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
float steer_rate = (rudder_input/4500.0f) * g.ground_steer_dps; |
|
|
|
|
float steer_rate = (rudder_input()/4500.0f) * g.ground_steer_dps; |
|
|
|
|
if (flight_stage == AP_Vehicle::FixedWing::FLIGHT_TAKEOFF || |
|
|
|
|
flight_stage == AP_Vehicle::FixedWing::FLIGHT_ABORT_LAND) { |
|
|
|
|
steer_rate = 0; |
|
|
|
|