From a9c65d7bf6e392c6a1b26fabcfb40aa461969ddb Mon Sep 17 00:00:00 2001 From: C-Glick <colton.glick@gmail.com> Date: Thu, 3 Feb 2022 20:56:42 -0600 Subject: [PATCH] Updated attitude rate control in student controller --- .../modules/interface/attitude_controller.h | 6 +++++ .../src/modules/src/attitude_pid_controller.c | 5 ++++ .../src/modules/src/controller_student.c | 23 ++++++++----------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/interface/attitude_controller.h b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/interface/attitude_controller.h index f27543b3e..e6ed0cffc 100644 --- a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/interface/attitude_controller.h +++ b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/interface/attitude_controller.h @@ -92,6 +92,12 @@ void attitudeControllerResetRollAttitudePID(void); */ void attitudeControllerResetPitchAttitudePID(void); +/** + * Reset controller yaw attitude PID + */ +void attitudeControllerResetYawAttitudePID(void); + + /** * Reset controller roll, pitch and yaw PID's. */ diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/attitude_pid_controller.c b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/attitude_pid_controller.c index 97f82f1df..928ebd8de 100644 --- a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/attitude_pid_controller.c +++ b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/attitude_pid_controller.c @@ -156,6 +156,11 @@ void attitudeControllerResetPitchAttitudePID(void) pidReset(&pidPitch); } +void attitudeControllerResetYawAttitudePID(void) +{ + pidReset(&pidYaw); +} + void attitudeControllerResetAllPID(void) { pidReset(&pidRoll); diff --git a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/controller_student.c b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/controller_student.c index 9f3f8b572..7f04e0263 100644 --- a/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/controller_student.c +++ b/crazyflie_software/crazyflie-firmware-2021.06/src/modules/src/controller_student.c @@ -52,9 +52,9 @@ bool controllerStudentTest(void) * * @param angle * @return float - */ + * static float capAngle(float angle) { - //TODO MICROCART: Student written + //TODO MICROCART: remove float result = angle; @@ -68,6 +68,7 @@ static float capAngle(float angle) { return result; } +*/ /** * This function is called periodically to update the PID loop, @@ -101,20 +102,11 @@ void controllerStudent(control_t *control, setpoint_t *setpoint, const sensorDat control->yaw = 0; return; } - - // update desired yaw from setpoint - // Rate-controlled YAW is moving YAW angle setpoint - if (setpoint->mode.yaw == modeVelocity) { - attitudeDesired.yaw += setpoint->attitudeRate.yaw * STUDENT_UPDATE_DT; - // absolute controlled yaw - } else { - attitudeDesired.yaw = setpoint->attitude.yaw; - } - attitudeDesired.yaw = capAngle(attitudeDesired.yaw); - //set desired roll and pitch + //set desired roll and pitch and yaw angles attitudeDesired.roll = setpoint->attitude.roll; attitudeDesired.pitch = setpoint->attitude.pitch; + attitudeDesired.yaw = setpoint->attitude.yaw; //set desired thrust thrustDesired = setpoint->thrust; @@ -138,6 +130,11 @@ void controllerStudent(control_t *control, setpoint_t *setpoint, const sensorDat rateDesired.pitch = setpoint->attitudeRate.pitch; attitudeControllerResetPitchAttitudePID(); } + if(setpoint->mode.yaw == modeVelocity) { + rateDesired.yaw = setpoint->attitudeRate.yaw; + attitudeControllerResetYawAttitudePID(); + } + //update the attitude rate PID, given the current angular rate //read by the gyro and the desired rate -- GitLab