aboutsummaryrefslogtreecommitdiff
path: root/apps/multirotor_att_control/multirotor_attitude_control.c
diff options
context:
space:
mode:
authorJulian Oes <joes@student.ethz.ch>2012-11-18 14:12:02 -0800
committerJulian Oes <joes@student.ethz.ch>2012-11-19 09:26:38 -0800
commit2652b16d37f2221dc9dabfa1a278651c2931e5ce (patch)
tree21614433bba8d85625c9bc996755227bbd418147 /apps/multirotor_att_control/multirotor_attitude_control.c
parent9c8e031f6be214994801a74018160174f74b5516 (diff)
downloadpx4-firmware-2652b16d37f2221dc9dabfa1a278651c2931e5ce.tar.gz
px4-firmware-2652b16d37f2221dc9dabfa1a278651c2931e5ce.tar.bz2
px4-firmware-2652b16d37f2221dc9dabfa1a278651c2931e5ce.zip
Distinction between yaw position and yaw speed control, just messsed around in the code, untested
Diffstat (limited to 'apps/multirotor_att_control/multirotor_attitude_control.c')
-rw-r--r--apps/multirotor_att_control/multirotor_attitude_control.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/apps/multirotor_att_control/multirotor_attitude_control.c b/apps/multirotor_att_control/multirotor_attitude_control.c
index 8ffa90238..bf908c6dd 100644
--- a/apps/multirotor_att_control/multirotor_attitude_control.c
+++ b/apps/multirotor_att_control/multirotor_attitude_control.c
@@ -158,7 +158,7 @@ static int parameters_update(const struct mc_att_control_param_handles *h, struc
}
void multirotor_control_attitude(const struct vehicle_attitude_setpoint_s *att_sp,
- const struct vehicle_attitude_s *att, struct vehicle_rates_setpoint_s *rates_sp, struct actuator_controls_s *actuators)
+ const struct vehicle_attitude_s *att, struct vehicle_rates_setpoint_s *rates_sp, struct actuator_controls_s *actuators, bool control_yaw_position)
{
static uint64_t last_run = 0;
static uint64_t last_input = 0;
@@ -216,9 +216,10 @@ void multirotor_control_attitude(const struct vehicle_attitude_setpoint_s *att_s
rates_sp->roll = pid_calculate(&roll_controller, att_sp->roll_body ,
att->roll, att->rollspeed, deltaT);
- /* control yaw rate */
- rates_sp->yaw = p.yaw_p * atan2f(cosf(att->yaw - att_sp->yaw_body), sinf(att->yaw - att_sp->yaw_body)) - (p.yaw_d * att->yawspeed);
-
+ if(control_yaw_position) {
+ /* control yaw rate */
+ rates_sp->yaw = p.yaw_p * atan2f(cosf(att->yaw - att_sp->yaw_body), sinf(att->yaw - att_sp->yaw_body)) - (p.yaw_d * att->yawspeed);
+ }
rates_sp->thrust = att_sp->thrust;
motor_skip_counter++;