mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
OP-1309 Fixed bug in Quaternion Stabilization Error Calculation in regards to independent axis
This commit is contained in:
parent
3f5f77d878
commit
153d2fb786
@ -114,9 +114,19 @@ static void stabilizationOuterloopTask()
|
|||||||
float q_desired[4];
|
float q_desired[4];
|
||||||
float q_error[4];
|
float q_error[4];
|
||||||
|
|
||||||
rpy_desired[0] = stabilizationDesiredAxis[0];
|
for (t = 0; t < 3; t++) {
|
||||||
rpy_desired[1] = stabilizationDesiredAxis[1];
|
switch (cast_struct_to_array(enabled, enabled.Roll)[t]) {
|
||||||
rpy_desired[2] = stabilizationDesiredAxis[2];
|
case STABILIZATIONSTATUS_OUTERLOOP_ATTITUDE:
|
||||||
|
case STABILIZATIONSTATUS_OUTERLOOP_RATTITUDE:
|
||||||
|
case STABILIZATIONSTATUS_OUTERLOOP_WEAKLEVELING:
|
||||||
|
rpy_desired[t] = stabilizationDesiredAxis[t];
|
||||||
|
break;
|
||||||
|
case STABILIZATIONSTATUS_OUTERLOOP_DIRECT:
|
||||||
|
default:
|
||||||
|
rpy_desired[t] = ((float *)&attitudeState.Roll)[t];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RPY2Quaternion(rpy_desired, q_desired);
|
RPY2Quaternion(rpy_desired, q_desired);
|
||||||
quat_inverse(q_desired);
|
quat_inverse(q_desired);
|
||||||
|
@ -144,7 +144,7 @@
|
|||||||
#define PIOS_GPS_SETS_HOMELOCATION
|
#define PIOS_GPS_SETS_HOMELOCATION
|
||||||
|
|
||||||
/* Stabilization options */
|
/* Stabilization options */
|
||||||
// #define PIOS_QUATERNION_STABILIZATION
|
#define PIOS_QUATERNION_STABILIZATION
|
||||||
|
|
||||||
/* Performance counters */
|
/* Performance counters */
|
||||||
#define IDLE_COUNTS_PER_SEC_AT_NO_LOAD 8379692
|
#define IDLE_COUNTS_PER_SEC_AT_NO_LOAD 8379692
|
||||||
|
Loading…
Reference in New Issue
Block a user