日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度Apollo 2.5 导航模式 使用方法

發(fā)布時間:2024/3/26 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度Apollo 2.5 导航模式 使用方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Apollo 2.5版導(dǎo)航模式的使用方法

本博客參考百度apollo官方開發(fā)手冊,部分進行理解修改。

導(dǎo)航模式--官網(wǎng)開發(fā)手冊

?

在`Apollo`之前的版本中,感知、預(yù)測、導(dǎo)航、規(guī)劃模塊均依賴于高精地圖,而高精地圖的制作方法繁瑣且不透明,對于很多開發(fā)者而言,這是一個難以逾越的障礙。

基于相對地圖(`relative map`)導(dǎo)航模式(`navigation?mode`),利用該模式可順利實施測試道路上的實車調(diào)試。

相對地圖是Apollo2.5引入的新特性。從架構(gòu)層面,相對地圖模塊連接高精地圖(`HD Map`)、感知(`Perception`)模塊和規(guī)劃(`Planning`)模塊的中間層。相對地圖模塊會實時生成基于車身坐標系的地圖(格式與高精地圖一致),并且輸出供規(guī)劃模塊使用的參考線。

解釋:1)導(dǎo)航模式使用相對地圖; 2)如果在導(dǎo)航模式下,相對地圖的參考線等數(shù)據(jù)會代替高精地圖;

?

導(dǎo)航模式的基本思路是:

1. 通過人工駕駛方式錄制測試道路上的行駛軌跡

2. 利用`Apollo`工具對原始軌跡進行處理得到平滑軌跡,該軌跡既用于替代路由(`routing`)模塊輸出的導(dǎo)航路徑,也是規(guī)劃(`planning`)模塊用到的參考線(或稱指引線、中心線,`reference line`),還是生成相對地圖(`relative map`)的基準線。

此外,平滑軌跡還可用于替換高精地圖內(nèi)某些車道的參考線(默認情況下,高精地圖將車道中心線作為參考線,在道路臨時施工等特殊情形下該方式很不合適,需使用人工錄制并平滑處理的軌跡替換特殊路段的車道參考線);

3. 駕駛員將車輛行駛到測試道路起點,在`Dreamview`中打開導(dǎo)航(`Navigation`)選項及相關(guān)功能模塊,切換到自動駕駛模式并啟動車輛;

4. 自動駕駛過程中,感知(`perception`)模塊的相機(`camera`)動態(tài)檢測道路邊界及障礙物,地圖(`map`)模塊下的相對地圖(`relative map`)子模塊基于參考線及道路邊界實時地生成相對地圖(使用以車輛當前位置為原點的相對坐標系),規(guī)劃(`planning`)模塊依據(jù)地圖模塊輸出的相對地圖和感知模塊輸出的障礙物信息,動態(tài)輸出局部行駛路徑給控制(`control`)模塊執(zhí)行。

5. 目前,導(dǎo)航模式僅支持單車道行駛,可完成加減速、跟車、遇障礙物減速停車或在車道寬度允許的情形下對障礙物繞行等功能,后續(xù)版本的導(dǎo)航模式將會進一步完善以支持多車道行駛、交通標志和紅綠燈檢測等。

解釋:1)錄制分為兩種方式:

  • 實際上車錄制
  • 使用之前錄制好的bag數(shù)據(jù)包
  • 2)導(dǎo)航模式,不單需要參考線為基礎(chǔ)的相對地圖,還需要獲取感知障礙物信息。

    ?

    本文對`Apollo2.5`版的構(gòu)建、參考線數(shù)據(jù)采集與制作、`Dreamview`前端編譯配置、導(dǎo)航模式使用等內(nèi)容進行全面闡述,希望能給各位開發(fā)者正常使用`Apollo 2.5`版帶來一定的便利。

    ?

    ## 一、Apollo 2.5版的構(gòu)建

    ### 1.1 在Visual Studio Code中構(gòu)建

    打開`Visual Studio Code`,執(zhí)行菜單命令`文件->打開文件夾`,在彈出的對話框中,選擇`Apollo項目`源文件夾,點擊“確定”,如下圖所示:

    ?

    ?

    之后,執(zhí)行菜單命令`任務(wù)->運行生成任務(wù)`或直接按快捷鍵`Ctrl+Shift+B`(與`Visual Studio`和`QT`的快捷鍵一致)構(gòu)建工程,若之前沒有啟動過`Docker`,則編譯時會啟動`Docker`,需在底部終端窗口輸入超級用戶密碼。命令執(zhí)行完畢,若在底部終端窗口出現(xiàn)`終端將被任務(wù)重用,按任意鍵關(guān)閉。`信息(如下圖所示),則表示構(gòu)建成功。整個過程**一定要保持網(wǎng)絡(luò)暢通**,否則無法下載依賴包。構(gòu)建過程可能會遇到一些問題,

    ?

    ?

    ### 1.2 在命令行中構(gòu)建

    按快捷鍵`Ctrl + Alt + T`打開命令行終端,輸入如下命令啟動`Docker`:

    cd?your_apollo_project_root_dir

    ?#從中國大陸訪問,最好加上“ -C”選項,直接訪問中國大陸主機服務(wù)器以獲取恢復(fù)的下載速度?

    bash docker/scripts/dev_start.sh -C

    (網(wǎng)絡(luò)不好,難以拉docker;實在不行可以嘗試改docker軟件源(改為國內(nèi))

    如果不行,就不用-C

    bash docker/scripts/dev_start.sh

    ?

    輸入如下命令進入Docker

    bash docker/scripts/dev_into.sh

    ?

    Docker內(nèi)部,如下執(zhí)行命令構(gòu)建Apollo項目:

    bash apollo.sh build

    整個操作如下圖所示:

    ?

    ?

    ?

    ### 1.3 修改定位模塊UTM區(qū)域ID

    `Apollo`項目定位(`localization`)模塊默認使用美國西部UTM坐標,在國內(nèi)需要修改該值。在`Docker`外部,使用`vi`或其他文本編輯器,打開文件`[apollo項目根目錄]/modules/localization/conf/localization.conf`,將下述內(nèi)容:


    --local_utm_zone_id = 10

    修改為下述內(nèi)容(這是 廣東廣州地區(qū)的UTM區(qū)域ID,中國UTM柯林斯分區(qū)參考該|網(wǎng)頁):

    --local_utm_zone_id = 49

    具體的位置可以點擊查看,例如廣東廣州

    ?

    **注意:**如果錄制數(shù)據(jù)時未修改上述內(nèi)容,則線下模擬測試回放數(shù)據(jù)包時只能將錯就錯,千萬不能再修改該值,否則地圖上的參考線定位會出錯!有一次我采集數(shù)據(jù)時,忘了修改該值,回放數(shù)據(jù)時又進行修改,結(jié)果導(dǎo)致參考線定位到了美國西海岸!我取消修改,按`F5`鍵刷新瀏覽器后顯示就恢復(fù)正常了。

    ?

    ### 1.4 配置Dreamview使用的UTM區(qū)域ID

    打開文件[apollo項目根目錄]/modules/common/data/global_flagfile.txt,在最后一行添加如下語句(這是長沙地區(qū)的UTM區(qū)域ID,中國UTM柯林斯分區(qū)參考該|網(wǎng)頁):

    --local_utm_zone_id=49

    ?

    ## 二、參考線原始數(shù)據(jù)的采集

    將構(gòu)建好的`Apollo`項目文件導(dǎo)入車內(nèi)工控機,并按照**步驟1.2**的方法進入`Docker`,再執(zhí)行如下命令,啟動`Dreamview`服務(wù)端程序:

    bash scripts/bootstrap.sh

    在瀏覽器中打開網(wǎng)頁http://localhost:8888(注意不要使用代理),進入Dreamview界面,如下圖所示:

    ?

    **1** ?駕駛員將車輛駛?cè)氪郎y試路段起點;

    **2** ?操作員點擊`Dreamview`界面左側(cè)工具欄中的`Module Controller`按鈕,進入模塊控制頁面,選中`GPS`、`Localization`、`Record Bag`選項,**注意:如果采集的數(shù)據(jù)包需用于線下模擬測試,還需加上`CAN Bus`選項。**

    ?

    **3**??駕駛員從起點啟動車輛并按預(yù)定路線行駛至終點;

    **4** ?操作員關(guān)閉`Dreamview`界面中的`Record Bag`選項,此時會在`/apollo/data/bag`目錄(這是`Docker`中的目錄,宿主機上對應(yīng)的目錄為`[你的apollo根目錄]/data/bag`)中生成一個類似于`2018-04-01-09-58-00`的目錄,該目錄中保存著類似于`2018-04-01-09-58-00.bag`的數(shù)據(jù)包。這就是我們所需的數(shù)據(jù)包,請記住它的路徑及名稱。**注意:**單個數(shù)據(jù)包文件的默認錄制時長為1分鐘,默認文件大小為2048MB,可通過修改文件`/apollo/scripts/record_bag.sh`來改變默認值。

    ?

    為后文闡述方便起見,假設(shè)我包數(shù)據(jù)2018-04-01-09-58-00.bag直接存放于/apollo/data/bag目錄。

    ?

    ## 三、參考線的制作

    參考線的制作既可在車內(nèi)工控機內(nèi)完成,也可在其他計算機上實施。無論在哪臺計算機上制作,我們首先假定已按**步驟1.2**的方法進入`Docker`,并按照**步驟二**中錄制的數(shù)據(jù)包放置在`/apollo/data/bag`目錄中,且假定該文件名為`2018-04-01-09-58-00.bag`(在你的機器上并非如此,這樣做只是為了后文闡述方便而已)。

    ?

    ### 3.1 從原始數(shù)據(jù)包提取裸數(shù)據(jù)

    在`Docker`內(nèi)部,使用如下命令從原始數(shù)據(jù)包提取裸數(shù)據(jù):

    cd?/apollo/modules/tools/navigator

    python extractor.py /apollo/data/bag/2018-04-01-09-58-00.bag

    ?

    上述命令會在當前目錄(易知我們在`/apollo/modules/tools/navigator`目錄中)生成一個提取后的裸數(shù)據(jù)文件:`path_2018-04-01-09-58-00.bag.txt`。

    ?

    為了驗證裸數(shù)據(jù)的正確性,可以使用如下命令查看:

    python viewer_raw.py ./path_2018-04-01-09-58-00.bag.txt

    docker中沒有相關(guān)的python庫,建議放到其他電腦中(pyCharm開發(fā)環(huán)境)進行運行

    會顯示類似下圖的路徑圖:

    ?

    ?

    ### 3.2 對裸數(shù)據(jù)進行平滑處理

    如果錄制數(shù)據(jù)時,車輛行駛不夠平順,提取的裸軌跡數(shù)據(jù)可能會不光滑,有必要對其進行平滑處理。繼續(xù)在`Docker`內(nèi)部使用如下命令完成平滑處理:

    bash smooth.sh ./path_2018-04-01-09-58-00.bag.txt 180

    ?

    注意:上述命令中`200`是平滑處理的長度,該值一般為`150-200`,如果執(zhí)行失敗,可嘗試調(diào)整該參數(shù),再次進行平滑。

    ?

    為了驗證平滑結(jié)果的正確性,可以使用如下命令查看:

    python viewer_smooth.py ./path_2018-04-01-09-58-00.bag.txt ./path_2018-04-01-09-58-00.bag.txt.smoothed

    ?

    其中,第一個參數(shù)`./path_2018-04-01-09-58-00.bag.txt`是裸數(shù)據(jù),第二個參數(shù)`./path_2018-04-01-09-58-00.bag.txt.smoothed`是平滑結(jié)果,顯示效果類似下圖:

    ?

    ?

    ## 四、Dreamview前端的編譯

    `Dreamview`前端默認使用`Baidu`地圖,也可修改為`Google`地圖,但需重新編譯`Dreamview`前端,具體方法如下(**注意**:如不需修改地圖設(shè)置,可忽略該節(jié)內(nèi)容):

    ?

    ### 4.1 更改導(dǎo)航地圖 (可以不更改,默認使用百度地圖)

    打開文件`[apollo項目根目錄]/modules/dreamview/frontend/src/store/config/ parameters.yml`,根據(jù)需要將下述內(nèi)容替換為`Google`地圖或`Baidu`地圖:

    navigation:

    ??# possible options: BaiduMap or GoogleMap

    ??map: "BaiduMap"

    ??# Google Map API: "https://maps.google.com/maps/api/js"

    ??# Baidu Map API: "https://api.map.baidu.com/api?v=3.0&ak=0kKZnWWhXEPfzIkklmzAa3dZ&callback=initMap"

    ??mapAPiUrl: "https://api.map.baidu.com/api?v=3.0&ak=0kKZnWWhXEPfzIkklmzAa3dZ&callback=initMap"

    ?

    ### 4.2 重新編譯Dreamview前端

    按照**步驟1.2**的方法進入`Docker`,運行如下命令編譯`Dreamview`前端:

    # 安裝Dreamview前端依賴包,注意:該步驟只需執(zhí)行一次,不必每次執(zhí)行

    Install Dreamview front end dependent package. Note: you only need to execute it once, not every time.

    cd?/apollo/modules/dreamview/frontend/

    yarn install

    # Compile Dreamview front end

    cd?/apollo

    bash apollo.sh build_fe

    ?

    編譯過程可能會出現(xiàn)如下錯誤:

    ERROR in ../~/css-loader!../~/sass-loader/lib/loader.js?{"includePaths":["./node_modules"]}!./styles/main.scss*

    *Module build failed: Error: ENOENT: no such file or directory, scandir '/apollo/modules/dreamview/frontend/node_modules/node-sass/vendor'*

    ...

    (The error continues, but we have the information we need to debug it)

    ?

    這是內(nèi)部依賴包不一致造成的,**解決方法如下:**

    在`Docker`內(nèi)部,運行如下命令(注意:**一定要保持網(wǎng)絡(luò)暢通**,否則無法重新下載依賴包):

    cd?/apollo/modules/dreamview/frontend/

    rm -rf node_modules

    yarn install

    cd?/apollo

    bash apollo.sh build_fe

    ?

    ## 五、導(dǎo)航模式的使用

    ### 5.1. 打開Dreamview并開啟導(dǎo)航模式

    進入`Docker`,啟動`Dreamview`,命令如下:

    cd?your_apollo_project_root_dir

    # If you haven’t opened Docker, do it first or ignore that step

    bash docker/scripts/dev_start.sh -C

    # Enter Docker

    bash docker/scripts/dev_into.sh

    # Start Dreamview and monitoring process

    bash scripts/bootstrap.sh

    若是線下模擬測試,則將**步驟二**中錄制好的數(shù)據(jù)包`/apollo/data/bag/2018-04-01-09-58-00.bag`(這是我機器上的錄制數(shù)據(jù))循環(huán)播放;**若是實車調(diào)試,則忽略該步驟**。

    rosbag play -l /apollo/data/bag/2018-04-01-09-58-00.bag

    ?

    在瀏覽器中打開網(wǎng)頁[http://localhost:8888](http://localhost:8888)(注意不要使用代理),進入`Dreamview`界面,點擊右上方下拉框,將模式設(shè)置為`Navigation`(導(dǎo)航模式),如下圖所示:

    ?

    ### 5.2 啟用導(dǎo)航模式下的相關(guān)功能模塊

    點擊`Dreamview`界面左側(cè)工具欄中的`Module Controller`按鈕,進入模塊控制頁面。**若是線下模擬測試**,選中`Relative Map`、`Navi Planning`選項,其他模塊根據(jù)需要開啟,如下圖所示(圖中顯示空白文本的模塊是`Mobileye`模塊,需安裝配置好相關(guān)硬件后才可見)):

    ?

    **若是實車調(diào)試**,建議除`Record Bag`、`Mobileye`(若`Mobileye`硬件未安裝,則會顯示為空白文本)和`Third Party Perception`模塊外,其余模塊全部開啟,如下圖所示:

    ?

    ?

    ### 5.3 發(fā)送參考線數(shù)據(jù)

    在`Docker`內(nèi)部,使用如下命令發(fā)送**步驟三**中制作的參考線數(shù)據(jù):

    cd?/apollo/modules/tools/navigator

    python navigator.py ./path_2018-04-01-09-58-00.bag.txt.smoothed

    ?

    下圖是**線下模擬測試情形下**`Dreamview`接收到參考線后的界面,注意界面左上角已出現(xiàn)了百度地圖界面,我們發(fā)送的參考線在百度地圖中以紅線方式、在主界面中以白色車道線的方式展現(xiàn)。

    ?

    ?

    下圖是**實車調(diào)試情形下的**`Dreamview`接收到參考線后的界面,注意界面左上角已出現(xiàn)了百度地圖界面,我們發(fā)送的參考線在百度地圖中以紅線方式、在主界面中以黃色車道線的方式展現(xiàn)。

    ?

    需注意以下幾點:

    (1) 如果發(fā)送參考線數(shù)據(jù)后,`Dreamview`界面不能正確顯示參考線,可能有以下方面的原因:一是參考線數(shù)據(jù)未正確發(fā)送,解決辦法是再次執(zhí)行發(fā)送命令;二是瀏覽器緩存不一致,解決辦法是按`Ctrl + R`或`F5`鍵刷新顯示,或者清理瀏覽器緩存;三是`Dreamview`后臺服務(wù)程序運行異常,解決辦法是在`Docker`內(nèi)部重啟`Dreamview`后臺服務(wù),命令如下:

    # Stop Dreamview and monitoring process

    bash scripts/bootstrap.sh stop

    # Restart Dreamview and monitoring process

    bash scripts/bootstrap.sh

    ?

    ?(2) 每次車輛重新回到起點后,無論是線下模擬測試還是實車調(diào)試情形,**均需再次發(fā)送參考線數(shù)據(jù)**。

    ?

    希望對你有幫助。

    總結(jié)

    以上是生活随笔為你收集整理的百度Apollo 2.5 导航模式 使用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。