国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

這篇具有很好參考價(jià)值的文章主要介紹了Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • 本次學(xué)習(xí)的Apollo版本為6.0版本,因?yàn)閺?.0開始軌跡規(guī)劃算法主要使用的就是public road,所以本次主要學(xué)習(xí)該算法,該算法的核心思想是PV解耦,即Path-Velocity的解耦,其主要包含兩個(gè)過程:1.路徑規(guī)劃,2.速度規(guī)劃。
  • 路徑規(guī)劃其實(shí)已經(jīng)發(fā)展很多年,從早期的機(jī)器人到現(xiàn)在的無人駕駛,主要的方法包括 采樣法,圖搜索法,數(shù)值優(yōu)化法等,具體可以查閱相關(guān)文獻(xiàn)閱讀。本篇文章主要講述apollo軌跡規(guī)劃模塊里面的路徑規(guī)劃,之后在更新學(xué)習(xí)速度規(guī)劃的文章。
  • 與之前EM規(guī)劃和Lattice規(guī)劃不同,當(dāng)前6.0版本使用的路徑規(guī)劃,更加的靈活方便,原因主要是采用了數(shù)值優(yōu)化的思想,通過邊界約束等,保證了密集障礙物場(chǎng)景的靈活性,也同時(shí)避免了EM規(guī)劃中DP消耗大量時(shí)間的缺點(diǎn)。
  • 在之前的學(xué)習(xí)中了解到PublicRoadPlanner::Plan()中注冊(cè)了,創(chuàng)建,更新了場(chǎng)景再根據(jù)不同的場(chǎng)景對(duì)應(yīng)的不同的stage去完成相應(yīng)階段下的tasks。由于場(chǎng)景的差異性,task與stage也有所不同,因此本文只講述默認(rèn)情況下的lane follow scenario,其他場(chǎng)景的分析方式大同小異。
    Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃
    關(guān)于Apollo6.0處理路徑規(guī)劃的算法原理,百度已經(jīng)發(fā)表在《Optimal Vehicle Path Planning Using Quadratic Optimization for Baidu Apollo Open Platform》?;趨⒖季€將規(guī)劃問題解耦為SL坐標(biāo)系中的路徑規(guī)劃和ST坐標(biāo)系中的速度規(guī)劃。
    Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

主要代碼的梳理學(xué)習(xí)從LaneFollowStage::PlanOnReferenceLine這個(gè)函數(shù)展開

Status LaneFollowStage::PlanOnReferenceLine(
    const TrajectoryPoint& planning_start_point, Frame* frame, ReferenceLineInfo* reference_line_info) {
    // 當(dāng)前先驗(yàn)信息判斷是否當(dāng)前參考線是可換道的車道,如果不是那么增加cost。
  if (!reference_line_info->IsChangeLanePath()) {
    reference_line_info->AddCost(kStraightForwardLineCost);
  }
  auto ret = Status::OK();
  // 隨后,開始了task的process過程,不同的stage有不同的task,具體可通過 conf/scenario文件夾下的pb.txt
  for (auto* task : task_list_) {
    ret = task->Execute(frame, reference_line_info);
    RecordDebugInfo(reference_line_info, task->Name(), time_diff_ms);
    if (!ret.ok()) {
      AERROR << "Failed to run tasks[" << task->Name()
             << "], Error message: " << ret.error_message();
      break;
    }
  }
  RecordObstacleDebugInfo(reference_line_info);
  // check path and speed results for path or speed fallback
  reference_line_info->set_trajectory_type(ADCTrajectory::NORMAL);
  // 如果執(zhí)行失敗,則規(guī)劃fallback軌跡
  if (!ret.ok()) {
    PlanFallbackTrajectory(planning_start_point, frame, reference_line_info);
  }
// 本次只學(xué)習(xí)路徑規(guī)劃部分,后面的以后再學(xué)
...
}

在路徑規(guī)劃中我們主要關(guān)注lane follow場(chǎng)景,配置文件為modules\planning\conf\scenario\lane_follow_config.pb.txt

scenario_type: LANE_FOLLOW
stage_type: LANE_FOLLOW_DEFAULT_STAGE
stage_config: {
  stage_type: LANE_FOLLOW_DEFAULT_STAGE
  enabled: true
  task_type: LANE_CHANGE_DECIDER
  task_type: PATH_REUSE_DECIDER
  task_type: PATH_LANE_BORROW_DECIDER
  task_type: PATH_BOUNDS_DECIDER
  task_type: PIECEWISE_JERK_PATH_OPTIMIZER
  task_type: PATH_ASSESSMENT_DECIDER
  task_type: PATH_DECIDER
  task_type: RULE_BASED_STOP_DECIDER
  task_type: ST_BOUNDS_DECIDER
  task_type: SPEED_BOUNDS_PRIORI_DECIDER
  task_type: SPEED_HEURISTIC_OPTIMIZER
  task_type: SPEED_DECIDER
  task_type: SPEED_BOUNDS_FINAL_DECIDER
  # task_type: PIECEWISE_JERK_SPEED_OPTIMIZER
  task_type: PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER
  task_type: RSS_DECIDER

......

上述task中,根據(jù)名稱可以看出,path都是與路徑相關(guān),從rule_based之后則是與速度規(guī)劃相關(guān)。故本節(jié)主要關(guān)注:
stage_type: LANE_FOLLOW_DEFAULT_STAGE
enabled: true
task_type: LANE_CHANGE_DECIDER
task_type: PATH_REUSE_DECIDER
task_type: PATH_LANE_BORROW_DECIDER
task_type: PATH_BOUNDS_DECIDER
task_type: PIECEWISE_JERK_PATH_OPTIMIZER
task_type: PATH_ASSESSMENT_DECIDER
task_type: PATH_DECIDER

上面的task按照任務(wù)順序執(zhí)行:
1.lane change decider:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

該決策器主要是用來處理refer_line_info,內(nèi)部有個(gè)狀態(tài)機(jī),根據(jù)換道成功時(shí)間與換道失敗時(shí)間以及當(dāng)前位置與目標(biāo)位置來切換狀態(tài),以此來處理refer_line_info的changelane信息,主要就是更新?lián)Q道狀態(tài)。
這一部分也影響到了path bound decider :如果最終的結(jié)果是不換道,在PathBoundsDecider中會(huì)將L的邊界限制在本車道內(nèi)(如果不借道);反之在PathBoundsDecider中會(huì)將L的邊界向目標(biāo)車道一側(cè)進(jìn)行拓展。
具體細(xì)節(jié)上的處理見Apollo Planning學(xué)習(xí)(3)-------LANE_CHANGE_DECIDER
2.path reuse decider:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

該決策器主要是用來處理路徑是否可以重用,提高幀之間的平滑性。
如果感知模塊對(duì)障礙物的感應(yīng)不穩(wěn)定(上下跳動(dòng))導(dǎo)致路徑規(guī)劃模塊不穩(wěn)定(也同樣上下跳動(dòng)),所以Apollo設(shè)計(jì)了路徑重用的決策,如果上一幀的路徑?jīng)]有與障礙物發(fā)生碰撞,則采用上一幀的路徑。
3.path lane borrow decider:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

ADC在借道工況中:判斷本車道可通過性,如果在連續(xù)n(參數(shù)配置)幀規(guī)劃中本車道可以通行,則取消借道。
ADC不在借道工況中:ADC需要同時(shí)滿足必要條件才可以進(jìn)入借道工況。
具體細(xì)節(jié)上的處理見:Apollo Planning學(xué)習(xí)(4)-------PATH_LANE_BORROW_DECIDER
這里同lanechangedecider一樣,借道還是不借道也會(huì)影響到后面的PathBoundsDecider,如果借道,在PathBoundsDecider中會(huì)將l ll的邊界借道方向一側(cè)進(jìn)行拓展。
4.path bounds decider:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

該決策器主要是用來處理根據(jù)前面的決策器更新的狀態(tài)信息(例如,換道情況,借道情況)來生成相應(yīng)的L的邊界。
在該決策器中分為四個(gè)場(chǎng)景進(jìn)行處理,按處理的順序分別是fallback、pull over、lane change、regular,不同的boundary對(duì)應(yīng)不同的應(yīng)用場(chǎng)景,其中fallback對(duì)應(yīng)的path bound一定會(huì)生成,其余3個(gè)只有一個(gè)被激活,即按照順序一旦有有效的boundary生成,就結(jié)束該task。
FallbackBound+PullOverBound;
FallbackBound+LaneChangeBound;
FallbackBound+NoBorrow/LeftBorrow/RightBorrow;
不管在何種決策下,PathBoundsDecider都會(huì)生成一條FallbackBound,其與NoBorrow的區(qū)別是,不會(huì)刪除Block Obstacle后道路邊界。
具體細(xì)節(jié)上的處理見:Apollo Planning學(xué)習(xí)(5)-------PATH_BOUNDS_DECIDER
5.piecewise jerk path optimize:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃

該決策器主要是基于二次規(guī)劃算法,對(duì)每個(gè)邊界規(guī)劃出最優(yōu)路徑。
這里推薦聽一下b站老王講的十分透徹B站老王—二次規(guī)劃
6.path assessment decider:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃
該決策器主要處理是會(huì)依據(jù)設(shè)計(jì)好的規(guī)則篩選處最終的path,并在規(guī)劃路徑上的采樣點(diǎn)添加標(biāo)簽(IN_LANE、OUT_ON_FORWARD_LANE、OUT_ON_REVERSE_LANE等),作為路徑篩選的依據(jù),并為速度規(guī)劃提供限制。
具體細(xì)節(jié)上的處理見:Apollo Planning學(xué)習(xí)(6)-------PATH_ASSESSMENT_DECIDER
7.path decider:
Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃
該決策器主要處理是遍歷每個(gè)障礙物, 根據(jù)規(guī)則判斷前面優(yōu)化并篩選出來的path生成對(duì)應(yīng)的decisions(GNORE, STOP, LEFT NUDGE, RIGHT NUDGE等)。

對(duì)以有IGNORE/STOP/KEEP_CLEAR決策的obstacle不做處理;
如果是block obstacle,并且不是借道工況,設(shè)為STOP決策;
不在path縱向范圍內(nèi)的障礙物設(shè)為IGNORE決策;
對(duì)于碰撞的obstacle,設(shè)為STOP決策;
根據(jù)位置關(guān)系設(shè)置LEFT NUDGE或者RIGHT NUDGE的決策;

具體細(xì)節(jié)上的處理見:Apollo Planning學(xué)習(xí)(7)-------PATH_DECIDER文章來源地址http://www.zghlxwxcb.cn/news/detail-488917.html

到了這里,關(guān)于Apollo Planning學(xué)習(xí)(2)-------路徑規(guī)劃的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • APOLLO planning比賽任務(wù)詳解

    APOLLO planning比賽任務(wù)詳解

    最近做了一個(gè)apollo的比賽,在不同的場(chǎng)景下完成不同的任務(wù),對(duì)于每一個(gè)任務(wù),又有相應(yīng)的小要求,所有任務(wù)都是在apollo的基礎(chǔ)上進(jìn)行更改,前4個(gè)任務(wù)的代碼修改量都很小,其實(shí)有3個(gè)任務(wù)都在apollo中都已經(jīng)有了完成的雛形,這意味著這3個(gè)任務(wù)只需要更改相應(yīng)的參數(shù)就好了。

    2024年02月09日
    瀏覽(14)
  • Apollo和autoware規(guī)劃算法代碼ros移植-路徑規(guī)劃可跑工程分享

    Apollo和autoware規(guī)劃算法代碼ros移植-路徑規(guī)劃可跑工程分享

    之前出了: Apollo規(guī)劃代碼ros移植-Lattcie的二次規(guī)劃. Apollo規(guī)劃代碼ros移植-Lattice規(guī)劃框架. 規(guī)劃代碼ros移植-POMDP預(yù)測(cè)規(guī)劃(一). Apollo規(guī)劃代碼ros移植-Em planner. Apollo規(guī)劃代碼ros移植-混合A*. Apollo規(guī)劃代碼ros移植-動(dòng)態(tài)障礙物處理(一). 適合人群: 1.想移植Apollo,autoware等流行規(guī)劃算法到

    2024年02月12日
    瀏覽(29)
  • Apollo決策規(guī)劃算法學(xué)習(xí)Chapter3 速度規(guī)劃算法

    Apollo決策規(guī)劃算法學(xué)習(xí)Chapter3 速度規(guī)劃算法

    第一章 Apollo決策規(guī)劃算法基本概念 第二章 Apollo決策規(guī)劃之路徑規(guī)劃算法 第三章 Apollo決策規(guī)劃之速度規(guī)劃算法 本文為第三章,主要講解 Apollo決策規(guī)劃算法中的速度規(guī)劃算法,EM planner的速度規(guī)劃算法同樣是是通過動(dòng)態(tài)規(guī)劃和二次規(guī)劃實(shí)現(xiàn)的,下面來細(xì)講速度規(guī)劃算法。 1)回

    2024年02月11日
    瀏覽(98)
  • Apollo星火計(jì)劃學(xué)習(xí)筆記——Apollo開放空間規(guī)劃算法原理與實(shí)踐

    Apollo星火計(jì)劃學(xué)習(xí)筆記——Apollo開放空間規(guī)劃算法原理與實(shí)踐

    Apollo星火計(jì)劃課程鏈接如下 星火計(jì)劃2.0基礎(chǔ)課:https://apollo.baidu.com/community/online-course/2 星火計(jì)劃2.0專項(xiàng)課:https://apollo.baidu.com/community/online-course/12 ????開放空間算法的配置主要在 valet_parking_config.pb.txt 中,分為4個(gè)部分: OPEN_SPACE_ROI_DECIDER 、 OPEN_SPACE_TRAJECTORY_PROVIDER 、 OPE

    2023年04月10日
    瀏覽(26)
  • Apollo星火計(jì)劃學(xué)習(xí)筆記——Apollo決策規(guī)劃技術(shù)詳解及實(shí)現(xiàn)(以交通燈場(chǎng)景檢測(cè)為例)

    Apollo星火計(jì)劃學(xué)習(xí)筆記——Apollo決策規(guī)劃技術(shù)詳解及實(shí)現(xiàn)(以交通燈場(chǎng)景檢測(cè)為例)

    Apollo星火計(jì)劃課程鏈接如下 星火計(jì)劃2.0基礎(chǔ)課:https://apollo.baidu.com/community/online-course/2 星火計(jì)劃2.0專項(xiàng)課:https://apollo.baidu.com/community/online-course/12 星火計(jì)劃學(xué)習(xí)筆記——第七講自動(dòng)駕駛規(guī)劃技術(shù)原理1 ●目的 ○ 保障無人車的行車安全并且遵守交規(guī) ○ 為路徑和速度的平滑優(yōu)

    2024年02月07日
    瀏覽(52)
  • Apollo規(guī)劃模塊代碼學(xué)習(xí)(1): 算法架構(gòu)原理、運(yùn)行機(jī)制一文詳解

    Apollo規(guī)劃模塊代碼學(xué)習(xí)(1): 算法架構(gòu)原理、運(yùn)行機(jī)制一文詳解

    Apollo開源自動(dòng)駕駛平臺(tái)中,高清地圖模塊提供了每個(gè)在線模塊都可以訪問的高清地圖。感知和定位模塊提供了必要的動(dòng)態(tài)環(huán)境信息,可以在預(yù)測(cè)模塊中進(jìn)一步用于預(yù)測(cè)未來的環(huán)境狀態(tài)。運(yùn)動(dòng)規(guī)劃模塊考慮所有信息,以生成安全平滑的軌跡,并將其輸入車輛控制模塊。 目前Ap

    2024年01月25日
    瀏覽(19)
  • 【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BOUNDS_DECIDER

    【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BOUNDS_DECIDER

    1.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之LANE_CHANGE_DECIDER 2.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_REUSE_DECIDER 3.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BORROW_DECIDER 4.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BOUNDS_DECIDER 5.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月11日
    瀏覽(18)
  • 【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_ASSESSMENT_DECIDER

    【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_ASSESSMENT_DECIDER

    1.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之LANE_CHANGE_DECIDER 2.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_REUSE_DECIDER 3.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BORROW_DECIDER 4.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BOUNDS_DECIDER 5.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月11日
    瀏覽(19)
  • 【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之LANE_CHANGE_DECIDER

    【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之LANE_CHANGE_DECIDER

    1.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之LANE_CHANGE_DECIDER 2.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_REUSE_DECIDER 3.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BORROW_DECIDER 4.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BOUNDS_DECIDER 5.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月12日
    瀏覽(21)
  • 【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之RULE_BASED_STOP_DECIDER

    【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之RULE_BASED_STOP_DECIDER

    1.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之LANE_CHANGE_DECIDER 2.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_REUSE_DECIDER 3.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BORROW_DECIDER 4.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PATH_BOUNDS_DECIDER 5.【Apollo學(xué)習(xí)筆記】——規(guī)劃模塊TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包