源码可在https://github.com/learnmoreonce/SLAM 下载
文件:transform/transform_interpolation_buffer.h:
#ifndef CARTOGRAPHER_TRANSFORM_TRANSFORM_INTERPOLATION_BUFFER_H_
#define CARTOGRAPHER_TRANSFORM_TRANSFORM_INTERPOLATION_BUFFER_H_
#include <deque>
#include <memory>
#include "cartographer/common/time.h"
#include "cartographer/mapping/proto/trajectory.pb.h"
#include "cartographer/transform/rigid_transform.h"
namespace cartographer {
namespace transform {
/*
基于时间有序的变换,支持在队列中按时间顺序查找,即使变换不存在于队列中,任然支持相邻时间内的插值变换进行近似。
作用与ROS的tf2函数族类似。
数据成员:
1,deque_;
成员函数:
1,Push()
2,Has()
3,Lookup()
4,earliest_time()
5,latest_time()
6,empty()
*/
// A time-ordered buffer of transforms that supports interpolated lookups.
class TransformInterpolationBuffer {
public:
//函数,返回智能指针
static std::unique_ptr<TransformInterpolationBuffer> FromTrajectory(
const mapping::proto::Trajectory& trajectory);
/*
添加变换到队列尾部,当缓冲区已满时,删除队首元素
*/
// Adds a new transform to the buffer and removes the oldest transform if the
// buffer size limit is exceeded.
void Push(common::Time time, const transform::Rigid3d& transform);