Apollo Planning(四)

一、Task

Planningtask集中在planning/tasks目录下,相关task都可以在这里找到。VALET_PARKING_PARKING包含四个Task

task_type: OPEN_SPACE_ROI_DECIDER
task_type: OPEN_SPACE_TRAJECTORY_PROVIDER
task_type: OPEN_SPACE_TRAJECTORY_PARTITION
task_type: OPEN_SPACE_FALLBACK_DECIDER

1.1 OPEN_SPACE_ROI_DECIDER

通过OpenSpaceRoiDecider类(open_space_roi_decider.cc)实现,主要是为后面的算法提供数据整理等准备工作。

Status OpenSpaceRoiDecider::Process(Frame *frame) {
  ...
  if (roi_type == OpenSpaceRoiDeciderConfig::PARKING) {
    ...
	// Find parking spot,得到车位四个角点
    if (!GetParkingSpot(frame, &spot_vertices, &nearby_path)) {
      ...
    }
	// 根据车位角点设置原点信息
    SetOrigin(frame, spot_vertices);
	// 自车停车终止状态
    SetParkingSpotEndPose(frame, spot_vertices);
	// 获得车位边界
    if (!GetParkingBoundary(frame, spot_vertices, nearby_path, &roi_boundary)) {
      ...
    }
  } else if (roi_type == OpenSpaceRoiDeciderConfig::DEAD_END) {
    ...
  } else if (roi_type == OpenSpaceRoiDeciderConfig::PULL_OVER) {
    ...
  } else if (roi_type == OpenSpaceRoiDeciderConfig::PARK_AND_GO) {
    ...
  } else {
    ...
  }
	// 以顶点表示障碍物,并按顺时针加载到vec_变量;
	// 将障碍物顶点转为线性方程表示; 
  if (!FormulateBoundaryConstraints(roi_boundary, frame)) {
    ...
  }
  return Status::OK();
}

1.2 OPEN_SPACE_TRAJECTORY_PROVIDER

 通过OpenSpaceTrajectoryProvider类实现(代码地址planning/tasks/optimizers/open_space_trajectory_generation/open_space_trajectory_provider.cc,主要提供状态机(stop/replan)以及多线程计算的功能.里面会去调用OpenSpaceTrajectoryOptimizer,具体实现规划算法,是核心部分,其中又分为四个计算模块:

  1. HybridAStar: A*搜索获取粗轨迹
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值