Jafar
|
Bearing only slam. More...
Bearing only slam.
Definition at line 82 of file bearingOnlySlam.hpp.
#include <bearingOnlySlam.hpp>
Public Types | |
typedef std::map < TrajectoryPoseRecordKey, TrajectoryPoseRecord > | TrajectoryPoseRecordsType |
typedef std::map< unsigned int, InitFeature * > | InitFeaturesMapType |
Public Member Functions | |
BearingOnlySlam (std::size_t sizeMax_, std::size_t sizeRobotState_, std::size_t sizeRobotPose_, std::size_t sizeTrajectory_) | |
virtual void | init (boost::posix_time::time_duration const &curTime) |
clear the map and the robot pose | |
virtual void | addRobot (BaseRobot *) |
Add a new BaseRobot in the map. | |
std::size_t | sizeTrajectory () const |
jblas::vec_range const & | getTrajectoryPose (unsigned int frameIndex, unsigned int robotId_=0) const |
void | setBoSensor (BearingOnlyFeatureObserveModel *model, int sensorId=0) |
add a bearing-only sensor | |
void | setBoSensor (BearingOnlyFeatureObserveModel *model, InfFeatureObserveModel *modelInf, int sensorId=0) |
add a bearing-only sensor wich takes into account landmarks at infinity | |
virtual void | setRobotToSensor (jblas::vec const &robotToSensor, int sensorId=0) |
Set the robotToSensor transformation of sensor sensorId. | |
virtual void | setRobotToSensor (jblas::vec const &robotToSensor, jblas::vec const &robotToSensorStdDev, int sensorId=0) |
Set the robotToSensor transformation along with its uncertainty of sensor sensorId. | |
bool | hasBoFeatureObserveModel (int sensorId) |
BearingOnlyFeatureObserveModel & | getBoFeatureObserveModel (int sensorId=0) |
bool | hasInfFeatureObserveModel (int sensorId) |
InfFeatureObserveModel & | getInfFeatureObserveModel (int sensorId) |
BaseFeatureObserveModel & | getBoInfFeatureObserveModel (int sensorId, bool infinity) |
TrajectoryPoseRecordsType const & | getTrajectoryPoseRecords () const |
void | addBoEventListener (BoSlamEventListener &listener) |
bool | hasInitFeature (unsigned int id_) const |
virtual bool | isFeatureKnown (unsigned int id) const |
InitFeature & | getInitFeature (unsigned int id) const |
virtual void | removeFeature (unsigned int id) |
void | removeInitFeature (unsigned int id) |
void | removeInitFeature (InitFeaturesMapType::iterator featureIt) |
void | beginBrowseInitFeatures () |
bool | hasNextInitFeature () |
InitFeature * | nextInitFeature () |
void | setBoParam (double dMin_=0.5, double dMax_=100, double sprtAlphaFA_=0.01, double sprtAlphaMD_=0.05) |
void | predict (unsigned int id, jblas::vec const &u) |
Compute the prediction for the movement of a robot. | |
Public Attributes | |
InitFeaturesMapType | initFeatures |
InitFeaturesMapType::iterator | browseInitFeaturesIt |
Protected Types | |
typedef std::map< int, BearingOnlyFeatureObserveModel * > | BoFeatureObserveModelsContType |
typedef std::map< int, InfFeatureObserveModel * > | InfFeatureObserveModelsContType |
typedef std::list < BoSlamEventListener * > | BoSlamEventListenersList |
Protected Member Functions | |
bool | hasTrajectoryPoseRecord (unsigned int frameIndex, unsigned int robotId_=0) const |
TrajectoryPoseRecord const & | getTrajectoryPoseRecord (unsigned int frameIndex, unsigned int robotId_=0) const |
TrajectoryPoseRecord & | getTrajectoryPoseRecord (unsigned int frameIndex, unsigned int robotId_=0) |
void | eraseTrajectoryPoseRecord (unsigned int frameIndex, unsigned int robotId_=0) |
void | eraseTrajectoryPoseRecord (TrajectoryPoseRecordsType::iterator it) |
void | updateTrajectoryWithRemovedFeature (InitFeature const &f) |
void | manageTrajectory (unsigned int robotId_=0) |
void | backupCurrentPose (std::size_t index, unsigned int _robotPose=0) |
void | observeNewFeature (Observation *obs_) |
This method adds a new feature to the map. | |
void | observeKnownFeature (Observation *obs_) |
This method performs observation update to a feature in the map. | |
void | observeInitFeature (InitFeature &feature, Observation *obs) |
virtual void | beginProcessObservations (unsigned int robotId_) |
virtual void | endProcessObservations (unsigned int robotId_) |
void | initState (InitFeature &feature, Observation const &obs) |
init the state of bearing-only feature | |
void | updateInitState (InitFeature &feature, Observation const &obs) |
update the init state of bearing-only feature | |
void | cleanInitFeatures () |
during initialisation steps, unobserved features are deleted | |
bool | manageInitState (InitFeature &iFeature) |
Manage the Sum Of Gaussians. | |
void | fullStateInit (InitFeature &iFeature, InitStateMember const &state) |
proceed with all operations to add a feature to the map | |
void | fullStateInit (InitFeature &iFeature, jblas::vec const &x, jblas::sym_mat const &P, bool atInfinity=false) |
virtual void | writeLogHeader (jafar::kernel::DataLogger &log) const |
Implements this method calling repeatidly log methods. | |
virtual void | writeLogData (jafar::kernel::DataLogger &log) const |
Implements this method calling repeatidly log methods. | |
Static Protected Member Functions | |
static double | computeInitStateHypothesisLogLikelihood (InitStateMember &ism, InitFeature &feature, BaseFeatureObserveModel &obsModel, double eraseHypothesisTh, Observation const &obs, jblas::sym_mat const &R, double m2PiN, jblas::vec_range const &xi, jblas::sym_mat_range const &Pi, jblas::vec_range const &xt, jblas::sym_mat_range const &Pt, jblas::sym_mat_range const &Pti, jblas::vec_range &xf_m_r, jblas::sym_mat &S_inv, jblas::mat_range &Jxt, jblas::mat &Jxi, jblas::mat &Jxf) |
compute hypothesis log-likelihood | |
Protected Attributes | |
std::vector< jblas::vec_range > | trajectory |
std::vector< jblas::sym_mat_range > | trajectoryCov |
std::vector< std::size_t > | trajectoryStateIndex |
std::vector< bool > | trajectoryIsRobot |
std::list< std::size_t > | trajectoryEmptyIndexes |
std::map< unsigned int, std::size_t > | robotIdToTrajectoryIndex |
TrajectoryPoseRecordsType | trajectoryPoseRecords |
BoFeatureObserveModelsContType | boFeatureObserveModels |
Observe models for bearing only features. | |
InfFeatureObserveModelsContType | infFeatureObserveModels |
Observe models for features at infinity. | |
double | dMin |
parameter for the depth initialization (min) | |
double | dMax |
parameter for the depth initialization (max) | |
double | sprtAlphaFA |
False alarm probability. | |
double | sprtAlphaMD |
Missed detection probability. | |
double | logA |
sprt upper bound | |
double | logB |
sprt lower bound | |
BoSlamEventListenersList | boSlamEventListeners |
unsigned int | nbInitFeaturesLost |
for logging this info | |
Private Attributes | |
std::size_t | m_sizeTrajectory |
Friends | |
class | KarmaManager |
std::ostream & | operator<< (std::ostream &s, const BearingOnlySlam &slam_) |
std::string | boSlamTrajectory (BearingOnlySlam const &slam) |
virtual void jafar::slam::BearingOnlySlam::addRobot | ( | BaseRobot * | ) | [virtual] |
Add a new BaseRobot in the map.
The function will initialize the state of the robot in the filter.
Reimplemented from jafar::slam::SlamEkf.
bool jafar::slam::BearingOnlySlam::manageInitState | ( | InitFeature & | iFeature | ) | [protected] |
Manage the Sum Of Gaussians.
void jafar::slam::BearingOnlySlam::observeNewFeature | ( | Observation * | obs_ | ) | [protected, virtual] |
This method adds a new feature to the map.
A new feature can be initialized only with an observation with the same dimension as the state of the feature.
Reimplemented from jafar::slam::SlamEkf.
void jafar::slam::BearingOnlySlam::predict | ( | unsigned int | _robotId, |
jblas::vec const & | u | ||
) | [virtual] |
Compute the prediction for the movement of a robot.
_robotId | id of the robot |
u | command |
Reimplemented from jafar::slam::SlamEkf.
virtual void jafar::slam::BearingOnlySlam::removeFeature | ( | unsigned int | id | ) | [virtual] |
Reimplemented from jafar::slam::SlamEkf.
std::size_t jafar::slam::BearingOnlySlam::sizeTrajectory | ( | ) | const [inline] |
Definition at line 228 of file bearingOnlySlam.hpp.
virtual void jafar::slam::BearingOnlySlam::writeLogData | ( | jafar::kernel::DataLogger & | log | ) | const [protected, virtual] |
Implements this method calling repeatidly log methods.
You should use writeData() or writeDataVector().
Reimplemented from jafar::slam::SlamEkf.
virtual void jafar::slam::BearingOnlySlam::writeLogHeader | ( | jafar::kernel::DataLogger & | log | ) | const [protected, virtual] |
Implements this method calling repeatidly log methods.
You should use writeComment(), writeLegend() or writeLegendTokens().
Reimplemented from jafar::slam::SlamEkf.
Generated on Wed Oct 15 2014 00:37:48 for Jafar by doxygen 1.7.6.1 |