Prepare 3D precomputation grid for full submap matches. (#144)
Removes an optimization to improve the bounds computed via the precomputation grid in 3D that takes the limited search window into account. This is to allow reusing the same precomputation grids for full submap matches.master
parent
17a3393694
commit
88e4ea2866
|
@ -58,8 +58,7 @@ class PrecomputationGridStack {
|
||||||
public:
|
public:
|
||||||
PrecomputationGridStack(
|
PrecomputationGridStack(
|
||||||
const HybridGrid& hybrid_grid,
|
const HybridGrid& hybrid_grid,
|
||||||
const proto::FastCorrelativeScanMatcherOptions& options,
|
const proto::FastCorrelativeScanMatcherOptions& options) {
|
||||||
const Eigen::Array3i& max_widths) {
|
|
||||||
CHECK_GE(options.branch_and_bound_depth(), 1);
|
CHECK_GE(options.branch_and_bound_depth(), 1);
|
||||||
CHECK_GE(options.full_resolution_depth(), 1);
|
CHECK_GE(options.full_resolution_depth(), 1);
|
||||||
precomputation_grids_.reserve(options.branch_and_bound_depth());
|
precomputation_grids_.reserve(options.branch_and_bound_depth());
|
||||||
|
@ -67,8 +66,7 @@ class PrecomputationGridStack {
|
||||||
Eigen::Array3i last_width = Eigen::Array3i::Ones();
|
Eigen::Array3i last_width = Eigen::Array3i::Ones();
|
||||||
for (int depth = 1; depth != options.branch_and_bound_depth(); ++depth) {
|
for (int depth = 1; depth != options.branch_and_bound_depth(); ++depth) {
|
||||||
const bool half_resolution = depth >= options.full_resolution_depth();
|
const bool half_resolution = depth >= options.full_resolution_depth();
|
||||||
const Eigen::Array3i next_width =
|
const Eigen::Array3i next_width = ((1 << depth) * Eigen::Array3i::Ones());
|
||||||
((1 << depth) * Eigen::Array3i::Ones()).cwiseMin(max_widths);
|
|
||||||
const int full_voxels_per_high_resolution_voxel =
|
const int full_voxels_per_high_resolution_voxel =
|
||||||
1 << std::max(0, depth - options.full_resolution_depth());
|
1 << std::max(0, depth - options.full_resolution_depth());
|
||||||
const Eigen::Array3i shift =
|
const Eigen::Array3i shift =
|
||||||
|
@ -101,10 +99,8 @@ FastCorrelativeScanMatcher::FastCorrelativeScanMatcher(
|
||||||
common::RoundToInt(options_.linear_xy_search_window() / resolution_)),
|
common::RoundToInt(options_.linear_xy_search_window() / resolution_)),
|
||||||
linear_z_window_size_(
|
linear_z_window_size_(
|
||||||
common::RoundToInt(options_.linear_z_search_window() / resolution_)),
|
common::RoundToInt(options_.linear_z_search_window() / resolution_)),
|
||||||
precomputation_grid_stack_(common::make_unique<PrecomputationGridStack>(
|
precomputation_grid_stack_(
|
||||||
hybrid_grid, options, Eigen::Array3i(1 + 2 * linear_xy_window_size_,
|
common::make_unique<PrecomputationGridStack>(hybrid_grid, options)),
|
||||||
1 + 2 * linear_xy_window_size_,
|
|
||||||
1 + 2 * linear_z_window_size_))),
|
|
||||||
rotational_scan_matcher_(nodes, options_.rotational_histogram_size()) {}
|
rotational_scan_matcher_(nodes, options_.rotational_histogram_size()) {}
|
||||||
|
|
||||||
FastCorrelativeScanMatcher::~FastCorrelativeScanMatcher() {}
|
FastCorrelativeScanMatcher::~FastCorrelativeScanMatcher() {}
|
||||||
|
|
Loading…
Reference in New Issue