Skip to content

Commit

Permalink
Adds a PureLocalizationTrimmer.
Browse files Browse the repository at this point in the history
  • Loading branch information
wohe committed Jun 6, 2017
1 parent c90b887 commit f48ca47
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
41 changes: 41 additions & 0 deletions cartographer/mapping/pose_graph_trimmer.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright 2016 The Cartographer Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "cartographer/mapping/pose_graph_trimmer.h"

#include "glog/logging.h"

namespace cartographer {
namespace mapping {

PureLocalizationTrimmer::PureLocalizationTrimmer(int trajectory_id,
int num_submaps_to_keep)
: trajectory_id_(trajectory_id), num_submaps_to_keep_(num_submaps_to_keep) {
CHECK_GT(num_submaps_to_keep, 0);
}

void PureLocalizationTrimmer::Trim(TrimmingInterface* trimming) {
const int total_num_submaps = trimming->num_submaps(trajectory_id_);
while (total_num_submaps > num_submaps_trimmed_ + num_submaps_to_keep_) {
const int submap_index_to_trim_next = num_submaps_trimmed_;
trimming->MarkSubmapAsTrimmed(
SubmapId{trajectory_id_, submap_index_to_trim_next});
++num_submaps_trimmed_;
}
}

} // namespace mapping
} // namespace cartographer
15 changes: 15 additions & 0 deletions cartographer/mapping/pose_graph_trimmer.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,21 @@ class PoseGraphTrimmer {
virtual void Trim(TrimmingInterface* trimming) = 0;
};

// Keeps the last 'num_submaps_to_keep' of the trajectory with 'trajectory_id'
// to implement localization without mapping.
class PureLocalizationTrimmer : public PoseGraphTrimmer {
public:
PureLocalizationTrimmer(int trajectory_id, int num_submaps_to_keep);
~PureLocalizationTrimmer() override {}

void Trim(TrimmingInterface* trimming) override;

private:
const int trajectory_id_;
const int num_submaps_to_keep_;
int num_submaps_trimmed_ = 0;
};

} // namespace mapping
} // namespace cartographer

Expand Down

0 comments on commit f48ca47

Please sign in to comment.