Removes sensor packet period histogram. (#104)
parent
6e6d2decaa
commit
15f9244577
|
@ -26,38 +26,6 @@
|
||||||
namespace cartographer {
|
namespace cartographer {
|
||||||
namespace common {
|
namespace common {
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
string PaddedTo(string input, int new_length) {
|
|
||||||
CHECK_GE(new_length, input.size());
|
|
||||||
input.insert(input.begin(), new_length - input.size(), ' ');
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
void BucketHistogram::Hit(const string& bucket) { ++buckets_[bucket]; }
|
|
||||||
|
|
||||||
string BucketHistogram::ToString() const {
|
|
||||||
int64 sum = 0;
|
|
||||||
size_t max_bucket_name_length = 0;
|
|
||||||
for (const auto& pair : buckets_) {
|
|
||||||
sum += pair.second;
|
|
||||||
max_bucket_name_length =
|
|
||||||
std::max(pair.first.size(), max_bucket_name_length);
|
|
||||||
}
|
|
||||||
|
|
||||||
string result;
|
|
||||||
for (const auto& pair : buckets_) {
|
|
||||||
const float percent = 100.f * pair.second / std::max<int64>(1, sum);
|
|
||||||
result += PaddedTo(pair.first, max_bucket_name_length) + ": " +
|
|
||||||
PaddedTo(std::to_string(pair.second), 7) + " (" +
|
|
||||||
std::to_string(percent) + " %)\n";
|
|
||||||
}
|
|
||||||
result += "Total: " + std::to_string(sum);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Histogram::Add(const float value) { values_.push_back(value); }
|
void Histogram::Add(const float value) { values_.push_back(value); }
|
||||||
|
|
||||||
string Histogram::ToString(const int buckets) const {
|
string Histogram::ToString(const int buckets) const {
|
||||||
|
|
|
@ -26,15 +26,6 @@
|
||||||
namespace cartographer {
|
namespace cartographer {
|
||||||
namespace common {
|
namespace common {
|
||||||
|
|
||||||
class BucketHistogram {
|
|
||||||
public:
|
|
||||||
void Hit(const string& bucket);
|
|
||||||
string ToString() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::map<string, int64> buckets_;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Histogram {
|
class Histogram {
|
||||||
public:
|
public:
|
||||||
void Add(float value);
|
void Add(float value);
|
||||||
|
|
|
@ -24,7 +24,6 @@ google_library(sensor_collator
|
||||||
common_time
|
common_time
|
||||||
sensor_data
|
sensor_data
|
||||||
sensor_ordered_multi_queue
|
sensor_ordered_multi_queue
|
||||||
sensor_sensor_packet_period_histogram_builder
|
|
||||||
)
|
)
|
||||||
|
|
||||||
google_library(sensor_compressed_point_cloud
|
google_library(sensor_compressed_point_cloud
|
||||||
|
@ -103,17 +102,6 @@ google_library(sensor_point_cloud
|
||||||
transform_transform
|
transform_transform
|
||||||
)
|
)
|
||||||
|
|
||||||
google_library(sensor_sensor_packet_period_histogram_builder
|
|
||||||
USES_GLOG
|
|
||||||
SRCS
|
|
||||||
sensor_packet_period_histogram_builder.cc
|
|
||||||
HDRS
|
|
||||||
sensor_packet_period_histogram_builder.h
|
|
||||||
DEPENDS
|
|
||||||
common_histogram
|
|
||||||
common_port
|
|
||||||
)
|
|
||||||
|
|
||||||
google_library(sensor_voxel_filter
|
google_library(sensor_voxel_filter
|
||||||
SRCS
|
SRCS
|
||||||
voxel_filter.cc
|
voxel_filter.cc
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include "cartographer/common/time.h"
|
#include "cartographer/common/time.h"
|
||||||
#include "cartographer/sensor/data.h"
|
#include "cartographer/sensor/data.h"
|
||||||
#include "cartographer/sensor/ordered_multi_queue.h"
|
#include "cartographer/sensor/ordered_multi_queue.h"
|
||||||
#include "cartographer/sensor/sensor_packet_period_histogram_builder.h"
|
|
||||||
#include "glog/logging.h"
|
#include "glog/logging.h"
|
||||||
|
|
||||||
namespace cartographer {
|
namespace cartographer {
|
||||||
|
@ -71,8 +70,6 @@ class Collator {
|
||||||
// order.
|
// order.
|
||||||
void AddSensorData(const int trajectory_id, const string& sensor_id,
|
void AddSensorData(const int trajectory_id, const string& sensor_id,
|
||||||
std::unique_ptr<Data> data) {
|
std::unique_ptr<Data> data) {
|
||||||
sensor_packet_period_histogram_builder_.Add(
|
|
||||||
trajectory_id, common::ToUniversal(data->time), sensor_id);
|
|
||||||
queue_.Add(QueueKey{trajectory_id, sensor_id}, std::move(data));
|
queue_.Add(QueueKey{trajectory_id, sensor_id}, std::move(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +77,6 @@ class Collator {
|
||||||
// AddSensorData may not be called after Flush.
|
// AddSensorData may not be called after Flush.
|
||||||
void Flush() {
|
void Flush() {
|
||||||
queue_.Flush();
|
queue_.Flush();
|
||||||
sensor_packet_period_histogram_builder_.LogHistogramsAndClear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of packets associated with 'trajectory_id' that are
|
// Returns the number of packets associated with 'trajectory_id' that are
|
||||||
|
@ -99,7 +95,6 @@ class Collator {
|
||||||
|
|
||||||
// Map of trajectory ID to all associated QueueKeys.
|
// Map of trajectory ID to all associated QueueKeys.
|
||||||
std::unordered_map<int, std::vector<QueueKey>> queue_keys_;
|
std::unordered_map<int, std::vector<QueueKey>> queue_keys_;
|
||||||
SensorPacketPeriodHistogramBuilder sensor_packet_period_histogram_builder_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace sensor
|
} // namespace sensor
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
/*
|
|
||||||
* 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/sensor/sensor_packet_period_histogram_builder.h"
|
|
||||||
|
|
||||||
#include "glog/logging.h"
|
|
||||||
|
|
||||||
namespace cartographer {
|
|
||||||
namespace sensor {
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
string ToBucket(int ticks) {
|
|
||||||
if (ticks < 1 * 10000) {
|
|
||||||
return "< 1ms";
|
|
||||||
} else if (ticks < 3 * 10000) {
|
|
||||||
return "< 3ms";
|
|
||||||
} else if (ticks < 5 * 10000) {
|
|
||||||
return "< 5ms";
|
|
||||||
} else if (ticks < 7 * 10000) {
|
|
||||||
return "< 7ms";
|
|
||||||
} else if (ticks < 10 * 10000) {
|
|
||||||
return "< 10ms";
|
|
||||||
} else if (ticks < 30 * 10000) {
|
|
||||||
return "< 30ms";
|
|
||||||
} else if (ticks < 100 * 10000) {
|
|
||||||
return "< 100ms";
|
|
||||||
} else if (ticks < 500 * 10000) {
|
|
||||||
return "< 500ms";
|
|
||||||
}
|
|
||||||
return "> 500ms";
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
void SensorPacketPeriodHistogramBuilder::Add(const int trajectory_id,
|
|
||||||
const int64 timestamp,
|
|
||||||
const string& frame_id) {
|
|
||||||
if (histograms_.count(trajectory_id) == 0) {
|
|
||||||
histograms_.emplace(trajectory_id,
|
|
||||||
std::unordered_map<string, common::BucketHistogram>());
|
|
||||||
}
|
|
||||||
if (histograms_.at(trajectory_id).count(frame_id) == 0) {
|
|
||||||
histograms_.at(trajectory_id).emplace(frame_id, common::BucketHistogram());
|
|
||||||
}
|
|
||||||
const Key key = std::make_pair(trajectory_id, frame_id);
|
|
||||||
if (last_timestamps_.count(key) != 0) {
|
|
||||||
const int64 previous_timestamp = last_timestamps_.at(key);
|
|
||||||
histograms_.at(trajectory_id)
|
|
||||||
.at(frame_id)
|
|
||||||
.Hit(ToBucket(timestamp - previous_timestamp));
|
|
||||||
}
|
|
||||||
last_timestamps_[key] = timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SensorPacketPeriodHistogramBuilder::LogHistogramsAndClear() {
|
|
||||||
for (const auto& trajectory_map_entry : histograms_) {
|
|
||||||
LOG(INFO) << "Printing histograms for trajectory with id "
|
|
||||||
<< trajectory_map_entry.first;
|
|
||||||
for (const auto& frame_id_to_histogram_map : trajectory_map_entry.second) {
|
|
||||||
LOG(INFO) << "Sensor packet period histogram for '"
|
|
||||||
<< frame_id_to_histogram_map.first << "' from trajectory '"
|
|
||||||
<< trajectory_map_entry.first << "':\n"
|
|
||||||
<< frame_id_to_histogram_map.second.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
histograms_.clear();
|
|
||||||
last_timestamps_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace sensor
|
|
||||||
} // namespace cartographer
|
|
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CARTOGRAPHER_SENSOR_SENSOR_PACKET_PERIOD_HISTOGRAM_BUILDER_H_
|
|
||||||
#define CARTOGRAPHER_SENSOR_SENSOR_PACKET_PERIOD_HISTOGRAM_BUILDER_H_
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
#include <unordered_map>
|
|
||||||
|
|
||||||
#include "cartographer/common/histogram.h"
|
|
||||||
#include "cartographer/common/port.h"
|
|
||||||
|
|
||||||
namespace cartographer {
|
|
||||||
namespace sensor {
|
|
||||||
|
|
||||||
class SensorPacketPeriodHistogramBuilder {
|
|
||||||
public:
|
|
||||||
void Add(int trajectory_id, int64 timestamp, const string& frame_id);
|
|
||||||
void LogHistogramsAndClear();
|
|
||||||
|
|
||||||
private:
|
|
||||||
using Key = std::pair<int, string>;
|
|
||||||
|
|
||||||
std::map<Key, int64> last_timestamps_;
|
|
||||||
std::unordered_map<int, std::unordered_map<string, common::BucketHistogram>>
|
|
||||||
histograms_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace sensor
|
|
||||||
} // namespace cartographer
|
|
||||||
|
|
||||||
#endif // CARTOGRAPHER_SENSOR_SENSOR_PACKET_PERIOD_HISTOGRAM_BUILDER_H_
|
|
Loading…
Reference in New Issue