引言
之前的文章介紹了如何使用 LG 和 Autoware 搭建自動駕駛仿真平臺存淫。文章的最后用一個簡單的自動駕駛場景測試了這個平臺的有效性谜喊。本文就介紹一下實現(xiàn)該場景的具體操作細節(jié)。
Autoware 作為一個自動駕駛套裝朋其,將 SLAM 建圖王浴、定位、決策梅猿、控制等自動駕駛環(huán)節(jié)整合在一起氓辣,并且提供了操作非常方便的圖形界面 Runtime Manager。在設置自動駕駛的整個過程中袱蚓,不需要輸入任何代碼钞啸,只要在圖形界面中選擇相應的功能即可。
在 Autoware manual 中介紹了如何操作 Autoware喇潘,不過那里是基于實車的操作体斩,我們是基于仿真平臺,細節(jié)有些區(qū)別颖低,基本流程差不多絮吵。
收集數(shù)據(jù)
按照之前的文章設置好 LG + Autoware 的仿真環(huán)境,確保兩者已經(jīng)連通忱屑。
在 LG 中選擇一個城市環(huán)境蹬敲,這里我們用 SimpleMap 。城市的選擇并不影響操作過程想幻。
進入 LG 的駕駛界面粱栖。在本文實現(xiàn)的場景中,只需要啟用 LIDAR 脏毯。可以通過 Sensor Effect 確認一下 LIDAR 是否開啟幔崖。如果車身周圍出現(xiàn)放射狀的紅點食店,則說明 LIDAR 已啟用。
-
在 Autoware 所在電腦上赏寇,保險起見可以通過如下命令再次確認一下 Autoware 能接收到 LIDAR 的數(shù)據(jù)
rostopic echo /points_raw
如果出現(xiàn)了密密麻麻的 0~255 之間的數(shù)字吉嫩,則說明 Autoware 能接收到 LIDAR 數(shù)據(jù)。
這一步確認也可以不用 ROS 命令嗅定。Autoware 為我們提供了 rostopic echo 的功能自娩。操作如下:
Runtime Manager
->Topics
->Refresh
-> 選擇/point_raw
->Echo
同樣的,如果有數(shù)字顯示渠退,則表示能接收到 LIDAR 數(shù)據(jù)忙迁。 記錄 LIDAR 數(shù)據(jù)脐彩。在 Runtime Manager 的右下角點擊
ROSBAG
,refresh 之后選擇/points_raw
topic姊扔,設定好數(shù)據(jù)包的名字惠奸,點擊start
開始記錄數(shù)據(jù)。手動駕駛汽車恰梢,收集 LIDAR 數(shù)據(jù)佛南。在 LG 中駕駛汽車行駛一段路,這一段路就是之后希望汽車自動駕駛的路段嵌言,手動駕駛汽車行駛的路線也就是自動駕駛時要跟蹤的路線嗅回。
駕駛結(jié)束,在 ROSBAG 中停止記錄數(shù)據(jù)摧茴。假設得到的數(shù)據(jù)包名字為 lidar.bag妈拌。
建圖
首先要關(guān)閉 LG 端的 LIDAR,否則會干擾建圖蓬蝶。然后進行后邊的操作尘分。
在 Runtime Manager -- Setup 界面中
TF
設置為 x: 1.2, y: 0, z: 2. 這是 LIDAR 傳感器在車身坐標系中的位置。設置這一 transform 是為了建立 LIDAR 坐標系與車身坐標系的轉(zhuǎn)換關(guān)系丸氛。在 Computing 界面選擇
ndt_mapping
培愁。這里是借助 NDT 算法實現(xiàn) SLAM。在 Simulation 界面選擇剛才生成的數(shù)據(jù)包 lidar.bag缓窜,點擊 play定续。等待結(jié)束,點 stop.
在 Computing 界面選擇
ndt_mapping[app]
禾锤,設定保存點云地圖 (point cloud data map) 的路徑私股,然后點擊 PCD OUTPUT,等待建圖結(jié)束恩掷。在建圖過程中倡鲸,為了確認建圖成功,可以打開 rviz黄娘,選擇配置文件
Autoware/ros/src/.config/rviz/ndt_mapping.rviz
峭状。
如果一切順利,應該可以在 rviz 中看到 pcd 地圖逐步建立的過程逼争。建圖不一定每次都成功优床,有時候 NDT 算法匹配的不好,地圖可能很混亂誓焦。我們的經(jīng)驗是胆敞,在收集 LIDAR 數(shù)據(jù)的時候車輛行駛慢一些,如果建圖不成功,就多嘗試幾次移层,每次都重新收集一次數(shù)據(jù)仍翰,另外,運行 Autoware 的電腦配置也應該足夠高幽钢,至少達到 Autoware 的推薦配置歉备,如下:
Recommended System Specifications
Number of CPU cores: 8
RAM size: 32GB
Storage size: 64GB+
生成路徑點
在 Runtime Manager -- Setup 界面中
TF
設置為 x: 1.2, y: 0, z: 2在 Map 界面加載剛才創(chuàng)建的 Point Cloud 地圖
-
在 Map 界面加載 TF 文件。這個文件可以在Autoware 官方 demo 文件中找到匪燕,可以用如下命令下載
wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_data.tar.gz
要加載的文件為
data/tf/tf.launch
蕾羊,但是要將其中的參數(shù)修改為name="world_to_map" args="0 0 0 0 0 0 /world /map 10"
這個文件中的 transform 是將 map 坐標系和 world 坐標系關(guān)聯(lián)起來。這里可以令 map 坐標系與 world 坐標系重合帽驯,也就是 tf 中 x,y,z,roll,pitch,yaw 都為 0.
在 Sensing 界面選擇
Point Downsampler
中的voxel_grid_filter
龟再。在 Computing 界面選擇
lidar_localizer
中的ndt_matching
,這里要注意尼变,要在 app 中選擇 initial pose利凑,數(shù)值全為 0.在 Computing 界面選擇
autoware connector
中的vel_pose_connect
,這里是將 ndt 估計出的 pose 和 velocity 名字改為 current_pose, current_velocity嫌术,以便后續(xù) pure-pursuit node 使用.在 Computing 界面選擇
waypoing_maker
中的waypoint_saver
哀澈,設置好路徑點文件的名字和保存路徑。再次在 Simulation 界面選擇數(shù)據(jù)包 lidar.bag度气,點擊 play割按。等待結(jié)束,點 stop磷籍。如果一切順利适荣,應該可以看到在指定位置生成了路徑點文件,擴展名為 .csv院领。如果對某些路徑點不太滿意弛矛,可以修改這個 csv 文件,調(diào)整路徑點的位置和期望速度比然。
路徑點跟蹤
最后要實現(xiàn)的就是讓汽車通過 LIDAR 定位丈氓,自動沿路徑點行駛。
在 Setup 界面設置 TF谈秫,與前邊相同
在 Map 界面加載 pcd 地圖以及 TF 文件扒寄,與前邊相同
在 LG 中啟動 LIDAR。
在 Sensing 界面選擇
Point Downsampler
中的voxel_grid_filter
拟烫。在 Computing 界面選擇
lidar_localizer
中的ndt_matching
,這里還是要注意迄本,在 app 中選擇 initial pose硕淑,數(shù)值全為 0,這是 NDT 點云匹配的初始位置。相應的置媳, LG 中的車輛也應該在 pcd 地圖的初始位置于樟,兩者相近才更容易實現(xiàn)點云匹配。在 Computing 界面選擇
autoware connector
中的vel_pose_connect
在 Computing 界面選擇
waypoing_maker
中的waypoint_loader
拇囊,加載剛才生成的路徑點文件迂曲。在 Computing 界面選擇
lane_planner
中的lane_rule
和lane_select
在 Computing 界面選擇
lattice_planner
中的lattice_velocity_set
和path_select
在 Computing 界面選擇
waypoint_follower
中的pure_pursuit
和twist_filter
如果一切順利,此時 LG 端的車輛會進入自動駕駛狀態(tài)寥袭,通過 LIDAR 定位路捧,沿給定的路徑點行駛。
總結(jié)
Autoware 基本操作非常簡單(如果你知道該選擇 Runtime Manager 中哪些功能的話)传黄。Autoware 本質(zhì)上是一大堆 ROS node 的集合杰扫,每個 node 包含了實現(xiàn)某些特定功能的算法程序。每次選擇 Runtime Manager 中的某個功能膘掰,實際上在 terminal 中都會有對應的 ROS 命令章姓。借助圖形界面,Autoware 隱藏了輸入命令的過程识埋。如果要通過 Autoware 深入學習自動駕駛凡伊,依然需要深入到 ROS node 層面,理清系統(tǒng)結(jié)構(gòu)窒舟,然后嘗試在某些 node 中改進算法或者加入自己全新的 node系忙,讓自動駕駛功能更完善!