Apollo
導航模式教程
1
教程簡介
無人駕駛系統利用實時感知信息和靜態地圖信息構建出完整駕駛環境,并在構建的環境中,依據routing數據,規劃出行車軌跡,并由控制模塊執行完成。Apollo導航模式在上述的框架下,針對高速、鄉村道路等簡單道路場景,進行了以下的提升:
Apollo導航模式以提高安全性和穩定性為目的,在駕駛環境中加入了靜態引導信息,引導在駕駛環境中的軌跡規劃,使其更安全更舒適。同時,引導信息也降低了對駕駛環境的完整性的要求 -- 即降低了對地圖信息的要求。
Apollo導航模式使用了相對/車身坐標系。減少了sensor數據的轉化。同時也支持各種駕駛模式之間的轉化,以應對不同的駕駛場景和條件。
Apollo導航模式引入了百度地圖的Routing功能,考慮實時路況信息,使得Routing的結果更實用,更精確,更穩定。也使得Apollo系統更易于落地和商用。
在本教程中,你將完成
▼
學習完本教程后,你將能夠在導航模式下進行規劃模塊(planning)的線下調試和開發。
在本教程中,你將掌握
▼
如何設置Apollo導航模式
如何利用云端指引者發送指引線
如何利用錄制的ros bag產生指引線并用線下指引者發送
如何進行規劃模塊的調試
在本教程中,你需要如下準備
▼
https://github.com/ApolloAuto/apollo/tree/master/docs/demo_guide
下載Apollo2.5 demo bag
2
配置導航模式
在導航模式下,有以下幾個參數需要進行配置:
感知方案:目前支持攝像頭方案(CAMERA)和基于Mobileye的方案(MOBILEYE)
Apollo UTM Zone
規劃模塊的Planner:目前支持EM, LATTICE, 和NAVI三種
系統限速:單位為米/秒
在Docker下修改配置文件
配置文件位于:
1 | /apollo/modules/tools/navigation/config/default.ini |
默認配置為:
12345678910111213 | [PerceptionConf]# three perception solutions: MOBILEYE, CAMERA, and VELODYNE64perception = CAMERA[LocalizationConf]utm_zone = 10[PlanningConf]# three planners are available: EM, LATTICE, NAVIplanner_type = EM# highest speed for planning algorithms, unit is meter per secondspeed_limit = 5 |
該默認配置為Apollo 2.5 Demo bag錄制時的配置,在此教程中,我們直接使用。
生效配置信息
為了使配置生效,在Docker內的Apollo根目錄下,運行如下命令:
12 | in_dev_docker:/apollo$ cd /apollo/modules/tools/navigation/config/in_dev_docker:/apollo/modules/tools/navigation/config$ python navi_config.py default.ini |
3
云端指引者的使用
回放Demo bag:
在進入Docker,啟動Apollo之前,我們把Apollo2.5 demo bag拷貝到Apollo代碼根目錄下的data目錄中。
在Docker內編譯成功后,我們用如下命令啟動Dreamview:
1 | in_dev_docker:/apollo$ ./scripts/bootstrap.sh start |
并在本地瀏覽器中打開:
1 | http://localhost:8888 |
如下圖所示,在模式框中選擇“Navigation”。
然后在Docker內的apollo根目錄下運行如下命令進行bag播放:
12 | in_dev_docker:/apollo$cd datain_dev_docker:/apollo/data$rosbag play demo_2.5.bag |
播放開始后,可以看到Dreamview界面如下:
請求云端指引線
在地圖中選擇一個目的地(沿canada路),點擊地圖視圖中的紅色Route按鈕,云端指引者會接收到這個請求,并返回指引線,該指引線會被顯示在地圖視圖中。如下圖所示。以上就是云端指引者的調用過程。
4
離線指引者工具的使用
目前云端指引者只覆蓋了有限的區域。除了云端的服務之外,我們還提供了離線指引者工具來制作和發送線下指引線。在本教程中,我們以Apollo2.5 demo bag為例來生成指引線。
指引線的制作
生成指引線的步驟為:
從bag中提取路徑數據
12 | in_dev_docker:/apollo$cd modules/tools/navigatorin_dev_docker:/apollo/modules/tools/navigator$python extractor.py /apollo/data/demo_2.5.bag |
提取出來的路徑數據在路徑
1 | in_dev_docker:/apollo/modules/tools/navigator$ |
中的
1 | path_demo_2.5.bag.txt |
平滑路徑數據
1 | in_dev_docker:/apollo/modules/tools/navigator$bash smooth.sh path_demo_2.5.bag.txt 200 |
平滑后的的數據在
1 | in_dev_docker:/apollo/modules/tools/navigator$path_demo_2.5.bag.txt.smoothed |
指引線的發送
得到平滑后的數據就可以發送到Apollo系統中,作為指引線,步驟為:
1 | in_dev_docker:/apollo/modules/tools/navigator$python navigator.py path_demo_2.5.bag.txt.smoothed |
發送完成后,Dreamview的地圖視圖中的紅色指引線會更新為如下圖所示:
5
規劃模塊的調試
調試數據準備
利用bag來進行模塊調試,首先要把bag中的相應ros message過濾掉。假設我們想要調試規劃模塊,我們需要把消息
1 | /apollo/planning |
過濾,使用以下命令
12 | in_dev_docker:/apollo$cd datain_dev_docker:/apollo/data$rosbag filter demo_2.5.bag demo_2.5_no_planning.bag "topic != '/apollo/planning'" |
過濾后的bag位于
1 | in_dev_docker:/apollo/data$demo_2.5_no_planning.bag |
規劃軌跡的產生
我們播放沒有規劃的bag,用下面的命令
1 | in_dev_docker:/apollo/data$rosbag play demo_2.5_no_planning.bag |
在Dreamview中我們會看到車輛的規劃軌跡沒有輸出,如下圖
我們在Dreamview中打開Navi Planning模塊,如下圖
我們看到實時計算的車輛的規劃軌跡顯示在Dreamview中。這時你可以試著更改一些規劃模塊的配置
1 | in_dev_docker:/apollo/modules/planning/conf$planning_config_navi.pb.txt |
去了解,這些參數會對規劃結果有什么影響。或者修改規劃算法的代碼,進行調試。
6
結束
恭喜你完成了本教程。現在你應該了解:
如何設置Apollo導航模式
如何利用云端指引者發送指引線
如何利用錄制的ros bag產生指引線并用線下指引者發送
如何進行規劃模塊的調試
你也可以試著利用Demo bag對其他一些模塊進行調試。
-
導航
+關注
關注
7文章
528瀏覽量
42405 -
無人駕駛
+關注
關注
98文章
4054瀏覽量
120447
原文標題:技術干貨 | Apollo導航模式教程
文章出處:【微信號:Apollo_Developers,微信公眾號:Apollo開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論