概述
对publishable_trajectory.cc和.h进行解析,以及通过publishable_trajectory_test.cc测试用例来了解PublishableTrajectory类的使用。
PublishableTrajectory类继承DiscretizedTrajectory类,从名字看是发布轨迹类?
DiscretizedTrajectory类代码解析
path = 仅路径
trajectory = path + velocity profile
PublishableTrajectory类的作用:其实就是在DiscretizedTrajectory类的基础上额外打了个时间戳,同时继承了DiscretizedTrajectory离散轨迹类的轨迹点增删改插值等操作。
publishable_trajectory.h
#pragma once
#include "modules/planning/common/trajectory/discretized_trajectory.h"
#include "modules/planning/proto/planning.pb.h"
namespace apollo {
namespace planning {
//发布轨迹类PublishableTrajectory继承离散轨迹类DiscretizedTrajectory
//DiscretizedTrajectory类详见我的另一篇博客,见概述超链接
class PublishableTrajectory : public DiscretizedTrajectory {
public:
//默认构造函数
PublishableTrajectory() = default;
//带参构造函数
//参数header_time,发布轨迹的时间戳
//参数DiscretizedTrajectory,离散轨迹类对象
PublishableTrajectory(const double header_time,
const DiscretizedTrajectory& discretized_trajectory);
/**
* 用modules\common\proto\pnc_point.proto定义的message ADCTrajectory类对象
* 初始化PublishableTrajectory类对象
* google protobuf.proto定义的message可以生成c++ class
*/
explicit PublishableTrajectory(const ADCTrajectory& trajectory_pb);
//返回PublishableTrajectory发布轨迹的时间戳
double header_time() const;
//将PublishableTrajectory类对象中存放的信息
//反过来传播到proto定义的message ADCTrajectory类对象中
//将PublishableTrajectory类对象的时间戳,轨迹点,总的时间长度,总的距离长度
//传播给 ADCTrajectory类对象
void PopulateTrajectoryProtobuf(ADCTrajectory* trajectory_pb) const;
private:
//私有数据成员,就是一个发布轨迹类对象的时间戳
double header_time_ = 0.0;
};
} // namespace planning
} // namespace apollo
.h文件已经把PublishableTrajectory类的作用介绍的很清楚了,该类的实现文件publishable_trajectory.cc和测试文件publishable_trajectory_test.cc不再解析。