Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Vision class can template match in a search region. The search
region result is masked by an ellipse related to the S matrix of the
feature.
|
|
This class can display measurements and featuers and find new features.
When complete it will also perform measurements.
|
|
|
|
Pq = J*Pa*J'
where J is the Jacobian of the euler to quaternion function
|
|
|
|
STATESIZE 9 works just as it does for experiment04032017 tag. The
quaternion covariance is not being set correctly yet.
|
|
|
|
|
|
Rather than use FULLSTATE define, we define STATESIZE, which removes a
lot of the preprocessor ifdefs. This should be done in Body and Feature
also. Quaterniond was removed as an input to methods when STATESIZE==13
and it is instead accessed from the body state.
|
|
|
|
1-Pt RANSAC is a method for detecting outlier measurements in the EKF
framework. This algorithm is as described in Civera 2010.
|
|
|
|
|
|
|
|
But they don't really work.
|
|
It makes sense to decouple the measurement type, referred to as feature
type or fType from the Feature class since a feature can be measured in
different ways throughout its lifetime. Better to keep knowledge of the
measurement type in the State class.
|
|
Feature methods were updated to accomodate both types of features.
|
|
|
|
() back to main
|
|
|
|
|
|
Update was too vague since a lot of things get updated. dx more clearly refers
to the incremental update after a Kalman update.
|
|
|
|
Still needs to be debugged as the result is way off, but it is all
there.
|
|
|
|
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.
|
|
Method to compute R for given vector of z measurements. Added a method
State::Hrows(z) to return number of rows in H(z).
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
This fixes a bug that was present in the pyslam code. The Jacobian of the motion
model needs to be replaced with:
F = I + F*dt
|
|
|
|
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.
|
|
|
|
The State class contains the body and feature classes. It is responsible
for composing matrices, and performing Kalman updates.
|