Magnetometer & Sun Vector Attitude Filter Implementation
Fixes #190.
Summary of changes
Added GRP attitude representation utility functions to convert to and from utility functions (deferring intensive unit testing to #193).
Added double and float interfaces for all environment functions (this is helpful for switching between floats and doubles in the filter implementation itself).
Updated the q_eci_perifocal constant to fix the sun vector model; appropriate unit tests were fixed as well.
Initial attitude filter implementation when we have both magnetometer and sun sensor readings.
Simple testcase for the attitude filter with magnetometer + sun sensor readings.
On the surface, the attitude filter seems to work. It's difficult to write good test cases using just PIO because numerical precision, at least so far, has been as issue. For example, the Frobenius norm of the update state covariance matrix is only accurate to two significant digits. Also, we currently only have a single testcase.
There are multiple tickets open to track the work on the attitude filter going forward: #187, #188, #189, #191, #193, and #197. This work includes:
Developing more testcase and looking at long term filter behavior in MATLAB.
Magnetometer & Sun Vector Attitude Filter Implementation
Fixes #190.
Summary of changes
q_eci_perifocal
constant to fix the sun vector model; appropriate unit tests were fixed as well.On the surface, the attitude filter seems to work. It's difficult to write good test cases using just PIO because numerical precision, at least so far, has been as issue. For example, the Frobenius norm of the update state covariance matrix is only accurate to two significant digits. Also, we currently only have a single testcase.
There are multiple tickets open to track the work on the attitude filter going forward: #187, #188, #189, #191, #193, and #197. This work includes:
Ptest Effects
NA
Testing
See the added unit test cases and tickets listed above for further testing improvements to come.
Constants
gnc::constant::ukf_sigma_v
src/gnc_attitude_estimator.cpp
gnc::constant::ukf_sigma_u
sr/gnc_attitude_estimator.cpp
gnc::constant::ukf_sigma_b
src/gnc_attitude_estimator.cpp
gnc::constant::ukf_sigma_s
src/gnc_attitude_estimator.cpp
dt_thresh
(local scope)src/gnc_attitude_estimator.cpp
q_factor
(local scope)src/gnc_attitude_estimator.cpp
var_q
(local scope)src/gnc_attitude_estimator.cpp
var_g
(local scope)src/gnc_attitude_estimator.cpp
init_state
(local scope)src/gnc_attitude_estimator.cpp
Documentation Evidence
See inline documentation and the paper mentioned in the file documentation in
include/gnc/attitude_estimator.hpp
.