28 #ifndef CRangeBearingKFSLAM_H
29 #define CRangeBearingKFSLAM_H
59 using namespace mrpt::bayes;
93 void processActionObservation(
105 void getCurrentState(
107 std::vector<CPoint3D> &out_landmarksPositions,
108 std::map<unsigned int,CLandmark::TLandmarkID> &out_landmarkIDs,
121 inline void getCurrentState(
123 std::vector<CPoint3D> &out_landmarksPositions,
124 std::map<unsigned int,CLandmark::TLandmarkID> &out_landmarkIDs,
130 this->getCurrentState(q,out_landmarksPositions,out_landmarkIDs,out_fullState,out_fullCovariance);
150 this->getCurrentRobotPose(q);
173 void loadFromConfigFile(
175 const std::string §ion);
179 void dumpToTextStream(
CStream &out)
const;
232 predictions_IDs.clear();
233 newly_inserted_landmarks.clear();
250 return m_last_data_association;
258 void getLastPartition( std::vector<vector_uint> &parts )
260 parts = m_lastPartitionSet;
269 void getLastPartitionLandmarks( std::vector<vector_uint> &landmarksMembership )
const;
273 void getLastPartitionLandmarksAsIfFixedSubmaps(
size_t K, std::vector<vector_uint> &landmarksMembership );
279 double computeOffDiagonalBlocksApproximationError(
const std::vector<vector_uint> &landmarksMembership )
const;
288 void reconsiderPartitionsNow();
295 return &mapPartitioner.options;
300 void saveMapAndPath2DRepresentationAsMATLABFile(
301 const std::string &fil,
303 const std::string &styleLandmarks = std::string(
"b"),
304 const std::string &stylePath = std::string(
"r"),
305 const std::string &styleRobot = std::string(
"r") )
const;
318 void OnGetAction( KFArray_ACT &out_u )
const;
325 void OnTransitionModel(
326 const KFArray_ACT &in_u,
327 KFArray_VEH &inout_x,
328 bool &out_skipPrediction
335 void OnTransitionJacobian( KFMatrix_VxV &out_F )
const;
341 void OnTransitionNoise( KFMatrix_VxV &out_Q )
const;
353 void OnGetObservationsAndDataAssociation(
354 vector_KFArray_OBS &out_z,
356 const vector_KFArray_OBS &in_all_predictions,
357 const KFMatrix &in_S,
359 const KFMatrix_OxO &in_R
362 void OnObservationModel(
364 vector_KFArray_OBS &out_predictions
372 void OnObservationJacobians(
373 const size_t &idx_landmark_to_predict,
380 void OnSubstractObservationVectors(KFArray_OBS &A,
const KFArray_OBS &B)
const;
385 void OnGetObservationNoise(KFMatrix_OxO &out_R)
const;
394 void OnPreComputingPredictions(
395 const vector_KFArray_OBS &in_all_prediction_means,
410 void OnInverseObservationModel(
411 const KFArray_OBS & in_z,
412 KFArray_FEAT & out_yn,
413 KFMatrix_FxV & out_dyn_dxv,
414 KFMatrix_FxO & out_dyn_dhn )
const;
421 void OnNewLandmarkAddedToMap(
422 const size_t in_obsIdx,
423 const size_t in_idxNewFeat );
428 void OnNormalizeStateVector();
454 std::vector<vector_uint> m_lastPartitionSet;