前提準(zhǔn)備
AutowareAuto ade環(huán)境搭建完成
Lgsvl環(huán)境和仿真器配置完成
運(yùn)行環(huán)境建議
如果運(yùn)行 LGSVL 仿真器,需要搭載 NVIDIA 顯卡,具體要求如鏈接所示,推薦配置如下
Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz (16 virtual cores) with 64GB RAM
NVIDIA GeForce RTX 2080 with 8 GB memory
如果運(yùn)行失敗或者效果差,可能是計(jì)算資源不足造成。
啟動(dòng)
終端一:啟動(dòng)仿真器
ade --rc .aderc-amd64-foxy-lgsvl start --update --enter /opt/lgsvl/simulator &
終端二:啟動(dòng)可視化界面
ade enter source /opt/AutowareAuto/setup.bash ros2 launch autoware_auto_launch autoware_auto_visualization.launch.py
終端三:
ade enter source /opt/AutowareAuto/setup.bash ros2 launch autoware_demos avp_sim.launch.py
這個(gè)時(shí)候,即可看到如圖界面
具體流程介紹
1、設(shè)定初始位姿與定位簡介
使用2D Pose Estimate指令給車輛設(shè)定初始位置。如下圖所示
此時(shí),車輛便和LGSVL中位置達(dá)成一直一致,如果位置不一致,導(dǎo)航將會(huì)失敗。
AutowareAuto的定位是如何實(shí)現(xiàn)的呢?
首先,需要給定車輛一個(gè)初始位姿,這個(gè)姿態(tài)對(duì)于車輛而言就是一個(gè)絕對(duì)位置,相當(dāng)于GPS位置,至于為什么不使用GPS定位,在定位一欄中會(huì)專門介紹。
在初始位姿給定后,NDT算法會(huì)對(duì)現(xiàn)有為位姿做一個(gè)微調(diào),這里其實(shí)就是采用點(diǎn)云信息的匹配做到的。
在之后導(dǎo)航的過程中,NDT算法會(huì)一直作用與車輛身上,幫助車輛時(shí)刻保持定位準(zhǔn)確。
2、導(dǎo)航與內(nèi)部算法簡介
定位結(jié)束后,AutowareAuto對(duì)于車輛的移動(dòng)采用定點(diǎn)移動(dòng),即利用 2D Nav Goal 插件對(duì)車輛發(fā)布目標(biāo)點(diǎn)。如下圖所示
此時(shí),車輛將會(huì)朝著目標(biāo)點(diǎn)行使。
AutowareAuto的決策規(guī)劃是如何實(shí)現(xiàn)的呢?
這里首先得講到AutowareAuto背后的一個(gè)邏輯,那就是如何判斷某個(gè)位置是否是可行區(qū)域。其實(shí)這就是正式駕駛的前提條件,地圖構(gòu)建。
AutowareAuto的地圖構(gòu)建分為兩個(gè)部分,一部分為點(diǎn)云地圖,一部分為語義地圖。點(diǎn)云地圖將地圖中障礙物信息采集,語義地圖則根據(jù)點(diǎn)云地圖畫出。
所以,AutowareAuto規(guī)劃的一個(gè)基礎(chǔ)為地圖,從地圖中可行區(qū)域中規(guī)劃出一條從當(dāng)前位置到目標(biāo)位置的路徑。
3、泊車案例及其內(nèi)部算法
從導(dǎo)航原理可知,泊車無非也是從語義地圖中讀出,哪一些地方屬于可停車區(qū)域,如下圖所示
可是,我們雖然直到了其中的一個(gè)本質(zhì)。可是它具體是如何實(shí)現(xiàn)的呢?
從泊車案例思考,其內(nèi)部的一個(gè)算法為混合 A* (Hybrid A*)。混合A*算法是斯坦福大學(xué)于2010年提出用于解決在側(cè)方位停車和倒車入庫過程中的路徑規(guī)劃問題。
其背后的原理其實(shí)和A*算法一致,不同的是,其中加入了車輛運(yùn)動(dòng)學(xué)模型。
偽代碼為:
ASTAR() { INIT START INIT END INIT_VEC OPENSET INIT_VEC FATHERSET INIT_VEC OBSTACLE OPENSET.ADD(START) ADD_OPENSET(START) WHILE(!IS_OPENSET_EMPTY()){ MIN_FN_POINT = FIND_MIN_FN(OPENSET) IF(MIN_FN_POINT == END){BREAK} SEARCH_ENV_BLOCK(MIN_FN_POINT) OPENSET.DELETE(MIN_FN_POINT) FATHERSET.ADD(MIN_FN_POINT) } GET_TRAJECTORY() } SEARCH_ENV_BLOCK(MIN_FN_POINT) { FOR(AUTO_P : MIN_FN_POINT){ COST = MIN_FN_POINT.G + CALCU_G(MIN_FN_POINT, AUTO_P) IF((AUTO_P IN FATHERSET) || (AUTO_P IN OBSTACLE)){CONTINUE} IF(AUTO_P NOT IN OPENSET){ OPENSET.ADD(AUTO) }ELSE IF(AUTO_P.G > COST){ UPDATE AUTO_P } } }
泊車最后實(shí)現(xiàn)如圖:
注:一旦自動(dòng)駕駛,手動(dòng)駕駛將不再起作用,因?yàn)檐囕v會(huì)激活制動(dòng)器以保持在先前定義的目標(biāo)位置
重要事項(xiàng)
在之前的操作中,我們都是在 docker ade 環(huán)境下執(zhí)行的 /opt/AutowareAuto 目錄下的代碼,當(dāng)讀者選擇通過自行編譯的代碼,也就是 /home/${USER}/AutowareAuto 下代碼執(zhí)行上述操作時(shí),會(huì)出現(xiàn)車輛不出現(xiàn),點(diǎn)云地圖不出現(xiàn)的情況,在此解釋:
地圖和車輛都是基于 /opt/AutowareAuto 下配置進(jìn)行的,如果想要用 AutowareAuto 內(nèi)配置,需要將點(diǎn)云地圖和車輛都換成下載代碼中的配置
vehicle_characteristics_param_file = os.path.join( get_package_share_directory('autoware_demos'), 'param/vehicle_characteristics.param.yaml') vehicle_constants_manager_param_file = os.path.join( get_package_share_directory('autoware_auto_launch'), 'param/lexus_rx_hybrid_2016.param.yaml')
同理,之后如果想要更換地圖或者更換車輛配置,都需要在launch中作詳細(xì)目錄說明,不然都會(huì)指到 /opt 中。
在修改后都需要用 colcon build --packages-select 功能包 來重新編譯。
問題與解答
1.車輛在模擬器中沒有改變,但是在rviz2中顯示十分奇怪,比如卡在某一個(gè)位置或者定位不準(zhǔn)確
原因:計(jì)算資源不夠
2.出現(xiàn)如下所示報(bào)錯(cuò):
[object_collision_estimator_node_exe-18] [WARN] [1613130016.283356960] [planning.object_collision_estimator_node]: on_bounding_box cannot transform base_link to map. [behavior_planner_node_exe-19] [INFO] [1613130016.285522103] [planning.behavior_planner_node]: Waiting for localization result to become available [lanelet2_global_planner_node_exe-15] [ERROR] [1613130016.285673175] [planning.lanelet2_global_planner_node]: Failed to transform Pose to map frame [behavior_planner_node_exe-19] [INFO] [1613130016.320455277] [planning.behavior_planner_node]: Waiting for localization result to become available [lanelet2_global_planner_node_exe-15] [ERROR] [1613130016.321167460] [planning.lanelet2_global_planner_node]: Failed to transform Pose to map frame [p2d_ndt_localizer_exe-4] [ERROR] [1613130016.337780380] [localization.p2d_ndt_localizer_node]: Could not find a connection between 'map' and 'base_link' because they are not part of the same tree.Tf has two or more unconnected trees.
3.解決方法:重新給定一個(gè)絕對(duì)坐標(biāo)
[lanelet2_global_planner_node_exe-15] [ERROR] [planning.lanelet2_global_planner_node]: Global route has not been found!
原因:全局路徑規(guī)劃器規(guī)劃失敗,一方面可能是性能原因,一方面可能是車輛本身機(jī)制不允許,比如位置在車身之后。
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1018瀏覽量
83771 -
NDT
+關(guān)注
關(guān)注
0文章
26瀏覽量
14950 -
NVIDIA顯卡
+關(guān)注
關(guān)注
0文章
15瀏覽量
3174
原文標(biāo)題:AutowareAuto 泊車案例復(fù)現(xiàn)及原理簡介
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論