过程:
1. SensorBridge::HandleLaserScanMessage(..., sensor_msgs::LaserScan::ConstPtr& msg);
2. ToPointCloudWithIntensities();
将激光数据由极坐标转换到带有相对时间戳属性的4维点, 第一个点时间戳为0, 之后的按照 i*time_increment赋值.
timestamp指向最后测量点的绝对时间.(加上了消息头的时间戳)
将所有点的时间戳调整到以最后一点为基准.(最后一点的为0, 前面点一次减去 i*time_increment)
return(所有点, timestamp);
3. HandleLaserScan();
subdivision:
将数据依据先后顺序划分成若干段.
将各段点集的相对时间戳调整到以段内最后一点为基准.
将subdivision_time指向段内最后一个点的绝对时间戳.
4. HandleRangefinder();
以段内最后一点的绝对时间戳为准, 查找tf.
AddSensorData();
重点:
时间戳属性的转换有点绕, 目标只有一个, 始终记录最后一点的绝对时间, 给到tf, 得到一个更加准确的预估计;
分段处理的目: 尽量减小运动对测量匹配的影响, 尤其是对于速度/频率比很高的, 当然, 运动速度很快的就需要高频率的雷达.