Main MRPT website > C++ reference for MRPT 1.4.0
CRejectionSamplingRangeOnlyLocalization.h
Go to the documentation of this file.
1 /* +---------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +---------------------------------------------------------------------------+ */
9 #ifndef CRejectionSamplingRangeOnlyLocalization_H
10 #define CRejectionSamplingRangeOnlyLocalization_H
11 
12 #include <mrpt/poses/CPose2D.h>
13 #include <mrpt/poses/CPoint3D.h>
14 #include <mrpt/poses/CPoint2D.h>
17 #include <mrpt/obs/obs_frwds.h>
18 
19 #include <mrpt/slam/link_pragmas.h>
20 
21 namespace mrpt
22 {
23  namespace maps { class CLandmarksMap; }
24 
25  namespace slam
26  {
27  /** An implementation of rejection sampling for generating 2D robot pose from range-only measurements within a landmarks (beacons) map.
28  * Before calling the method "rejectionSampling" to generate the samples, you must call "setParams".
29  * It is assumed a planar scenario, where the robot is at a fixed height (default=0).
30  * \sa bayes::CRejectionSamplingCapable \ingroup mrpt_slam_grp
31  */
33  {
34 
35  public:
36  /** Constructor
37  */
39 
40  /** Destructor
41  */
43 
44  /** The parameters used in the generation of random samples:
45  * \param beaconsMap The map containing the N beacons (indexed by their "beacon ID"s). Only the mean 3D position of the beacons is used, the covariance is ignored.
46  * \param observation An observation with, at least ONE range measurement.
47  * \param sigmaRanges The standard deviation of the "range measurement noise".
48  * \param robot_z The height of the robot on the floor (default=0). Note that the beacon sensor on the robot may be at a different height, according to data within the observation object.
49  * \param autoCheckAngleRanges Whether to make a simple check for potential good angles from the beacons to generate samples (disable to speed-up the preparation vs. making slower the drawn).
50  * This method fills out the member "m_dataPerBeacon".
51  * \return true if at least ONE beacon has been successfully loaded, false otherwise. In this case do not call "rejectionSampling" or an exception will be launch, since there is no information to generate samples.
52  */
53  bool setParams(
54  const mrpt::maps::CLandmarksMap &beaconsMap,
55  const mrpt::obs::CObservationBeaconRanges &observation,
56  float sigmaRanges,
57  const mrpt::poses::CPose2D &oldPose,
58  float robot_z = 0,
59  bool autoCheckAngleRanges = true);
60 
61  protected:
62  /** Generates one sample, drawing from some proposal distribution.
63  */
65 
66  /** Returns the NORMALIZED observation likelihood (linear, not exponential!!!) at a given point of the state space (values in the range [0,1]).
67  */
69 
70  /** Z coordinate of the robot.
71  */
72  float m_z_robot;
73 
76 
77  /** The index in "m_dataPerBeacon" used to draw samples (the rest will be used to evaluate the likelihood)
78  */
79  size_t m_drawIndex;
80 
81  /** Data for each beacon observation with a correspondence with the map.
82  */
84  {
85  TDataPerBeacon() : sensorOnRobot(), beaconPosition(), radiusAtRobotPlane(0),minAngle(0),maxAngle(0)
86  {}
87 
91  float minAngle,maxAngle;
92  };
93 
94  /** Data for each beacon observation with a correspondence with the map.
95  */
96  std::deque<TDataPerBeacon> m_dataPerBeacon;
97 
98  };
99 
100  } // End of namespace
101 } // End of namespace
102 
103 #endif
CPoint2D.h
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::m_sigmaRanges
float m_sigmaRanges
Definition: CRejectionSamplingRangeOnlyLocalization.h:74
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::TDataPerBeacon::beaconPosition
mrpt::math::TPoint2D beaconPosition
Definition: CRejectionSamplingRangeOnlyLocalization.h:89
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::CRejectionSamplingRangeOnlyLocalization
CRejectionSamplingRangeOnlyLocalization()
Constructor.
mrpt::bayes::CRejectionSamplingCapable
A base class for implementing rejection sampling in a generic state space.
Definition: CRejectionSamplingCapable.h:29
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::m_oldPose
mrpt::poses::CPose2D m_oldPose
Definition: CRejectionSamplingRangeOnlyLocalization.h:75
mrpt::slam::CLandmarksMap
mrpt::maps::CLandmarksMap CLandmarksMap
Backward compatible typedef.
Definition: slam/CLandmarksMap.h:13
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CParticleFilter.h:17
mrpt::slam::CRejectionSamplingRangeOnlyLocalization
An implementation of rejection sampling for generating 2D robot pose from range-only measurements wit...
Definition: CRejectionSamplingRangeOnlyLocalization.h:33
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::m_drawIndex
size_t m_drawIndex
The index in "m_dataPerBeacon" used to draw samples (the rest will be used to evaluate the likelihood...
Definition: CRejectionSamplingRangeOnlyLocalization.h:79
CPose2D.h
lightweight_geom_data.h
mrpt::obs::CObservationBeaconRanges
Declares a class derived from "CObservation" that represents one (or more) range measurements to labe...
Definition: obs/CObservationBeaconRanges.h:29
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::TDataPerBeacon::radiusAtRobotPlane
float radiusAtRobotPlane
Definition: CRejectionSamplingRangeOnlyLocalization.h:90
mrpt::poses::CPose2D
A class used to store a 2D pose.
Definition: CPose2D.h:37
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::setParams
bool setParams(const mrpt::maps::CLandmarksMap &beaconsMap, const mrpt::obs::CObservationBeaconRanges &observation, float sigmaRanges, const mrpt::poses::CPose2D &oldPose, float robot_z=0, bool autoCheckAngleRanges=true)
The parameters used in the generation of random samples:
obs_frwds.h
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::m_dataPerBeacon
std::deque< TDataPerBeacon > m_dataPerBeacon
Data for each beacon observation with a correspondence with the map.
Definition: CRejectionSamplingRangeOnlyLocalization.h:96
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::TDataPerBeacon
Data for each beacon observation with a correspondence with the map.
Definition: CRejectionSamplingRangeOnlyLocalization.h:84
mrpt::math::TPoint2D
Lightweight 2D point.
Definition: lightweight_geom_data.h:33
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::~CRejectionSamplingRangeOnlyLocalization
virtual ~CRejectionSamplingRangeOnlyLocalization()
Destructor.
Definition: CRejectionSamplingRangeOnlyLocalization.h:42
CPoint3D.h
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::TDataPerBeacon::TDataPerBeacon
TDataPerBeacon()
Definition: CRejectionSamplingRangeOnlyLocalization.h:85
mrpt::math::TPoint3D
Lightweight 3D point.
Definition: lightweight_geom_data.h:229
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::RS_observationLikelihood
double RS_observationLikelihood(const mrpt::poses::CPose2D &x)
Returns the NORMALIZED observation likelihood (linear, not exponential!!!) at a given point of the st...
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::m_z_robot
float m_z_robot
Z coordinate of the robot.
Definition: CRejectionSamplingRangeOnlyLocalization.h:72
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::TDataPerBeacon::sensorOnRobot
mrpt::math::TPoint3D sensorOnRobot
Definition: CRejectionSamplingRangeOnlyLocalization.h:88
mrpt::maps::CLandmarksMap
A class for storing a map of 3D probabilistic landmarks.
Definition: maps/CLandmarksMap.h:60
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::TDataPerBeacon::minAngle
float minAngle
Definition: CRejectionSamplingRangeOnlyLocalization.h:91
CRejectionSamplingCapable.h
mrpt::slam::CRejectionSamplingRangeOnlyLocalization::RS_drawFromProposal
void RS_drawFromProposal(mrpt::poses::CPose2D &outSample)
Generates one sample, drawing from some proposal distribution.



Page generated by Doxygen 1.8.20 for MRPT 1.4.0 SVN: at Thu Aug 27 02:40:23 UTC 2020