/home/runner/work/beluga/beluga/beluga_ros/include/beluga_ros/amcl.hpp Source File#
Beluga ROS
|
amcl.hpp
Go to the documentation of this file.
120 using execution_policy_variant = std::variant<std::execution::sequenced_policy, std::execution::parallel_policy>;
259 auto update(Sophus::SE2d base_pose_in_odom, std::vector<std::pair<double, double>>&& measurement)
269 beluga::MultivariateUniformDistribution<Sophus::SE2d, beluga_ros::OccupancyGrid> map_distribution_;
Definition: amcl.hpp:102
auto update(Sophus::SE2d base_pose_in_odom, std::vector< std::pair< double, double >> &&measurement) -> std::optional< std::pair< Sophus::SE2d, Sophus::Matrix3d >>
Update particles based on motion and sensor information.
const auto & likelihood_field() const
Returns a reference to the current likelihood field.
Definition: amcl.hpp:141
void initialize_from_map()
Initialize particles using the default map distribution.
Definition: amcl.hpp:209
std::variant< beluga::DifferentialDriveModel2d, beluga::OmnidirectionalDriveModel, beluga::StationaryModel > motion_model_variant
Motion model variant type for runtime selection support.
Definition: amcl.hpp:111
std::variant< std::execution::sequenced_policy, std::execution::parallel_policy > execution_policy_variant
Execution policy variant type for runtime selection support.
Definition: amcl.hpp:120
void update_map(beluga_ros::OccupancyGrid map)
Update the map used for localization.
bool has_likelihood_field() const
Check if the sensor model bears a likelihood field.
Definition: amcl.hpp:181
auto likelihood_field_origin() const
Returns the current likelihood field origin transform.
Definition: amcl.hpp:161
const auto & particles() const
Returns a reference to the current set of particles.
Definition: amcl.hpp:138
std::tuple< Sophus::SE2d, beluga::Weight > particle_type
Weighted SE(2) state particle type.
Definition: amcl.hpp:105
void initialize(Sophus::SE2d pose, Sophus::Matrix3d covariance)
Initialize particles with a given pose and covariance.
Definition: amcl.hpp:204
auto update(Sophus::SE2d base_pose_in_odom, beluga_ros::SparsePointCloud3f point_cloud) -> std::optional< std::pair< Sophus::SE2d, Sophus::Matrix3d >>
Update particles using point cloud data.
void initialize(Distribution distribution)
Initialize particles using a custom distribution.
Definition: amcl.hpp:192
std::variant< beluga::LikelihoodFieldModel< beluga_ros::OccupancyGrid >, beluga::LikelihoodFieldProbModel< beluga_ros::OccupancyGrid >, beluga::BeamSensorModel< beluga_ros::OccupancyGrid > > sensor_model_variant
Sensor model variant type for runtime selection support.
Definition: amcl.hpp:117
auto update(Sophus::SE2d base_pose_in_odom, beluga_ros::LaserScan laser_scan) -> std::optional< std::pair< Sophus::SE2d, Sophus::Matrix3d >>
Update particles using laser scan data.
Amcl(beluga_ros::OccupancyGrid map, motion_model_variant motion_model, sensor_model_variant sensor_model, const AmclParams ¶ms, execution_policy_variant execution_policy)
Constructor.
void force_update()
Force a manual update of the particles on the next iteration of the filter.
Definition: amcl.hpp:263
Thin wrapper type for 2D sensor_msgs/LaserScan messages.
Definition: laser_scan.hpp:36
Thin wrapper type for 2D nav_msgs/OccupancyGrid messages.
Definition: occupancy_grid.hpp:42
Thin wrapper for 3D sensor_msgs/PointCloud2 messages with potentially sparse layouts.
Definition: sparse_point_cloud.hpp:53
Implementation of sensor_msgs/LaserScan wrapper type.
constexpr detail::covariance_fn covariance
DifferentialDriveModel< Sophus::SE2d > DifferentialDriveModel2d
Implementation of nav_msgs/OccupancyGrid wrapper type.
Implementation of sensor_msgs/PointCloud2 wrapper type for messages without alignment constraints on ...
Struct containing parameters for the Adaptive Monte Carlo Localization (AMCL) implementation.
Definition: amcl.hpp:50
std::size_t max_particles
Maximum allowed number of particles.
Definition: amcl.hpp:71
std::size_t resample_interval
Number of filter updates required before resampling.
Definition: amcl.hpp:58
double kld_epsilon
Maximum particle filter population error between the true distribution and the estimated distribution...
Definition: amcl.hpp:84
double kld_z
Upper standard normal quantile for , where is the probability that the error in the estimated distri...
Definition: amcl.hpp:88
double alpha_fast
Exponential decay rate for the fast average weight filter, used in deciding when to recover from a ba...
Definition: amcl.hpp:79
double update_min_a
Rotational movement required from last resample for resampling to happen again.
Definition: amcl.hpp:55
double alpha_slow
Exponential decay rate for the slow average weight filter, used in deciding when to recover from a ba...
Definition: amcl.hpp:75
double spatial_resolution_theta
Spatial resolution around the z-axis to create buckets for KLD resampling.
Definition: amcl.hpp:97
double spatial_resolution_x
Spatial resolution along the x-axis to create buckets for KLD resampling.
Definition: amcl.hpp:91
std::size_t min_particles
Minimum allowed number of particles.
Definition: amcl.hpp:68
double spatial_resolution_y
Spatial resolution along the y-axis to create buckets for KLD resampling.
Definition: amcl.hpp:94
bool selective_resampling
Whether to enable selective resampling to help avoid loss of diversity in the particle population....
Definition: amcl.hpp:65
double update_min_d
Translational movement required from last resample for resampling to happen again.
Definition: amcl.hpp:52
Generated by