fix calculation of target rotation
This commit is contained in:
parent
2d7356b9ed
commit
7c10f4b1cd
@ -232,6 +232,7 @@ void Guidance::targetRotationRate(const double timeDelta, double quatIX[4], doub
|
|||||||
}
|
}
|
||||||
if (timeDelta != 0.0) {
|
if (timeDelta != 0.0) {
|
||||||
QuaternionOperations::rotationFromQuaternions(quatIX, quatIXprev, timeDelta, refSatRate);
|
QuaternionOperations::rotationFromQuaternions(quatIX, quatIXprev, timeDelta, refSatRate);
|
||||||
|
VectorOperations<double>::mulScalar(refSatRate, -1, refSatRate, 3);
|
||||||
} else {
|
} else {
|
||||||
std::memcpy(refSatRate, ZERO_VEC3, 3 * sizeof(double));
|
std::memcpy(refSatRate, ZERO_VEC3, 3 * sizeof(double));
|
||||||
}
|
}
|
||||||
@ -315,9 +316,9 @@ void Guidance::comparePtg(double currentQuat[4], double currentSatRotRate[3], do
|
|||||||
|
|
||||||
// Calculate error satellite rotational rate
|
// Calculate error satellite rotational rate
|
||||||
// Convert target rotational rate into body RF
|
// Convert target rotational rate into body RF
|
||||||
double errorQuatInv[4] = {0, 0, 0, 0}, targetSatRotRateB[3] = {0, 0, 0};
|
double targetSatRotRateB[3] = {0, 0, 0};
|
||||||
QuaternionOperations::inverse(errorQuat, errorQuatInv);
|
QuaternionOperations::multiplyVector(currentQuat, targetSatRotRate, targetSatRotRateB);
|
||||||
QuaternionOperations::multiplyVector(errorQuatInv, targetSatRotRate, targetSatRotRateB);
|
VectorOperations<double>::copy(targetSatRotRateB, targetSatRotRateB, 3);
|
||||||
// Combine the target and reference satellite rotational rates
|
// Combine the target and reference satellite rotational rates
|
||||||
double combinedRefSatRotRate[3] = {0, 0, 0};
|
double combinedRefSatRotRate[3] = {0, 0, 0};
|
||||||
VectorOperations<double>::add(targetSatRotRate, refSatRotRate, combinedRefSatRotRate, 3);
|
VectorOperations<double>::add(targetSatRotRate, refSatRotRate, combinedRefSatRotRate, 3);
|
||||||
|
Loading…
Reference in New Issue
Block a user