跳转到内容

轨迹规划器相关接口

轨迹规划器相关的接口由如下类实现。您可以在 c++\include\drivers\traj 目录下找到对应的头文件以获取完整 API。

头文件类名说明
trajectory.hTrajectory轨迹类,包含一组有序的轨迹点,以及相关元数据。
trajectory_planner.hTrajectoryPlanner定义轨迹规划器的通用接口,支持不同的规划算法。
CollisionChecker避障约束接口。
poly5_planner.hPoly5Planner使用五次多项式进行轨迹规划,提供平滑的加减速过程,继承自 TrajectoryPlanner
  • 方法原型:

    void addPoint(const TrajectoryPoint& point)
  • 参数说明:

    参数名称类型说明
    point输入参数轨迹点,具体参见 TrajectoryPoint
  • 返回值:

    无。

  • 方法原型:

    const TrajectoryPoint& getPoint(size_t index) const
  • 参数说明:

    参数名称类型说明
    index输入参数索引
  • 返回值:

    轨迹点,具体参见 TrajectoryPoint

  • 方法原型:

    TrajectoryPoint getPointAtTime(
    AbcType time,
    bool interpolate = true) const
  • 参数说明:

    参数名称类型说明
    time输入参数时间戳,具体参见 AbcType
    interpolate输入参数(可缺省)是否插值。
  • 返回值:

    轨迹点,具体参见 TrajectoryPoint

  • 方法原型:

    size_t size() const
  • 返回值:

    轨迹点数量。

  • 方法原型:

    AbcType getDuration() const
  • 返回值:

    轨迹总时长,具体参见 AbcType

  • 方法原型:

    size_t getJointCount() const
  • 返回值:

    关节数量。

  • 方法原型:

    bool empty() const
  • 返回值:

    true 表示空,false 表示不为空。

  • 方法原型:

    void clear()
  • 返回值:

    无。

  • 方法原型:

    void setName(const std::string& name)
  • 参数说明:

    参数名称类型说明
    name输入参数轨迹名称
  • 返回值:

    无。

  • 方法原型:

    const std::string& getName() const
  • 返回值:

    轨迹名称。

  • 方法原型:

    bool saveToFile(const std::string& filename) const
  • 参数说明:

    参数名称类型说明
    filename输入参数文件路径及名称。
  • 返回值:

    true 表示保存成功,false 表示保存失败。

  • 方法原型:

    bool loadFromFile(const std::string& filename)
  • 参数说明:

    参数名称类型说明
    filename输入参数文件路径及名称。
  • 返回值:

    true 表示加载成功,false 表示加载失败。

  • 方法原型:

    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输入参数(可缺省)混合时间
  • 返回值:

    连接后的轨迹。

初始化轨迹规划器有两种方式,具体如下所示。

  1. 根据起始和结束的位置,初始化轨迹规划器。

    • 方法原型:

      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 表示初始化失败。

  2. 根据起始和结束的位置、速度、加速度,初始化轨迹规划器。

    • 方法原型:

      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 表示初始化失败。

  • 方法原型:

    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

  • 方法原型:

    void setCollisionChecker(std::shared_ptr<CollisionChecker> checker)
  • 参数说明:

    参数名称类型说明
    checker输入参数避障检查器,指向 CollisionChecker 类型的共享智能指针。
  • 返回值:

    无。

  • 方法原型:

    AbcType getTotalDuration() const
  • 返回值:

    总规划时间。

  • 方法原型:

    void setStatusCallback(TrajectoryStatusCallback callback)
  • 参数说明:

    参数名称类型说明
    callback输入参数当轨迹状态更新时,系统会自动调用此回调函数。TrajectoryStatusCallback 为函数指针类型。其数据类型,请参见 TrajectoryStatusCallback
  • 返回值:

    无。

  • 方法原型:

    void setConstraints(
    const std::vector<AbcType>& max_velocities,
    const std::vector<AbcType>& max_accelerations)
  • 参数说明:

    参数名称类型说明
    max_velocities输入参数最大速度
    max_accelerations输入参数最大加速度
  • 返回值:

    无。

  • 方法原型:

    bool checkCollision(const TrajectoryPoint& point)
  • 参数说明:

    参数名称类型说明
    point输入参数轨迹点,具体参见 TrajectoryPoint
  • 返回值:

    true 表示有碰撞,false 表示无碰撞。

  • 方法原型:

    double getMinDistance(const TrajectoryPoint& point)
  • 参数说明:

    参数名称类型说明
    point输入参数轨迹点,具体参见 TrajectoryPoint
  • 返回值:

    最小距离。

Poly5Planner 类继承自 TrajectoryPlanner 类。initWithVelAcc() 为新增方法,其余方法为重写 TrajectoryPlanner 类中的方法。

  • 方法原型:

    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 表示初始化失败。

  • 方法原型:

    bool computeTrajectoryPoint(AbcType time, TrajectoryPoint& point)
  • 参数说明:

    参数名称类型说明
    time输入参数相对起始时间的时间点。其数据结构,请参见 AbcType
    point输出参数指定时间点对应的轨迹点。其数据结构,请参见 TrajectoryPoint
  • 返回值:

    true 表示计算成功,false 表示计算失败。

  • 方法原型:

    AbcType getTotalDuration() const
  • 返回值:

    总规划时间。

  • 方法原型:

    void setConstraints(
    const std::vector<AbcType>& max_velocities,
    const std::vector<AbcType>& max_accelerations)
  • 参数说明:

    参数名称类型说明
    max_velocities输入参数最大速度
    max_accelerations输入参数最大加速度
  • 返回值:

    无。