Template Class LandmarkSensorModel

Class Documentation

template<class LandmarkMap, class StateType>
class LandmarkSensorModel

Generic landmark model for discrete detection sensors (both 2D and 3D).

This sensor model is a generalization of the Sensor Model with Known Correspondences described in Probabilistic Robotics thrun2005probabilistic, Chapter 6.6. This version has been extended to support landmark detection in 3D even when the robot is constrained to 2D motion. The importance weight function models detections as having two components that can be independently measured: range and bearing.

Note

This class satisfies Beluga named requirements: SensorModel.

Template Parameters:
  • LandmarkMap – class managing the list of known landmarks.

  • StateType – type of the state of the particle.

Public Types

using state_type = StateType

State type of a particle.

using weight_type = double

Weight type of the particle.

using measurement_type = std::vector<LandmarkPositionDetection>

Measurement type of the sensor, detection position in robot frame.

using map_type = LandmarkMap

Map representation type.

using param_type = LandmarkModelParam

Parameter type that the constructor uses to configure the beam sensor model.

Public Functions

inline explicit LandmarkSensorModel(param_type params, LandmarkMap landmark_map)

Constructs a LandmarkSensorModel instance.

Parameters:
  • params – Parameters to configure this instance. See beluga::BeamModelParams for details.

  • landmark_map – Map of landmarks to be used by the sensor model to compute importance weights for particle states.

inline auto operator()(measurement_type &&detections) const

Returns a state weighting function conditioned on landmark position detections.

Parameters:

detections – 2D lidar hit points in the reference frame of filter particles.

Returns:

a state weighting function satisfying Beluga named requirements: StateWeightingFunction and borrowing a reference to this sensor model (and thus their lifetime are bound).

inline void update_map(map_type &&map)

Update the sensor model with a new landmark map.