对discretized_trajectory.cc和.h进行解析,以及通过discretized_trajectory_test.cc测试用例来了解DiscretizedTrajectory类的使用。
TrajectoryPoint类,该类由.proto文件生成
proto文件位于modules\common\proto\pnc_point.proto
proto文件中的message TrajectoryPoint
每个TrajectoryPoint,包含x,y,heading,v,a,s,t,da,steer等信息
DiscretizedTrajectory类就是存放一系列TrajectoryPoint轨迹点的一个数据结构类,以及一些相关增删改以及根据时间插值,根据纵向位置s插值等 *** 作
#pragma once
#include
#include "cyber/common/log.h"
#include "modules/common/math/vec2d.h"
#include "modules/planning/proto/planning.pb.h"
namespace apollo {
namespace planning {
//声明DiscretizedTrajectory离散路径类,DiscretizedTrajectory类
//继承TrajectoryPoint类,该类由.proto文件生成
//proto文件位于modules\common\proto\pnc_point.proto
//proto文件中的message TrajectoryPoint
//每个TrajectoryPoint,包含x,y,heading,v,a,s,t,da,steer等信息
//DiscretizedTrajectory类显然看来就是存放一系列轨迹点的一个数据
//结构类,以及一些相关的 *** 作
class DiscretizedTrajectory : public std::vector<common::TrajectoryPoint> {
public:
//默认构造函数
DiscretizedTrajectory() = default;
/**
* 通过proto的message trajectory类创建一个离散轨迹
* DiscretizedTrajectory
* proto文件位于modules\common\proto\pnc_point.proto
*/
//带参构造函数
//就是DiscretizedTrajectory类可以通过proto生成的
//ADCTrajectory类对象初始化
explicit DiscretizedTrajectory(const ADCTrajectory& trajectory);
//带参构造函数
//DiscretizedTrajectory类也可以直接用TrajectoryPoint的
//vector进行初始化
explicit DiscretizedTrajectory(
const std::vector<common::TrajectoryPoint>& trajectory_points);
//设置DiscretizedTrajectory离散路径类轨迹点
//用轨迹点的vector去设置离散路径类DiscretizedTrajectory对象
void SetTrajectoryPoints(
const std::vector<common::TrajectoryPoint>& trajectory_points);
//虚函数,默认析构函数
virtual ~DiscretizedTrajectory() = default;
//虚函数,返回离散轨迹的起始点
virtual common::TrajectoryPoint StartPoint() const;
//虚函数,返回离散轨迹的时间长度
virtual double GetTemporalLength() const;
//虚函数,返回离散轨迹的距离总长,即s的总长
virtual double GetSpatialLength() const;
//虚函数,根据其他代码解析经验Evaluate通常代表插值的意思,参数
//是相对时间,推测作用应该是用相对时间去离散轨迹上插值出一个
//轨迹点TrajectoryPoint,返回这个插值点
virtual common::TrajectoryPoint Evaluate(const double relative_time) const;
//用一个给定的相对时间relative_time,去离散轨迹类对象上查找时间刚好小于
//relative_time的轨迹点,返回它的下标
virtual size_t QueryLowerBoundPoint(const double relative_time,
const double epsilon = 1.0e-5) const;
//虚函数,输入参数是(x,y)大地坐标,然后去去离散轨迹类对象上查找距离最近点
//返回最近点的下标
virtual size_t QueryNearestPoint(const common::math::Vec2d& position) const;
//作用几乎同上,不同的是在找最近点比较时,若轨迹上某点到自车的距离小于(上次比较最近
//点距离+缓冲距离)的话,该店认为是更近的点,就是找最近点时还考虑了一个缓冲距离。
size_t QueryNearestPointWithBuffer(const common::math::Vec2d& position,
const double buffer) const;
//在离散轨迹末尾增加一个轨迹点
virtual void AppendTrajectoryPoint(
const common::TrajectoryPoint& trajectory_point);
//在离散轨迹起始增加一个轨迹点
void PrependTrajectoryPoints(
const std::vector<common::TrajectoryPoint>& trajectory_points) {
if (!empty() && trajectory_points.size() > 1) {
ACHECK(trajectory_points.back().relative_time() <
front().relative_time());
}
insert(begin(), trajectory_points.begin(), trajectory_points.end());
}
//根据下标index去离散轨迹上找到这个轨迹点,并且返回
const common::TrajectoryPoint& TrajectoryPointAt(const size_t index) const;
//返回离散轨迹点的数量
size_t NumOfPoints() const;
//虚函数 清空离散数据点中的所有数据
virtual void Clear();
};
//内联函数,返回离散轨迹点的个数
inline size_t DiscretizedTrajectory::NumOfPoints() const { return size(); }
//内联函数,清空离散数据点中的所有数据
inline void DiscretizedTrajectory::Clear() { clear(); }
} // namespace planning
} // namespace apollo
感觉.h文件已经把DiscretizedTrajectory类的作用介绍的很清楚了,该类的实现文件discretized_trajectory.cc和测试文件discretized_trajectory_test.cc不再解析。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)