Fix sequential subdivisions (#806)
FIXES=https://github.com/googlecartographer/cartographer/issues/1026master
parent
12816aacd3
commit
b3e3dfd7d4
|
@ -201,6 +201,16 @@ void SensorBridge::HandleLaserScan(
|
|||
// send all other sensor data first.
|
||||
const carto::common::Time subdivision_time =
|
||||
time + carto::common::FromSeconds(time_to_subdivision_end);
|
||||
auto it = sensor_to_previous_subdivision_time_.find(sensor_id);
|
||||
if (it != sensor_to_previous_subdivision_time_.end() &&
|
||||
it->second >= subdivision_time) {
|
||||
LOG(WARNING) << "Ignored subdivision of a LaserScan message from sensor "
|
||||
<< sensor_id << " because previous subdivision time "
|
||||
<< it->second << " is not before current subdivision time "
|
||||
<< subdivision_time;
|
||||
continue;
|
||||
}
|
||||
sensor_to_previous_subdivision_time_[sensor_id] = subdivision_time;
|
||||
for (Eigen::Vector4f& point : subdivision) {
|
||||
point[3] -= time_to_subdivision_end;
|
||||
}
|
||||
|
|
|
@ -85,6 +85,8 @@ class SensorBridge {
|
|||
const ::cartographer::sensor::TimedPointCloud& ranges);
|
||||
|
||||
const int num_subdivisions_per_laser_scan_;
|
||||
std::map<std::string, cartographer::common::Time>
|
||||
sensor_to_previous_subdivision_time_;
|
||||
const TfBridge tf_bridge_;
|
||||
::cartographer::mapping::TrajectoryBuilderInterface* const
|
||||
trajectory_builder_;
|
||||
|
|
Loading…
Reference in New Issue