Class CRejectionSamplingRangeOnlyLocalization

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

  • public bayes::CRejectionSamplingCapable< mrpt::poses::CPose2D >

Class Documentation

class CRejectionSamplingRangeOnlyLocalization : public bayes::CRejectionSamplingCapable<mrpt::poses::CPose2D>

An implementation of rejection sampling for generating 2D robot pose from range-only measurements within a landmarks (beacons) map. Before calling the method “rejectionSampling” to generate the samples, you must call “setParams”. It is assumed a planar scenario, where the robot is at a fixed height (default=0).

See also

bayes::CRejectionSamplingCapable

Public Functions

CRejectionSamplingRangeOnlyLocalization()

Constructor

~CRejectionSamplingRangeOnlyLocalization() override = default

Destructor

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:

Parameters:
  • 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.

  • observation – An observation with, at least ONE range measurement.

  • sigmaRanges

    The standard deviation of the “range measurement

    noise”.

  • 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.

  • 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). This method fills out the member “m_dataPerBeacon”.

Returns:

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.

Protected Functions

void RS_drawFromProposal(mrpt::poses::CPose2D &outSample) override

Generates one sample, drawing from some proposal distribution.

double RS_observationLikelihood(const mrpt::poses::CPose2D &x) override

Returns the NORMALIZED observation likelihood (linear, not exponential!!!) at a given point of the state space (values in the range [0,1]).

Protected Attributes

float m_z_robot = {0}

Z coordinate of the robot.

float m_sigmaRanges = {0.10f}
mrpt::poses::CPose2D m_oldPose
size_t m_drawIndex = {0}

The index in “m_dataPerBeacon” used to draw samples (the rest will be used to evaluate the likelihood)

std::deque<TDataPerBeacon> m_dataPerBeacon

Data for each beacon observation with a correspondence with the map.

struct TDataPerBeacon

Data for each beacon observation with a correspondence with the map.

Public Functions

TDataPerBeacon() = default

Public Members

mrpt::math::TPoint3D sensorOnRobot
mrpt::math::TPoint2D beaconPosition
float radiusAtRobotPlane = {0}
float minAngle = {0}
float maxAngle = {0}