Bootstrap

学习自用 百度apollo

3.1产生换道策略,产生换道的状态,之后将结果保存在injector中

// /home/yuan/apollo-edu/modules/planning/tasks/deciders/lane_change_decider/lane_change_decider.cc
// LaneChangeDecider 类的方法,用于更新车道变换状态信息
void LaneChangeDecider::UpdateStatus(double timestamp,
                                     ChangeLaneStatus::Status status_code,
                                     const std::string& path_id) {
  // 获取车道变换状态对象
  auto* lane_change_status = injector_->planning_context()
                                 ->mutable_planning_status()
                                 ->mutable_change_lane();
  
  // 设置时间戳、路径标识符和状态代码到车道变换状态对象中
  lane_change_status->set_timestamp(timestamp);  // 设置时间戳
  lane_change_status->set_path_id(path_id);      // 设置路径标识符
  lane_change_status->set_status(status_code);   // 设置状态代码
}

3.2产生借道决策

// 在默认情况下,不进行任何车道借用
reference_line_info->set_is_path_lane_borrow(false);

// 检查是否需要进行车道借用,如果需要,则进行车道借用
if (Decider::config_.path_lane_borrow_decider_config().allow_lane_borrowing() &&
    IsNecessaryToBorrowLane(*frame, *reference_line_info)) {
  reference_line_info->set_is_path_lane_borrow(true);
}

// 如果左侧和右侧均不可借用车道
if (!left_borrowable && !right_borrowable) {
  // 设置不处于车道借用场景中,并返回 false
  mutable_path_decider_status->set_is_in_path_lane_borrow_scenario(false);
  return false;
} else {
  // 设置处于车道借用场景中
  mutable_path_decider_status->set_is_in_path_lane_borrow_scenario(true);
  
  // 如果左侧可借用车道,则添加左侧借用标记
  if (left_borrowable) {
    mutable_path_decider_status->add_decided_side_pass_direction(PathDeciderStatus::LEFT_BORROW);
  }
  
  // 如果右侧可借用车道,则添加右侧借用标记
  if (right_borrowable) {
    mutable_path_decider_status->add_decided_side_pass_direction(PathDeciderStatus::RIGHT_BORROW);
  }
}

同时,在进行借道决策时,会对左右借道进行判断。借道的状态保存在injetor里。

;