轨迹规划器相关接口
轨迹规划器相关的接口由如下类实现。您可以在 c++\include\drivers\traj 目录下找到对应的头文件以获取完整 API。
| 头文件 | 类名 | 说明 |
trajectory.h | Trajectory | 轨迹类,包含一组有序的轨迹点,以及相关元数据。 |
trajectory_planner.h | TrajectoryPlanner | 定义轨迹规划器的通用接口,支持不同的规划算法。 |
CollisionChecker | 避障约束接口。 | |
poly5_planner.h | Poly5Planner | 使用五次多项式进行轨迹规划,提供平滑的加减速过程,继承自 TrajectoryPlanner。 |
-
方法原型:
void addPoint(const TrajectoryPoint& point) -
参数说明:
参数名称 类型 说明 point输入参数 轨迹点,具体参见 TrajectoryPoint。 -
返回值:
无。
-
方法原型:
const TrajectoryPoint& getPoint(size_t index) const -
参数说明:
参数名称 类型 说明 index输入参数 索引 -
返回值:
轨迹点,具体参见 TrajectoryPoint。
获取指定时间的轨迹点
Section titled “获取指定时间的轨迹点”-
方法原型:
TrajectoryPoint getPointAtTime(AbcType time,bool interpolate = true) const -
参数说明:
参数名称 类型 说明 time输入参数 时间戳,具体参见 AbcType。 interpolate输入参数(可缺省) 是否插值。 -
返回值:
轨迹点,具体参见 TrajectoryPoint。
获取轨迹点数量
Section titled “获取轨迹点数量”-
方法原型:
size_t size() const -
返回值:
轨迹点数量。
获取轨迹总时长
Section titled “获取轨迹总时长”-
方法原型:
AbcType getDuration() const -
返回值:
轨迹总时长,具体参见 AbcType。
获取关节数量
Section titled “获取关节数量”-
方法原型:
size_t getJointCount() const -
返回值:
关节数量。
判断轨迹是否为空
Section titled “判断轨迹是否为空”-
方法原型:
bool empty() const -
返回值:
true表示空,false表示不为空。
-
方法原型:
void clear() -
返回值:
无。
设置轨迹名称
Section titled “设置轨迹名称”-
方法原型:
void setName(const std::string& name) -
参数说明:
参数名称 类型 说明 name输入参数 轨迹名称 -
返回值:
无。
获取轨迹名称
Section titled “获取轨迹名称”-
方法原型:
const std::string& getName() const -
返回值:
轨迹名称。
保存轨迹到文件
Section titled “保存轨迹到文件”-
方法原型:
bool saveToFile(const std::string& filename) const -
参数说明:
参数名称 类型 说明 filename输入参数 文件路径及名称。 -
返回值:
true表示保存成功,false表示保存失败。
从文件加载轨迹
Section titled “从文件加载轨迹”-
方法原型:
bool loadFromFile(const std::string& filename) -
参数说明:
参数名称 类型 说明 filename输入参数 文件路径及名称。 -
返回值:
true表示加载成功,false表示加载失败。
获取所有轨迹点
Section titled “获取所有轨迹点”-
方法原型:
const std::vector<TrajectoryPoint>& getPoints() const -
返回值:
轨迹点容器,具体参见 TrajectoryPoint。
-
方法原型:
Trajectory trim(AbcType start_time, AbcType end_time) const -
参数说明:
参数名称 类型 说明 start_time输入参数 起始时间,具体参见 AbcType。 end_time输入参数 结束时间,具体参见 AbcType。 -
返回值:
修剪后的轨迹。
-
方法原型:
Trajectory append(const Trajectory& other, AbcType blend_time = 0.0) const -
参数说明:
参数名称 类型 说明 other输入参数 将要连接的轨迹 blend_time输入参数(可缺省) 混合时间 -
返回值:
连接后的轨迹。
初始化轨迹规划器
Section titled “初始化轨迹规划器”初始化轨迹规划器有两种方式,具体如下所示。
-
根据起始和结束的位置,初始化轨迹规划器。
-
方法原型:
bool init(const std::vector<AbcType>& start_positions,const std::vector<AbcType>& end_positions,AbcType duration = 0,int velocity_scale = 100) -
参数说明:
参数名称 类型 说明 start_positions输入参数 起始位置。 end_positions输入参数 结束位置。 duration输入参数(可缺省) 规划时间。值为 0,表示自动计算规划时间。 velocity_scale输入参数(可缺省) 速度比例,取值范围为 0~100。 -
返回值:
true表示初始化成功,false表示初始化失败。
-
-
根据起始和结束的位置、速度、加速度,初始化轨迹规划器。
-
方法原型:
bool initWithVelAcc(const std::vector<AbcType>& start_positions,const std::vector<AbcType>& start_velocities,const std::vector<AbcType>& start_accelerations,const std::vector<AbcType>& end_positions,const std::vector<AbcType>& end_velocities,const std::vector<AbcType>& end_accelerations,AbcType duration = 0,int velocity_scale = 100) -
参数说明:
参数名称 类型 说明 start_positions输入参数 起始位置。 start_velocities输入参数 起始速度。 start_accelerations输入参数 起始加速度。 end_positions输入参数 结束位置。 end_velocities输入参数 结束速度。 end_accelerations输入参数 结束加速度。 duration输入参数(可缺省) 规划时间。值为 0,表示自动计算规划时间。 velocity_scale输入参数(可缺省) 速度比例,取值范围为 0~100。 -
返回值:
true表示初始化成功,false表示初始化失败。
-
计算指定时间点的轨迹点
Section titled “计算指定时间点的轨迹点”-
方法原型:
bool computeTrajectoryPoint(AbcType time, TrajectoryPoint& point) -
参数说明:
参数名称 类型 说明 time输入参数 相对起始时间的时间点。其数据结构,请参见 AbcType。 point输出参数 指定时间点对应的轨迹点。其数据结构,请参见 TrajectoryPoint。 -
返回值:
true表示计算成功,false表示计算失败。
-
方法原型:
Trajectory generateTrajectory(int sample_rate = 100) -
参数说明:
参数名称 类型 说明 sample_rate输入参数(可缺省) 采样频率,单位为 Hz。 -
返回值:
生成的轨迹。
-
方法原型:
TrajectoryEvaluation evaluateTrajectory(const Trajectory& trajectory) -
参数说明:
参数名称 类型 说明 trajectory输入参数 将要评估的轨迹 -
返回值:
评估结果,具体参见 TrajectoryEvaluation。
设置避障检查器
Section titled “设置避障检查器”-
方法原型:
void setCollisionChecker(std::shared_ptr<CollisionChecker> checker) -
参数说明:
参数名称 类型 说明 checker输入参数 避障检查器,指向 CollisionChecker类型的共享智能指针。 -
返回值:
无。
获取总规划时间
Section titled “获取总规划时间”-
方法原型:
AbcType getTotalDuration() const -
返回值:
总规划时间。
注册轨迹状态回调函数
Section titled “注册轨迹状态回调函数”-
方法原型:
void setStatusCallback(TrajectoryStatusCallback callback) -
参数说明:
参数名称 类型 说明 callback输入参数 当轨迹状态更新时,系统会自动调用此回调函数。 TrajectoryStatusCallback为函数指针类型。其数据类型,请参见 TrajectoryStatusCallback。 -
返回值:
无。
设置最大速度和加速度约束
Section titled “设置最大速度和加速度约束”-
方法原型:
void setConstraints(const std::vector<AbcType>& max_velocities,const std::vector<AbcType>& max_accelerations) -
参数说明:
参数名称 类型 说明 max_velocities输入参数 最大速度 max_accelerations输入参数 最大加速度 -
返回值:
无。
检查轨迹点是否有碰撞
Section titled “检查轨迹点是否有碰撞”-
方法原型:
bool checkCollision(const TrajectoryPoint& point) -
参数说明:
参数名称 类型 说明 point输入参数 轨迹点,具体参见 TrajectoryPoint。 -
返回值:
true表示有碰撞,false表示无碰撞。
获取最小距离
Section titled “获取最小距离”-
方法原型:
double getMinDistance(const TrajectoryPoint& point) -
参数说明:
参数名称 类型 说明 point输入参数 轨迹点,具体参见 TrajectoryPoint。 -
返回值:
最小距离。
五次多项式轨迹规划器
Section titled “五次多项式轨迹规划器”Poly5Planner 类继承自 TrajectoryPlanner 类。initWithVelAcc() 为新增方法,其余方法为重写 TrajectoryPlanner 类中的方法。
初始化轨迹规划器
Section titled “初始化轨迹规划器”-
方法原型:
bool initWithVelAcc(const std::vector<AbcType>& start_positions,const std::vector<AbcType>& start_velocities,const std::vector<AbcType>& start_accelerations,const std::vector<AbcType>& end_positions,const std::vector<AbcType>& end_velocities,const std::vector<AbcType>& end_accelerations,AbcType duration = 0,int velocity_scale = 100) -
参数说明:
参数名称 类型 说明 start_positions输入参数 起始位置。 start_velocities输入参数 起始速度。 start_accelerations输入参数 起始加速度。 end_positions输入参数 结束位置。 end_velocities输入参数 结束速度。 end_accelerations输入参数 结束加速度。 duration输入参数(可缺省) 规划时间。值为 0,表示自动计算规划时间。 velocity_scale输入参数(可缺省) 速度比例,取值范围为 0~100。 -
返回值:
true表示初始化成功,false表示初始化失败。
计算指定时间点的轨迹点
Section titled “计算指定时间点的轨迹点”-
方法原型:
bool computeTrajectoryPoint(AbcType time, TrajectoryPoint& point) -
参数说明:
参数名称 类型 说明 time输入参数 相对起始时间的时间点。其数据结构,请参见 AbcType。 point输出参数 指定时间点对应的轨迹点。其数据结构,请参见 TrajectoryPoint。 -
返回值:
true表示计算成功,false表示计算失败。
获取总规划时间
Section titled “获取总规划时间”-
方法原型:
AbcType getTotalDuration() const -
返回值:
总规划时间。
设置最大速度和加速度约束
Section titled “设置最大速度和加速度约束”-
方法原型:
void setConstraints(const std::vector<AbcType>& max_velocities,const std::vector<AbcType>& max_accelerations) -
参数说明:
参数名称 类型 说明 max_velocities输入参数 最大速度 max_accelerations输入参数 最大加速度 -
返回值:
无。