Closed nhatao closed 3 years ago
Tested on Alpine ROS
Tested on Alpine ROS
Merging #343 into master will decrease coverage by
1.72%
. The diff coverage is85.27%
.
@@ Coverage Diff @@
## master #343 +/- ##
==========================================
- Coverage 94.07% 92.35% -1.73%
==========================================
Files 34 36 +2
Lines 1806 2276 +470
==========================================
+ Hits 1699 2102 +403
- Misses 107 174 +67
Impacted Files | Coverage Δ | |
---|---|---|
src/lidar_measurement_model_beam.cpp | 86.50% <73.07%> (-11.98%) |
:arrow_down: |
src/mcl_3dl.cpp | 89.15% <81.11%> (-1.17%) |
:arrow_down: |
include/mcl_3dl/raycasts/raycast_using_kdtree.h | 87.50% <87.50%> (ø) |
|
include/mcl_3dl/raycasts/raycast_using_dda.h | 96.20% <96.20%> (ø) |
|
..._measurement_models/lidar_measurement_model_beam.h | 100.00% <100.00%> (ø) |
|
..._random_samplers/point_cloud_sampler_with_normal.h | 90.47% <100.00%> (ø) |
|
include/mcl_3dl/raycast.h | 100.00% <100.00%> (ø) |
|
... and 2 more |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 535fea8...189b1fc. Read the comment docs.
@at-wat PTAL.
Tested on Alpine ROS
Tested on Alpine ROS
This PR adds a faster raycast algorithm using DDA(Digital Differential Analyzer). DDA is a line drawing algorithm, and can enumerate all voxels that a line passes through. The details of the DDA are described in this paper. The name of variables are based on this paper.
The result of performance_raycast on my laptop is shown below. The new algorithm is much faster than the current algorithm unless map is updated frequently.
In addition, I modified the likelihood calculation algorithm of LidarMeasurementModelBeam. It gives a penalty both when a range scan distance is shorter or longer than expected. By default, the previous likelihood calculation algorithm (gives a penalty only when a range scan distance is shorter than expected) is used. (
add_penalty_short_only_mode : true
)