summaryrefslogtreecommitdiff
path: root/src/state.h
diff options
context:
space:
mode:
authorMartin Miller2017-03-25 17:22:44 -0500
committerMartin Miller2017-03-25 17:22:44 -0500
commitf409d322fd400b412c632b74f76c6c9794fbf6c0 (patch)
treef500feab7fc99693def2dfca8bdc1a397d088810 /src/state.h
parentb44be266412246a50078f73a188e6d506a3fb5ae (diff)
downloadrefslam-f409d322fd400b412c632b74f76c6c9794fbf6c0.zip
refslam-f409d322fd400b412c632b74f76c6c9794fbf6c0.tar.gz
Add code to State for removing features.
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.
Diffstat (limited to 'src/state.h')
-rw-r--r--src/state.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/state.h b/src/state.h
index 67b235f..a0ebc45 100644
--- a/src/state.h
+++ b/src/state.h
@@ -9,7 +9,7 @@
#include "feature.h"
#include "types.h"
-#define MAXFEATURES 50
+#define MAXFEATURES 30
#define FASTMOTIONMODEL // Uncomment this to perform motion model update on all features at once
using Eigen::Matrix;
using Eigen::MatrixXd;
@@ -45,10 +45,11 @@ class State
void initializePi(int i, const Matrix<double,3,3> &Pi);
void motionModel(const Vector3d &acc, const Vector3d &ang,
const Quaterniond &q, const double dt);
+ void Pkk1 ( const Vector3d &ang, const Quaterniond &q, const double dt);
void position_covariance(const Matrix<double,3,3> &p);
+ std::list<Feature *>::iterator removeFeature(std::list<Feature *>::iterator &i, int j);
void velocity_covariance(const Matrix<double,3,3> &p);
void vel(const Matrix<double,3,1> &v);
- void Pkk1 ( const Vector3d &ang, const Quaterniond &q, const double dt);
void update ( const Matrix<double,1,1> &z);
/* ==================== OPERATORS ======================================= */
@@ -61,8 +62,9 @@ class State
private:
/* ==================== METHODS ======================================= */
- void expandP();
void addFeatures(std::vector<measurement_t> &F, const Quaterniond &q);
+ void expandP();
+ void shrinkP( int i );
/* ==================== DATA MEMBERS ======================================= */
Body *body;