Skip to content

Commit f5de61c

Browse files
author
Ryohei Sasaki
authored
Enable LidarMeasurement and tune parameter
1 parent 4c15d49 commit f5de61c

File tree

4 files changed

+7
-5
lines changed

4 files changed

+7
-5
lines changed

include/amcl_3d/type.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include <vector>
23
#define EIGEN_MPL2_ONLY
34
#include <Eigen/Core>
45
#include <Eigen/Geometry>

launch/amcl_3d_rosbag.launch

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<arg name="amcl_param/augmented_mcl/noise_pitch_var" default="1.0" />
1515
<arg name="amcl_param/augmented_mcl/noise_yaw_var" default="1.0" />
1616
<arg name="amcl_param/init_pose/initial_particle_num" default="100" />
17-
<arg name="amcl_param/resample_timing/ess_ratio_threshold" default="0.95" />
17+
<arg name="amcl_param/resample_timing/ess_ratio_threshold" default="1.0" />
1818
<arg name="amcl_param/kld_sampling/min_particle_num" default="100" />
1919
<arg name="amcl_param/kld_sampling/max_particle_num" default="2000" />
2020
<arg name="amcl_param/kld_sampling/delta" default="0.5" />

src/mcl.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,16 @@ bool Amcl::getParticles(std::shared_ptr<const Particles> &particles_ptr)
3636

3737
bool Amcl::measureLidar(const Time &time, const pcl::PointCloud<pcl::PointXYZ>::Ptr measuement)
3838
{
39-
#if 0
39+
#if 1
4040
if (kd_map_ptr_ == nullptr || measuement == nullptr)
4141
return false;
4242
MeasurementState measurement_state;
4343
const size_t random_sample_num = 100;
44-
const double max_dist = 1.0;
44+
const double max_dist = 0.2;
4545
const double sigma = 1.0;
4646
std::shared_ptr<MeasurementModelInterface> model =
4747
std::make_shared<LidarMeasurementModel>(kd_map_ptr_, measuement, random_sample_num, max_dist, sigma);
48-
pf_ptr_->measure(model, time, measurement_state);
48+
pf_ptr_->measure(model, measurement_state);
4949

5050
checkResample(measurement_state);
5151
#endif

src/measurement_model/lidar_measurement_model.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ bool LidarMeasurementModel::measure(std::shared_ptr<const Particles> mesurement_
2626
v_log_likelihood.reserve(particles_ptr->size());
2727
const double max_squared_dist = max_dist_ * max_dist_; // [m^2]
2828
const double denominator = 2 * sigma_ * sigma_;
29+
const double distance_penelty = 0.2;
2930
for (const auto &state : *mesurement_point_particles_ptr)
3031
{
3132
/*
@@ -63,7 +64,7 @@ bool LidarMeasurementModel::measure(std::shared_ptr<const Particles> mesurement_
6364
squared_dist = max_squared_dist;
6465
}
6566
// first step : log likelihood += -(x-mu)^2
66-
log_likelihood += -1.0 * squared_dist;
67+
log_likelihood += -1.0 * squared_dist * distance_penelty;
6768
}
6869
// second step : log likelihood *= 1.0/(2*sigma^2)
6970
log_likelihood /= denominator; // denominator = (2*sigma^2)

0 commit comments

Comments
 (0)