Autoware 培训笔记 No. 4——寻迹
1. 前言
好多初創(chuàng)公司公布出來的視頻明顯都是尋跡的效果,不是說尋跡不好,相反可以證明,尋跡是自動技術(shù)開始的第一步。
自動駕駛尋跡:一種能夠自動按照給定的路線(通常是采用不同顏色或者其他信號標(biāo)記來引導(dǎo))進(jìn)行移動的汽車。
本章內(nèi)容有和No. 1、No. 2與No. 3重復(fù)的內(nèi)容,為了方便自己調(diào)試,我將重復(fù)的內(nèi)容也貼出來。
注意:所有需要在 [Simulation] 菜單下加載的數(shù)據(jù),都需要在所有操作之前操作,否則在RViz顯示時,會出現(xiàn)frame_id錯誤。
采用尋跡方式,首先要做的就是要確定汽車離航跡點集上的那個點最近,然后通過control算法將車輛移動到該航跡點上。所以尋跡尋跡方法最核心的操作同樣是定位。
本節(jié)尋跡我們同樣仿真數(shù)據(jù)與真車實測兩個方式來介紹
2. 仿真數(shù)據(jù)尋跡
2.1 打開runtime manager
2.2 打開地圖要定位的數(shù)據(jù)(在百度網(wǎng)盤中有,這是我們錄制的用于定位的數(shù)據(jù))
進(jìn)入[Simulaton] 頁面,點擊界面右上方[Ref]按鈕,加載錄制用于定位的 bag文件。
點擊 [Play] 然后點擊 [Pause]暫停。
2.3 加載地圖,加載world到map以及base_link到velodyne的TF變化
(1)設(shè)置從base_link到velodyne坐標(biāo)系的TF(與No. 1重復(fù))
在 [Setup] 菜單中,確保 [Localizer] 下選項為 [Velodyne],在 [Baselink to Localizer] 中設(shè)置好各個參數(shù)之后點擊TF按鈕,其中x、y、z、yaw、pitch、roll表示真車?yán)走_(dá)中心點與車身后軸中心點的相對位置關(guān)系(右手坐標(biāo)系,真車后車軸為原點),此時可以點擊[Vehicle Model],如果[Vehicle Model]為空,那么會加載一個默認(rèn)模型(在rviz顯示時,如果有激光雷達(dá)數(shù)據(jù),車輛會顯示為黑色)。如下所示。
(2)設(shè)置從world到map轉(zhuǎn)換(與No. 1重復(fù))
點擊 [Map] 頁面,點擊 [TF] 的 [ref] 選擇autoware/ros/src/.config/tf/tf_local.launch 文件,這是加載默認(rèn)world到map的坐標(biāo)轉(zhuǎn)換,打開tf_local.launch文件如下:
<launch>
<node pkg="tf" type="static_transform_publisher" name="world_to_map" args="0 0 0 0 0 0 /world /map 10" />
</launch>
args的參數(shù)“0 0 0 0 0 0 /world /map 10”表示:從/world坐標(biāo)系轉(zhuǎn)換到/map坐標(biāo)系的x, y, z, roll, pitch, yaw轉(zhuǎn)換,且頻率為10Hz。
點擊[TF] 按鈕,如下圖:
(2)加載地圖
選擇runtime manager的 [Map] 菜單,點擊 [Point Cloud] 按鈕的 [ref],加載培訓(xùn)筆記 No. 1產(chǎn)生的.pcd文件(點云地圖),并點擊[Point Cloud] 按鈕,進(jìn)度條顯示OK,則加載完畢,如下所示:
2.4 設(shè)置相關(guān)濾波器
選擇 [Sensing]頁面,點擊 [Points Downsampler] 下[voxel_grid_filter] 的 app,設(shè)置一些參數(shù),[voxel_grid_filter] 是一種將采樣方法,將點云數(shù)據(jù)用質(zhì)心近似(用于降采用),如下圖:
這里,[Voxel Leaf Size] 參數(shù)值為2,意義是2米的立方體內(nèi)的全部點近似用1個質(zhì)心代替。[Measurement Range]的參數(shù)值為2,意義是點云的有效的距離為200米。
在[Sensing] 菜單下的 [Points Preprocesser] 下 [ring_ground_filter],[app]設(shè)置如下:
[ring_ground_filter]用于區(qū)分地面與障礙物。參數(shù)描述如下:
[Sensor Model]參數(shù)為激光雷達(dá)的線掃條數(shù),我們項目用的是16線激光雷達(dá),這里我們選16;
[Sensor Height]參數(shù)表示傳感器距離地面高度;
[Max Slope]表示最大的坡度,根據(jù)Alex如果不給出好坡度,容易將坡識別為障礙物;
[Vertical Thres]表示障礙物和地面的差異度,如果大于這個值則被認(rèn)為是障礙。(這里還要看代碼)
我們場地大約有一個5度的坡,所以需要設(shè)置這個參數(shù)。
[Points Downsampler] 下的四個濾波器都可以選,但我只看了[voxel_grid_filter] 濾波器,其他三個暫時沒看,后續(xù)會陸續(xù)補(bǔ)充。
[ring_filter] 與 [ring_ground_filter] 聯(lián)合來用,才會過濾掉地面,如果大家去看 [computing] 菜單下的 [astar planner] 下的 [velocity set] 選項下的 [app] 設(shè)置會發(fā)現(xiàn)這個選項要接收的topic為points_no_ground 只有這兩個選項都開啟時,這個選項才會生效。[velocity set] 實際上就是跟斑馬線及障礙物相關(guān)的速度設(shè)置。
所以 [ring_filter] 與[ring_ground_filter] 也要勾選。
如果采用非velodyne的激光雷達(dá),勾選[ring_filter]Failedtofindmatchforfield'ring' 的錯誤,問題沒有解決,如果哪位大神知道是什么問題,歡迎在下面留言告訴我。
2.5 設(shè)置導(dǎo)航
(1)在[Computing] 菜單欄右側(cè) [Mission Planning] 中勾選[lane_rule],[lane_stop],[lane_select] 三個選項,如下圖所示:
[lane_rule]表示設(shè)置當(dāng)紅燈亮?xí)r,停止線之前與之后點的個數(shù)。具體參數(shù)如上圖:
[Acceleration]表示到達(dá)/通過停止線的加速度;
[Stopline Search Radius]表示搜索停止線圓心,半徑1m的waypoints;
[Number of zeros ahead]/[Number of zeros behind]表示停止線前/后的waypoints個數(shù),用于修改停止線前后waypoints的速度/加速度;
[Number_of_smoothing_count]用于平滑waypoints。
[lane_stop]用于識別紅綠等,根據(jù)紅綠燈的結(jié)果將停止線的waypoints變?yōu)榧t色(停止)或者綠色(繼續(xù)形式)。
[Traffic Light]下的Red Light與Green Light用與手動調(diào)整當(dāng)前路徑處在紅燈狀態(tài)還是綠燈狀態(tài);
[Lane Change]用于變道,[<<Left Lane]與[Right Lane>>]用于變道的按鈕。
[Current Lane]下的[Keep at]表示當(dāng)前Lane保持的速度,[Stop in]表示停止時距離Stopline的最大距離。
[lane_select]用于將汽車行駛在可以選擇的Lane上,如果 [waypoint_loader] 僅有一條Lane可以選擇,那么選擇這條路徑。
[Distance threshold to neighbor lanes]表示表示檢測當(dāng)前路徑周圍的有效通道的閾值。 超過此閾值的車道不會被識別為車道;
[Lane Change Interval After Lane merge]指示在更改車道后可以運行多少米的值,您可以再次更改車道;
[Lane Change Target Ratio](這個暫時還不太明白作用)
[Lane Change Target minimum(m)]表示講變道到目標(biāo)車道上目標(biāo)點的最小距離;
[Vector Length of Hermite Curve(m)]表示用Hermite曲線上waypoints的向量長度;
上述三個設(shè)置全部用默認(rèn)值。
(2)在菜單欄 [Computing] 右側(cè)的 [astar_planner]下的 [obstacle_avold], [velocity_set] 并勾選,如下所示:
[obstacle_avold]表示避障的相關(guān)參數(shù);
[velocity_set]表示避障速度設(shè)置的相關(guān)參數(shù)。
上面 [app] 參數(shù)還在看代碼,日后補(bǔ)充
以上參數(shù)全部采用默認(rèn)值。
(3)在菜單欄[Computing] 右側(cè)的 [waypoint_maker] 下的 [waypoint_loader] 加載waypoints。
選擇 [Ref] 加載之前保存下來的路點文件,并點擊 [Close] 關(guān)閉頁面。勾選 [waypoint_loader] ,如下圖所示:
這里需要勾選[disable_decision_maker]。
(4)在[Computing] 菜單欄,找到 [waypoint_follower] 下[pure_pursuit] 與 [twist_filter] 的 [app] 進(jìn)行設(shè)置。
[waypoint_follower]的 [app] 在打開的菜單欄如上左圖所示,勾選 [Dlalog] 選項,確保 [Velocity]( 手動設(shè)置速度 ) 選項值不能太大,因為這里是路點跟隨中設(shè)置速度的地方,[Waypoint] 模式下速度即是制作路點文件中記錄的 bag 文件的車速,已經(jīng)被寫入路點文件中,而 [Dlalog] 模式則可以手動設(shè)置車輛速度。
[waypoint_follower] (詳細(xì)參數(shù)還沒有看,日后補(bǔ)充)
PS:如果你希望車子檢測到障礙物會停下來,需要勾線[Sensing]菜單欄中的[ray_ground_filter] ,同時在 [Computing]菜單欄中的[pure_pursuit] 的 [app] 下勾選[Waypoint],這時車輛會按照你在No.3中記錄的航跡點速度在跑。如果你在No.3的2.7節(jié)中沒有勾選[Save/current_velocity] 那么需要你手動修改你錄制航跡點中的速度值。
2.6 運行仿真數(shù)據(jù)
打開[Rviz],在[file]菜單中的[open config]選擇路徑:autoware/ros/src/.config/rviz/default.rviz的文件。這是回到runtime manager,進(jìn)入[Simulaton] 頁面,點擊 [Pause]開始。這時可以從RViz中看到一輛黑色的帶有激光雷達(dá)數(shù)據(jù)的汽車停在地圖的右下方,如下圖所示:
運行效果如下:
3. 真車尋跡
真車尋跡與仿真尋跡類似,差別在于仿真定位采用事先記錄的數(shù)據(jù),真車定位采用實際的激光雷達(dá)。
3.1 打開runtime manager
3.2 啟動激光雷達(dá)(與No.1 重復(fù)內(nèi)容)
(1)針對velodyne 多線lidar
如果你有velodyne激光可以啟動默認(rèn)配置:[Sensing] 頁面下 [Lidars] 選項下針對你的velodyne選擇,velodyne激光對應(yīng)的發(fā)布的點云topic:/velodyne_packets,frame_id:velodyne,topic會被重映射成為/points_raw。
例如:假如你有16線激光,點選 [velodyne VLP-16] 的 [config],點選[ref],加載/home/pix/Autoware/ros/src/sensing/drivers/lid ar/packages/velodyne/velodyne_pointcloud/param s/VLP16db.yaml路徑下的配置文件(自己多線激光雷達(dá)可以針對這個配置改寫),退出 [config],勾選 [velodyne VLP-16] 選項(一般的操作都是先修改config或者app下的配置或參數(shù)文件,然后勾選選項)。
查看點云輸出。
(2)針對其他品牌多線lidar
如果你有其他品牌的激光,他們發(fā)布的topic不是/velodyne_packets,且frame_id同樣不對應(yīng),這時可以自己寫個程序轉(zhuǎn)一下,參照:https://www.cnblogs.com/hgl0417/p/11067660.html。然后單獨運行你的lidar driver node,將你的點云數(shù)據(jù)模擬成velodyne數(shù)據(jù)。此時,不需要點選runtime manager上的lidar配置文件(每個配置文件對應(yīng)一個package或者node,意義在于將對應(yīng)的topic發(fā)布,此時你已經(jīng)發(fā)布了topic,所以不需要在點選上述配置文件)。
3.2 加載地圖,開啟相關(guān)設(shè)置
重復(fù)上述2.2~2.5的操作
3.3 啟動底盤連接
由于我們的車底盤的CAN已經(jīng)做好了,所以在這里,我們只需點擊 [Interface] 菜單下的 [Gateway] 按鈕就可以鏈接底盤。
3.4 啟動汽車的自動駕駛
我們轎車為了安全,啟動環(huán)節(jié)比較復(fù)雜,感謝老司機(jī)每天重復(fù)這樣的操作
自動駕駛成功。
引用:
autoware.ai
dowson.live
原創(chuàng)文章,轉(zhuǎn)載請引用。
總結(jié)
以上是生活随笔為你收集整理的Autoware 培训笔记 No. 4——寻迹的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【华为云技术分享】自动搭建openEul
- 下一篇: 终端无法访问本地vm16虚拟机配置方法