AHRS mechanization small efficiency change (in progress)
							parent
							
								
									169eb4af3e
								
							
						
					
					
						commit
						5f5e481394
					
				| 
						 | 
					@ -83,14 +83,21 @@ Mechanization_bRn2 Mechanization_bRn2::integrate(const Vector& u,
 | 
				
			||||||
    const double dt) const {
 | 
					    const double dt) const {
 | 
				
			||||||
  // integrate rotation nRb based on gyro measurement u and bias x_g
 | 
					  // integrate rotation nRb based on gyro measurement u and bias x_g
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MODEL_NAV_FRAME_ROTATION
 | 
				
			||||||
  // get body to inertial (measured in b) from gyro, subtract bias
 | 
					  // get body to inertial (measured in b) from gyro, subtract bias
 | 
				
			||||||
  Vector b_omega_ib = u - x_g_;
 | 
					  Vector b_omega_ib = u - x_g_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // assume nav to inertial through movement is unknown
 | 
					  // nav to inertial due to Earth's rotation and our movement on Earth surface
 | 
				
			||||||
 | 
					  // TODO: figure out how to do this if we need it
 | 
				
			||||||
  Vector b_omega_in = zero(3);
 | 
					  Vector b_omega_in = zero(3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // get angular velocity on bRn measured in body frame
 | 
					  // calculate angular velocity on bRn measured in body frame
 | 
				
			||||||
  Vector b_omega_bn = b_omega_in - b_omega_ib;
 | 
					  Vector b_omega_bn = b_omega_in - b_omega_ib;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  // Assume a non-rotating nav frame (probably an approximation)
 | 
				
			||||||
 | 
					  // calculate angular velocity on bRn measured in body frame
 | 
				
			||||||
 | 
					  Vector b_omega_bn = x_g_ - u;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // convert to navigation frame
 | 
					  // convert to navigation frame
 | 
				
			||||||
  Rot3 nRb = bRn_.inverse();
 | 
					  Rot3 nRb = bRn_.inverse();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,11 +5,12 @@
 | 
				
			||||||
 * @author Chris Beall
 | 
					 * @author Chris Beall
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <list>
 | 
					#include "../AHRS.h"
 | 
				
			||||||
#include <gtsam/geometry/Rot3.h>
 | 
					#include <gtsam/geometry/Rot3.h>
 | 
				
			||||||
#include <gtsam/base/Vector.h>
 | 
					#include <gtsam/base/Vector.h>
 | 
				
			||||||
#include "../AHRS.h"
 | 
					#include <gtsam/base/Testable.h>
 | 
				
			||||||
#include <CppUnitLite/TestHarness.h>
 | 
					#include <CppUnitLite/TestHarness.h>
 | 
				
			||||||
 | 
					#include <list>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
using namespace gtsam;
 | 
					using namespace gtsam;
 | 
				
			||||||
| 
						 | 
					@ -67,6 +68,21 @@ TEST (AHRS, constructor) {
 | 
				
			||||||
  AHRS ahrs = AHRS(stationaryU,stationaryF,g_e);
 | 
					  AHRS ahrs = AHRS(stationaryU,stationaryF,g_e);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ************************************************************************* */
 | 
				
			||||||
 | 
					// TODO make a testMechanization_bRn2
 | 
				
			||||||
 | 
					TEST (AHRS, Mechanization_integrate) {
 | 
				
			||||||
 | 
					  AHRS ahrs = AHRS(stationaryU,stationaryF,g_e);
 | 
				
			||||||
 | 
					  Mechanization_bRn2 mech;
 | 
				
			||||||
 | 
					  KalmanFilter::State state;
 | 
				
			||||||
 | 
					//  boost::tie(mech,state) = ahrs.initialize(g_e);
 | 
				
			||||||
 | 
					//  Vector u = Vector_(3,0.05,0.0,0.0);
 | 
				
			||||||
 | 
					//  double dt = 2;
 | 
				
			||||||
 | 
					//  Rot3 expected;
 | 
				
			||||||
 | 
					//  Mechanization_bRn2 mech2 = mech.integrate(u,dt);
 | 
				
			||||||
 | 
					//  Rot3 actual = mech2.bRn();
 | 
				
			||||||
 | 
					//  EXPECT(assert_equal(expected, actual));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ************************************************************************* */
 | 
					/* ************************************************************************* */
 | 
				
			||||||
/* TODO: currently fails because of problem with ill-conditioned system
 | 
					/* TODO: currently fails because of problem with ill-conditioned system
 | 
				
			||||||
TEST (AHRS, init) {
 | 
					TEST (AHRS, init) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue