yabLoc_particle_filter
This package contains some executable nodes related to particle filter.
particle_predictor
Purpose
- This node performs predictive updating and resampling of particles.
 
- It retroactively reflects the particle weights determined by the corrector node.
 
| Name | 
Type | 
Description | 
input/initialpose | 
geometry_msgs::msg::PoseWithCovarianceStamped | 
to specify the initial position of particles | 
input/twist_with_covariance | 
geometry_msgs::msg::TwistWithCovarianceStamped | 
linear velocity and angular velocity of prediction update | 
input/height | 
std_msgs::msg::Float32 | 
ground height | 
input/weighted_particles | 
yabloc_particle_filter::msg::ParticleArray | 
particles weighted by corrector nodes | 
Output
| Name | 
Type | 
Description | 
output/pose_with_covariance | 
geometry_msgs::msg::PoseWithCovarianceStamped | 
particle centroid with covariance | 
output/pose | 
geometry_msgs::msg::PoseStamped | 
particle centroid with covariance | 
output/predicted_particles | 
yabloc_particle_filter::msg::ParticleArray | 
particles weighted by predictor nodes | 
debug/init_marker | 
visualization_msgs::msg::Marker | 
debug visualization of initial position | 
debug/particles_marker_array | 
visualization_msgs::msg::MarkerArray | 
particles visualization. published if visualize is true | 
Parameters
| Name | 
Type | 
Description | 
Default | 
Range | 
| visualize | 
boolean | 
whether particles are also published in visualization_msgs or not | 
True | 
N/A | 
| static_linear_covariance | 
float | 
overriding covariance of /twist_with_covariance | 
0.04 | 
N/A | 
| static_angular_covariance | 
float | 
overriding covariance of /twist_with_covariance | 
0.006 | 
N/A | 
| resampling_interval_seconds | 
float | 
the interval of particle resampling | 
1.0 | 
N/A | 
| num_of_particles | 
float | 
the number of particles | 
500 | 
N/A | 
| prediction_rate | 
float | 
frequency of forecast updates, in Hz | 
50.0 | 
N/A | 
| cov_xx_yy | 
array | 
the covariance of initial pose | 
[2.0, 0.25] | 
N/A | 
Services
| Name | 
Type | 
Description | 
yabloc_trigger_srv | 
std_srvs::srv::SetBool | 
activation and deactivation of yabloc estimation | 
gnss_particle_corrector
Purpose
- This node estimated particles weight using GNSS.
 
- It supports two types of input: 
ublox_msgs::msg::NavPVT and geometry_msgs::msg::PoseWithCovarianceStamped. 
| Name | 
Type | 
Description | 
input/height | 
std_msgs::msg::Float32 | 
ground height | 
input/predicted_particles | 
yabloc_particle_filter::msg::ParticleArray | 
predicted particles | 
input/pose_with_covariance | 
geometry_msgs::msg::PoseWithCovarianceStamped | 
gnss measurement. used if use_ublox_msg is false | 
input/navpvt | 
ublox_msgs::msg::NavPVT | 
gnss measurement. used if use_ublox_msg is true | 
Output
| Name | 
Type | 
Description | 
output/weighted_particles | 
yabloc_particle_filter::msg::ParticleArray | 
weighted particles | 
debug/gnss_range_marker | 
visualization_msgs::msg::MarkerArray | 
gnss weight distribution | 
debug/particles_marker_array | 
visualization_msgs::msg::MarkerArray | 
particles visualization. published if visualize is true | 
Parameters
| Name | 
Type | 
Description | 
Default | 
Range | 
| acceptable_max_delay | 
float | 
how long to hold the predicted particles | 
1 | 
N/A | 
| visualize | 
boolean | 
whether publish particles as marker_array or not | 
0 | 
N/A | 
| mahalanobis_distance_threshold | 
float | 
if the Mahalanobis distance to the GNSS for particle exceeds this, the correction skips. | 
30 | 
N/A | 
| for_fixed/max_weight | 
float | 
gnss weight distribution used when observation is fixed | 
5 | 
N/A | 
| for_fixed/flat_radius | 
float | 
gnss weight distribution used when observation is fixed | 
0.5 | 
N/A | 
| for_fixed/max_radius | 
float | 
gnss weight distribution used when observation is fixed | 
10 | 
N/A | 
| for_fixed/min_weight | 
float | 
gnss weight distribution used when observation is fixed | 
0.5 | 
N/A | 
| for_not_fixed/max_weight | 
float | 
gnss weight distribution used when observation is not fixed | 
1 | 
N/A | 
| for_not_fixed/flat_radius | 
float | 
gnss weight distribution used when observation is not fixed | 
5 | 
N/A | 
| for_not_fixed/max_radius | 
float | 
gnss weight distribution used when observation is not fixed | 
20 | 
N/A | 
| for_not_fixed/min_weight | 
float | 
gnss weight distribution used when observation is not fixed | 
0.5 | 
N/A | 
camera_particle_corrector
Purpose
- This node estimated particles weight using GNSS.
 
| Name | 
Type | 
Description | 
input/predicted_particles | 
yabloc_particle_filter::msg::ParticleArray | 
predicted particles | 
input/ll2_bounding_box | 
sensor_msgs::msg::PointCloud2 | 
road surface markings converted to line segments | 
input/ll2_road_marking | 
sensor_msgs::msg::PointCloud2 | 
road surface markings converted to line segments | 
input/projected_line_segments_cloud | 
sensor_msgs::msg::PointCloud2 | 
projected line segments | 
input/pose | 
geometry_msgs::msg::PoseStamped | 
reference to retrieve the area map around the self location | 
Output
| Name | 
Type | 
Description | 
output/weighted_particles | 
yabloc_particle_filter::msg::ParticleArray | 
weighted particles | 
debug/cost_map_image | 
sensor_msgs::msg::Image | 
cost map created from lanelet2 | 
debug/cost_map_range | 
visualization_msgs::msg::MarkerArray | 
cost map boundary | 
debug/match_image | 
sensor_msgs::msg::Image | 
projected line segments image | 
debug/scored_cloud | 
sensor_msgs::msg::PointCloud2 | 
weighted 3d line segments | 
debug/scored_post_cloud | 
sensor_msgs::msg::PointCloud2 | 
weighted 3d line segments which are iffy | 
debug/state_string | 
std_msgs::msg::String | 
string describing the node state | 
debug/particles_marker_array | 
visualization_msgs::msg::MarkerArray | 
particles visualization. published if visualize is true | 
Parameters
| Name | 
Type | 
Description | 
Default | 
Range | 
| acceptable_max_delay | 
float | 
how long to hold the predicted particles | 
1 | 
N/A | 
| visualize | 
boolean | 
whether publish particles as marker_array or not | 
0 | 
N/A | 
| image_size | 
float | 
image size of debug/cost_map_image | 
800 | 
N/A | 
| max_range | 
float | 
width of hierarchical cost map | 
40 | 
N/A | 
| gamma | 
float | 
gamma value of the intensity gradient of the cost map | 
5 | 
N/A | 
| min_prob | 
float | 
minimum particle weight the corrector node gives | 
0.1 | 
N/A | 
| far_weight_gain | 
float | 
exp(-far_weight_gain_ * squared_distance_from_camera) is weight gain. if this is large, the nearby road markings will be more important | 
0.001 | 
N/A | 
| enabled_at_first | 
boolean | 
if it is false, this node is not activated at first. you can activate by service call | 
1 | 
N/A | 
Services
| Name | 
Type | 
Description | 
switch_srv | 
std_srvs::srv::SetBool | 
activation and deactivation of correction |