summaryrefslogtreecommitdiff
path: root/src/state.h
AgeCommit message (Collapse)Author
2017-03-29Add new update methods.Martin Miller
But they don't really work.
2017-03-28ChangesMartin Miller
2017-03-28updateMartin Miller
2017-03-27EKF is workingMartin Miller
2017-03-27Change {State,Body}::enu() to pos()Martin Miller
2017-03-26Set height above water.Martin Miller
2017-03-25Add State methods for kalman update and innovation.Martin Miller
State::kalmanUpdate should be general enough to work with both the full and independent update methods. The State::innovation method calculates the innovation vector directly rather than building z and hhat individually.
2017-03-25Add State::R() method, refactor H()Martin Miller
Method to compute R for given vector of z measurements. Added a method State::Hrows(z) to return number of rows in H(z).
2017-03-25Methods added to State to get HMartin Miller
Added a method to return an H matrix for the provided measurements. This should be a versatile method that can work for the full H update or the indpendent update depending on what measurements are passed. Some helper methods were also added for determining a features location in the state vector and for return a feature pointer by id.
2017-03-25Turn off FASTMOTIONMODELMartin Miller
Testing shows that this is not, in fact, faster. Possibly it can be made more efficient in the future.
2017-03-25Add code to State for removing features.Martin Miller
After updating the state according to the motion model we check if features are still in the field of view. If they are not they are cleanly removed. Removal requires deletion of the feature, removal from the features list and shrinkng the P matrix.
2017-03-25Update State::motionModel and addFeaturesMartin Miller
Add the feature motion model update to the state method. It is implemented in two ways: one is the for loop that operates on each feature instance directly, which is how it has been implemented in the past. The second method is to compose a large L matrix for all features and compute the per feature dx in one go. It is expected that the second method is faster, but it is not yet tested for speed.
2017-03-24Compute Pk|k-1 using full state.Martin Miller
Previously State::Pkk1() was only being computed for the body states. Methods State::F() and State::Q() were written to compose the full versions of their respective matrices and the results are used to update Pk|k-1.
2017-03-24Move feature depth calculation to Feature class.Martin Miller
And also fixed F computation for features. I realized that the features were transformed from image to body frame prior to being passed to State. This makes sense because the State really doesn't need to know about Camera objects. Since the camera was no longer necessary inside of State it made sense to move the depth computation from Camera::ref2body() into a method in the Feature class that does not rely on camera parameters. Additionally, the depth solver was changed from a simple matrix inversion to a least squares calculation. Fx in the feature class was fixed to take into account dt. Updating Pkk1 is in the process of being modified to handle features.
2017-03-22Add feature handling to stateMartin Miller
2017-03-18Start Feature::h() methodMartin Miller
2017-03-18Major rewrite moves state variables into state.Martin Miller
Rather than maintain X and P in the main function they are moved into the body and state classes, respectively. This will become much more important when features are added and the accounting becomes more complicated.
2017-03-18Add fake z kalman updateMartin Miller
2017-03-18Add State classMartin Miller
The State class contains the body and feature classes. It is responsible for composing matrices, and performing Kalman updates.