Skip to content

Commit 16de569

Browse files
committed
Update inertial attitude ukf to accept IMUSensorMsgPayload
1 parent eea2589 commit 16de569

File tree

3 files changed

+9
-38
lines changed

3 files changed

+9
-38
lines changed

src/fswAlgorithms/attDetermination/inertialAttitudeUkf/inertialAttitudeUkf.cpp

+5-32
Original file line numberDiff line numberDiff line change
@@ -170,43 +170,16 @@ void InertialAttitudeUkf::readStarTrackerData(){
170170
* @return void
171171
* */
172172
void InertialAttitudeUkf::readGyroData(){
173-
int smallestFutureIndex = 0;
174-
int numberOfValidGyroMeasurements = 0;
175-
double firstFutureTime = -1;
176-
double meanMeasurementTime = 0;
177-
AccDataMsgPayload gyrBuffer = this->accelDataMsg();
178-
for (int index = 0; index < MAX_ACC_BUF_PKT; index++) {
179-
double gyroMeasuredTime = gyrBuffer.accPkts[index].measTime*NANO2SEC;
180-
if (gyroMeasuredTime > this->previousFilterTimeTag) {
181-
if (gyroMeasuredTime < firstFutureTime || firstFutureTime<0){
182-
smallestFutureIndex = index;
183-
firstFutureTime = gyroMeasuredTime;
184-
}
185-
meanMeasurementTime += gyroMeasuredTime;
186-
numberOfValidGyroMeasurements += 1;
187-
}
188-
}
189-
auto lowPass = LowPassFilter();
190-
lowPass.setFilterCutoff(this->cutOffFrequency);
191-
lowPass.setFilterStep(this->hStep);
192-
if (numberOfValidGyroMeasurements > 0){
193-
meanMeasurementTime /= numberOfValidGyroMeasurements;
194-
/*! - Loop through buffer for all future measurements since the previous time to filter omega_BN_B*/
195-
for (int index = 0; index < MAX_ACC_BUF_PKT; index++) {
196-
int shiftedIndex = (index + smallestFutureIndex) % MAX_ACC_BUF_PKT;
197-
auto omega_BN_B = Eigen::Map<Eigen::Vector3d>(gyrBuffer.accPkts[shiftedIndex].gyro_B);
198-
/*! - Apply low-pass filter to gyro measurements to get smoothed body rate*/
199-
lowPass.processMeasurement(omega_BN_B);
200-
}
201-
173+
IMUSensorMsgPayload gyroBuffer = this->imuSensorDataInMsg();
174+
if (gyroBuffer.timeTag*NANO2SEC > this->previousFilterTimeTag) {
202175
auto gyroMeasurement = MeasurementModel();
203176
gyroMeasurement.setMeasurementName("gyro");
204-
gyroMeasurement.setTimeTag(meanMeasurementTime);
177+
gyroMeasurement.setTimeTag(gyroBuffer.timeTag);
205178
gyroMeasurement.setValidity(true);
206179

207180
gyroMeasurement.setMeasurementNoise(
208-
this->measNoiseScaling * this->gyroNoise/std::sqrt(numberOfValidGyroMeasurements));
209-
gyroMeasurement.setObservation(lowPass.getCurrentState());
181+
this->measNoiseScaling * this->gyroNoise/std::sqrt(gyroBuffer.numberOfValidGyroMeasurements));
182+
gyroMeasurement.setObservation(cArray2EigenVector3d(gyroBuffer.AngVelPlatform));
210183
gyroMeasurement.setMeasurementModel(MeasurementModel::velocityStates);
211184
this->measurements[this->measurementIndex] = gyroMeasurement;
212185
this->measurementIndex += 1;

src/fswAlgorithms/attDetermination/inertialAttitudeUkf/inertialAttitudeUkf.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#include "architecture/msgPayloadDefCpp/FilterResidualsMsgPayload.h"
3737

3838
#include "architecture/msgPayloadDefC/STAttMsgPayload.h"
39-
#include "architecture/msgPayloadDefC/AccDataMsgPayload.h"
39+
#include "architecture/msgPayloadDefC/IMUSensorMsgPayload.h"
4040
#include "architecture/msgPayloadDefC/RWSpeedMsgPayload.h"
4141
#include "architecture/msgPayloadDefC/VehicleConfigMsgPayload.h"
4242
#include "architecture/msgPayloadDefC/RWArrayConfigMsgPayload.h"
@@ -77,7 +77,7 @@ class InertialAttitudeUkf: public SRukfInterface {
7777
RWArrayConfigMsgPayload rwArrayConfigPayload;
7878
ReadFunctor<VehicleConfigMsgPayload> vehicleConfigMsg;
7979
ReadFunctor<RWSpeedMsgPayload> rwSpeedMsg;
80-
ReadFunctor<AccDataMsgPayload> accelDataMsg;
80+
ReadFunctor<IMUSensorMsgPayload> imuSensorDataInMsg;
8181

8282
Message<NavAttMsgPayload> navAttitudeOutputMsg;
8383
Message<FilterMsgPayload> inertialFilterOutputMsg;

src/fswAlgorithms/attDetermination/inertialAttitudeUkf/inertialAttitudeUkf.i

+2-4
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,8 @@ struct VehicleConfigMsg_C;
4141
struct RWArrayConfigMsg_C;
4242
%include "architecture/msgPayloadDefC/RWSpeedMsgPayload.h"
4343
struct RWSpeedMsg_C;
44-
%include "architecture/msgPayloadDefC/AccDataMsgPayload.h"
45-
struct AccDataMsg_C;
46-
%include "architecture/msgPayloadDefC/AccPktDataMsgPayload.h"
47-
struct AccPktDataMsg_C;
44+
%include "architecture/msgPayloadDefC/IMUSensorMsgPayload.h"
45+
struct IMUSensorMsg_C;
4846
%include "architecture/msgPayloadDefC/NavAttMsgPayload.h"
4947
struct NavAttMsg_C;
5048

0 commit comments

Comments
 (0)