成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實戰 | 詳解Apollo 換道

人工智能 智能汽車
Apollo 所開源出的換道代碼經過了過多的刪減, 只有一個簡單的框架. 有很多功能, 比如主動換道, 由于障礙物產生的被動換道, 較為完整的狀態機, 換道窗口和 Gap 的選擇等等功能都是缺失的. 本技術文章也只展現現有框架上的內容。

本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。

1.介紹

1.1. 換道的功能

簡單地說, 換道的作用就是從待選地參考線中選擇其中一個參考線, 供 Planning 后續模塊進行使用.

需要說明的是, Apollo 所開源出的換道代碼經過了過多的刪減, 只有一個簡單的框架. 有很多功能, 比如主動換道, 由于障礙物產生的被動換道, 較為完整的狀態機, 換道窗口和 Gap 的選擇等等功能都是缺失的. 本技術文章也只展現現有框架上的內容. 關于其他的換道功能請期待后續的內容.

1.2. 換道狀態機

Apollo 當前的換道狀態機如下:

對狀態機有一下幾點值得注意:

  • 這里的IN_CHANGE_LANE同時包含了換道執行和換道準備兩個階段. 正常情況下應該加以區分. Apollo 采取的是先切換參考線后執行換道動作的方法, 也有友商會采用先執行換道動作在切換參考線的方法(好處是切換參考線的那一幀, 自車的橫向距離接近于 0).
  • 當前代碼中并沒有體現出什么時候會換道失敗. 同樣有理由相信是由于刪除相關代碼導致的.
  • 完整的換道狀態應該至少包含: 換道準備, 換道執行, 換道保持, 換道取消, 換道完成等狀態.

2. 代碼解析

2.1. 整體流程

相關代碼所在路徑: modules/planning/tasks/deciders/lane_change_decider/http://lane_change_decider.cc

  1. 處理reference_line_info為空的異常情況.
  2. 如果配置了強制換道reckless_change_lanetrue, 則直接更新 Reference Line.
  3. 獲取上一幀的換道狀態prev_status, 剛進入程序時, 可能prev_status沒有狀態信息(!prev_status->has_status()), 此時直接認為處于換道完成狀態.
  4. 如果reference_line_info的數量為 1(即has_change_lanefalse), 說明自車處在巡跡狀態, 自車當前所在的車道擁有唯一的車道線, 周圍沒有可變車道, 所以直接更新換道狀態即可.
  5. 切換換道的狀態機
  • 上一幀處在換道狀態ChangeLaneStatus::IN_CHANGE_LANE: 如果上一幀自車所在的 Lane 和這一幀所在的 Lane 相同, 說明自車還在往目標車道上走. 反之如果上一幀自車所在的 Lane 和這一幀所在的 Lane 不同, 說明自車已經在目標車道上了, 切換已經完成.
  • 上一幀處在換道失敗狀態ChangeLaneStatus::CHANGE_LANE_FAILED: 如果換道失敗, 則凍結狀態一段時間, 然后切換到正在換道狀態, 為下一次換道做準備.
  • 上一幀處在換道完成狀態ChangeLaneStatus::CHANGE_LANE_FINISHED: 換道成功后同樣凍結一段時間, 然后切換到正在換道狀態, 為下一次換道做準備. 這里凍結時間是為了避免頻繁換道.

2.2. 安全檢查

IsClearToChangeLane判斷換道是否安全.

  1. 本安全判斷方法不考慮虛擬障礙物(Virtual Obstacles)和靜態障礙物(Static Obstacles).
  2. 計算動態障礙物在 Reference Line 上面的投影. 投影的幾何意義如下圖所示:

  1. 如果自車正在換道IsChangeLanePath, 利用上面計算的投影關系來忽略目標參考線的車道之外的障礙物.
  2. 判斷障礙物的行駛方向是否和自車相同same_direction. 根據障礙物與自車的行駛方向的關系和速度關系分別計算前向安全距離和后向安全距離.
  3. 如果自車和障礙物之間的距離大于上面計算的安全距離, 則認為可以安全換道的. HysteresisFilter是一種 Open Close 邏輯, 目的是增加安全判斷結果的穩定性(上一幀判斷結果認為是安全的, 那么這一幀就更傾向于給出是安全的判斷, 反之亦然).

2.3. 更新 Reference Line

LaneChangeDecider::PrioritizeChangeLane

  1. 輸入: is_prioritize_change_lane. 如果is_prioritize_change_lanetrue, 則找自車要切換的目標參考線. 反之如果is_prioritize_change_lanefalse, 則找自車當前位置所在的 Lane 所在的參考線.
  2. reference_line_info->splice(reference_line_info->begin(),*reference_line_info, iter);將步驟 1 找到的iter所指向的參考線放在鏈表的最前面. 由于 Planning 后續模塊使用的都是reference_line_info().front(), 所以鏈表的最前面就表示當幀就是使用的參考線. splice的使用詳細說明見C++ 基礎.
  3. 輸出: ReferenceLineInfo鏈表.

原文鏈接:https://mp.weixin.qq.com/s/IQkBV8iadaU4Qy70F3Xs3Q

責任編輯:張燕妮 來源: 自動駕駛之心
相關推薦

2024-01-08 08:44:06

2017-04-26 08:51:36

MongoDB集群實戰

2020-08-27 14:57:11

新基建

2021-10-26 11:45:22

Vue面試前端

2022-09-08 15:18:51

Ability鴻蒙

2024-02-29 08:02:00

2023-10-11 10:13:45

自動駕駛軌跡

2025-06-17 04:00:00

2022-07-22 09:55:02

Python練手題

2023-12-21 21:09:47

2024-01-23 15:14:31

2019-12-06 14:46:21

李林區塊鏈基礎設施

2022-12-22 07:40:28

2024-09-09 07:37:51

AspJWT權限

2015-07-27 11:32:24

Docker持續集成Docker部署

2024-10-22 16:59:07

2022-12-23 07:36:50

RedisLettuce技巧

2022-12-27 07:39:28

RedisRedissonLettuce

2015-07-21 14:38:02

Docker部署

2024-03-01 20:28:54

CentOS 7文件操作search
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久九 | 日本中出视频 | 精品日本久久久久久久久久 | 欧美一区免费 | 7799精品视频天天看 | 国产精品久久久久久久久 | 久久91 | 欧美日韩国产在线观看 | 一本一道久久a久久精品综合 | 嫩呦国产一区二区三区av | 精品国产一区二区三区性色 | 免费a在线| 中文字幕日韩欧美 | 日本三级做a全过程在线观看 | 精品久久香蕉国产线看观看亚洲 | 婷婷丁香综合网 | 精品在线一区 | 国产伦精品一区二区三区照片91 | 欧美一区二区三区四区视频 | 一级黄色片网站 | 国产一区二区黑人欧美xxxx | 欧美一区不卡 | 一级在线毛片 | 99久久99 | 91精品一区| 亚洲综合大片69999 | 日韩欧美国产一区二区三区 | 中文字幕视频在线观看 | 毛片免费观看 | 国产精品一区二区三区在线 | 亚洲视频免费在线看 | 99久久久99久久国产片鸭王 | 日本精品一区二区 | 一级毛片在线播放 | 日本在线一二 | 精品国产一区二区三区在线观看 | 亚洲播放一区 | 国产精品99久久久久久久久久久久 | 羞羞视频在线观看免费观看 | 免费欧美视频 | 亚洲人成人一区二区在线观看 |