diff --git a/cartographer/sensor/collator.h b/cartographer/sensor/collator.h index 967ba84..d673168 100644 --- a/cartographer/sensor/collator.h +++ b/cartographer/sensor/collator.h @@ -28,6 +28,7 @@ #include "cartographer/common/make_unique.h" #include "cartographer/common/ordered_multi_queue.h" #include "cartographer/common/time.h" +#include "cartographer/sensor/data.h" #include "cartographer/sensor/sensor_packet_period_histogram_builder.h" #include "glog/logging.h" @@ -49,10 +50,9 @@ inline std::ostream& operator<<(std::ostream& out, return out << '(' << key.trajectory_id << ", " << key.sensor_id << ')'; } -template class Collator { public: - using Callback = std::function)>; + using Callback = std::function)>; Collator() {} @@ -85,7 +85,7 @@ class Collator { // added in time order. void AddSensorData(const int trajectory_id, const int64 timestamp, const string& sensor_id, - std::unique_ptr sensor_data) { + std::unique_ptr sensor_data) { sensor_packet_period_histogram_builder_.Add(trajectory_id, timestamp, sensor_id); queue_.Add( @@ -113,7 +113,7 @@ class Collator { private: struct Value { int64 timestamp; - std::unique_ptr sensor_data; + std::unique_ptr sensor_data; }; // Queue keys are a pair of trajectory ID and sensor identifier. diff --git a/cartographer/sensor/collator_test.cc b/cartographer/sensor/collator_test.cc index 3a44c8b..4d020a1 100644 --- a/cartographer/sensor/collator_test.cc +++ b/cartographer/sensor/collator_test.cc @@ -28,40 +28,36 @@ namespace cartographer { namespace sensor { namespace { -struct TestData { - string frame_id; -}; - TEST(Collator, Ordering) { - TestData first{"horizontal_laser"}; - TestData second{"vertical_laser"}; - TestData third{"imu"}; - TestData fourth{"horizontal_laser"}; - TestData fifth{"vertical_laser"}; - TestData sixth{"something"}; + Data first("horizontal_laser", sensor::LaserFan{}); + Data second("vertical_laser", sensor::LaserFan{}); + Data third("imu", Data::Imu{}); + Data fourth("horizontal_laser", sensor::LaserFan{}); + Data fifth("vertical_laser", sensor::LaserFan{}); + Data sixth("odometry", Data::Odometry{}); const std::unordered_set frame_ids = { - "horizontal_laser", "vertical_laser", "imu", "something"}; - std::vector> received; - Collator collator; + "horizontal_laser", "vertical_laser", "imu", "odometry"}; + std::vector> received; + Collator collator; collator.AddTrajectory( 0, frame_ids, - [&received](const int64 timestamp, std::unique_ptr packet) { + [&received](const int64 timestamp, std::unique_ptr packet) { received.push_back(std::make_pair(timestamp, *packet)); }); collator.AddSensorData(0, 100, first.frame_id, - common::make_unique(first)); + common::make_unique(first)); collator.AddSensorData(0, 600, sixth.frame_id, - common::make_unique(sixth)); + common::make_unique(sixth)); collator.AddSensorData(0, 400, fourth.frame_id, - common::make_unique(fourth)); + common::make_unique(fourth)); collator.AddSensorData(0, 200, second.frame_id, - common::make_unique(second)); + common::make_unique(second)); collator.AddSensorData(0, 500, fifth.frame_id, - common::make_unique(fifth)); + common::make_unique(fifth)); collator.AddSensorData(0, 300, third.frame_id, - common::make_unique(third)); + common::make_unique(third)); EXPECT_EQ(3, received.size()); EXPECT_EQ(100, received[0].first); @@ -78,7 +74,7 @@ TEST(Collator, Ordering) { EXPECT_EQ(500, received[4].first); EXPECT_EQ("vertical_laser", received[4].second.frame_id); EXPECT_EQ(600, received[5].first); - EXPECT_EQ("something", received[5].second.frame_id); + EXPECT_EQ("odometry", received[5].second.frame_id); } } // namespace