From 210dd7ecbeba87a278310a4740db3d726bcc9407 Mon Sep 17 00:00:00 2001 From: Martin Miller Date: Mon, 7 Aug 2017 14:32:40 -0500 Subject: process noise --- src/body.cpp | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/body.cpp b/src/body.cpp index 1aafd54..5f5076b 100644 --- a/src/body.cpp +++ b/src/body.cpp @@ -115,6 +115,8 @@ Body::R() Matrix Body::Q (double dt) { + const bool doang=true; + const bool doquat=true; Matrix Ga; Ga.block<3,3>(0,0) = 0.5*dt*dt*Matrix3d::Identity(); @@ -122,9 +124,13 @@ Body::Q (double dt) Ga.block(6,0) = Matrix::Zero(); Matrix Gb; - Gb.block<3,3>(0,0) = -0.5*dt*dt*Matrix3d::Identity(); - Gb.block<3,3>(3,0) = -dt*Matrix3d::Identity(); - Gb.block(6,0) = Matrix::Zero(); + if (doang) { + Gb.block<3,3>(0,0) = -0.5*dt*dt*Matrix3d::Identity(); + Gb.block<3,3>(3,0) = -dt*Matrix3d::Identity(); + Gb.block(6,0) = Matrix::Zero(); + } else { + Gb.block(0,0) = Matrix::Zero(); + } Gb.block<3,3>(STATESIZE-3,0) = dt*Matrix3d::Identity(); Matrix Gw; @@ -133,21 +139,33 @@ Body::Q (double dt) Gw.block(6,0) = Matrix::Zero(); #if STATESIZE==13 - Matrix Gq; - Quaterniond q = qhat(); - - Gq.block<6,3>(0,0) = Matrix::Zero(); - Gq.block<4,3>(6,0) = 0.5*dt*qomega(q); - Gq.block<3,3>(10,0) = Matrix::Zero(); + Matrix Gq; + if (doquat) { + Gq = Matrix::Zero(); + Quaterniond q = qhat(); + + Gq.block<6,3>(0,0) = Matrix::Zero(); + Gq.block<4,3>(6,0) = 0.5*dt*qomega(q); + Gq.block<3,3>(10,0) = Matrix::Zero(); + } else { + Gq = Matrix::Zero(); + Gq.block<6,4>(0,0) = Matrix::Zero(); + Gq.block<4,4>(6,0) = dt*Matrix::Identity(); + Gq.block<3,4>(10,0) = Matrix::Zero(); + } #endif Matrix Q; Q = Matrix::Zero(); - Q = acc_std*acc_std*Ga*Ga.transpose(); + if (doang) { + Q += acc_std*acc_std*Ga*Ga.transpose(); + //Q += ang_std*ang_std*Gw*Gw.transpose(); + } else { + Q += (acc_bias_std+ang_std+acc_std)*(acc_std+acc_bias_std+ang_std)*Ga*Ga.transpose(); + } Q += acc_bias_std*acc_bias_std*Gb*Gb.transpose(); - Q += ang_std*ang_std * Gw * Gw.transpose(); #if STATESIZE==13 - Q += ang_std*ang_std *Gq * Gq.transpose(); + Q += ang_std*ang_std *(Gq+Gw) * (Gq+Gw).transpose(); #endif -- cgit v1.1