1. 首記
相信許多剛開始玩無人駕駛的人都用過Autoware,對runtime manager都比較熟悉,雖然可以通過各種渠道了解到有些設置,甚至有些設置的app下參數的含義,但是,在真車的使用過程中,不是每個人能將這些配置,以及配置下的參數設置正確。我最近剛剛參加Udacity、PIX以及Autoware三方發起的培訓活動,培訓針對Autoware最基本的“可以讓車跑起來”這件事的最基本設置(包括設置勾選與參數設置)做了詳細的講解,對於Autoware的初學者真的有很大幫助,通過這次培訓,我們培訓team可以讓一部真車沿着地圖上的waypoints跑起來,收獲很大。
我會把這次培訓針對Autoware的部分充分整理出來,供大家參考,有真車的人可以試試。
我用到的數據的地址為:鏈接: https://pan.baidu.com/s/10oW1THdu7_g5-7VWoFHq6Q 提取碼: qcum
2. 致謝
感謝我們team中的勤勞的老司機理想、聰明伶俐可愛的geek明明、一直默默付出的Miss黃為我們成功完成項目作出的努力。感謝Udacity的腿哥在背后的付出與支持,感謝PIX辛勤的為我們服務,感謝Autoware的導師Alex對我們的指導,Alex對我提出的問題總是能給予詳細耐心的回答。
特別感謝曾sir,我的整理是在曾sir的前期工作之上的。曾sir的博客地址為:dowson.live
3. 地圖構建
玩自動駕駛的都應該明白為什么要構建地圖,這里就贅述了。直接上操作
3.1. 首先啟動runtime manager,進入autoware/ros/文件夾運行
./run
3.2. 啟動激光雷達
(1)針對velodyne 多線lidar
如果你有velodyne激光可以啟動默認配置:[Sensing] 頁面下 [Lidars] 選項下針對你的velodyne選擇,velodyne激光對應的發布的點雲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路徑下的配置文件(自己多線激光雷達可以針對這個配置改寫),退出 [config],勾選 [velodyne VLP-16] 選項(一般的操作都是先修改config或者app下的配置或參數文件,然后勾選選項)。
這是你可以通過,命令
rostopic echo /points_raw
查看是否有點雲數據輸出。
當然也可以通過autoware提供的 [Topics] 工具進行查看,這里介紹一下這個工具。[Topics] 工具不僅可以查看Topic輸出,還可以查看Topic的一些詳細信息。
以上左圖是 [Topics] 工具,左側是Topic,新打開一個節點后可以點擊 [Refresh],會刷新Topic。如果查看某個topic,比如,上圖我點開了左側的/points_raw topic,勾選 [echo],對話框中會顯示topic中的內容,[Info] 中會顯示topic(/points_raw)對應的類型,以及發布者和訂閱者。
(2)針對其他品牌多線lidar
如果你有其他品牌的激光,他們發布的topic不是/velodyne_packets,且frame_id同樣不對應,這時可以自己寫個程序轉一下,參照:https://www.cnblogs.com/hgl0417/p/11067660.html。然后單獨運行你的lidar driver node,將你的點雲數據模擬成velodyne數據。此時,不需要點選runtime manager上的lidar配置文件(每個配置文件對應一個package或者node,意義在於將對應的topic發布,此時你已經發布了topic,所以不需要在點選上述配置文件)。
3.3. 錄制點雲數據
點擊runtime manager右下角 [ROSBAG] 按鈕,在彈出的對話框中點擊下方點擊 [Refresh] 按鈕刷新話題列表,找到/points_raw 並勾選,如下圖。
老司機開車,點擊 [Start] 按鈕,等數據錄完,點擊 [Stop],此時數據會保存在autoware/ros目錄下。此時,數據錄制完畢。
3.4. 回放點雲數據
為了查看數據錄制效果,需要數據回放數據。
(1)點擊進入 [Simulaton] 頁面,點擊界面右上方 [Ref] 按鈕,加載之前錄制的 bag 文件。
(2)點擊 [Play] 按鈕播放數據,然后再點擊 [Pause] 暫停播放。此時你會發現右邊進度條有數值出現,如下所示。
注意:在進行此步驟的時候確保之前啟動的 [Sensing] 下的傳感器驅動關閉,或者關閉自己的lidar driver。
(3)右下方的 Rviz 按鈕,啟動 Rviz 可視化窗口。在 Rviz 界面中左菜單欄中找到 Fixed Frame, 在該欄目中修改 world 為 velodyne。點擊左下角 [Add] 按鈕,加載 By Topic 下 /points_raw 話題的 PointCloud2 選項。
點擊 runtime manager 下的 [Simulation] 菜單的 [Pause] 按鈕,此時在 Rviz 中可以看到之前記錄的數據被顯示出來。如下所示。
3.5. 建圖
這里,需要先講一下autoware的建圖用坐標系之間的關系,基本坐標系有四類:分別為世界坐標系:world;地圖坐標系:map;車的坐標系base_link;傳感器坐標系:velodyne。他們之間的轉換關系,如下:
從world到map的坐標系轉換與從base_link到velodyne的坐標系轉換是固定的,用ROS的TF即可。從map到base_link的映射就需要scan-to-map的算法,autoware在建圖采用的是ndt matching。
(1)設置從base_link到velodyne坐標系的TF。
在 [Setup] 菜單中,確保 [Localizer] 下選項為 [Velodyne],在 [Baselink to Localizer] 中設置好各個參數之后點擊 TF 按鈕,其中x、y、z、yaw、pitch、roll表示真車雷達中心點與車身后軸中心點的相對位置關系(右手坐標系,真車后車軸為原點),此時可以點擊[Vehicle Model],如果[Vehicle Model]為空,那么會加載一個默認模型(在rviz顯示時,如果有激光雷達數據,車輛會顯示為黑色)。如下所示。
(2)設置map到base_link轉換
在 [Compulting] 菜單欄中找到 [lidar_localizer]下的 [Ndt_Mapping] 選項,設置 [app],並勾選。Ndt_Mapping會有一些設置需要注意一下,如下圖:
參數用默認,如果有GPU(一定有,因為沒有CUDA不能安裝autoware),可以選擇 [pcl_anh_gpu]。
(3)設置從world到map轉換
點擊 [Map] 頁面,點擊 [TF] 的 [ref] 選擇 autoware/ros/src/.config/tf/tf_local.launch 文件,這是加載默認world到map的坐標轉換,打開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的參數“0 0 0 0 0 0 /world /map 10”表示:從/world坐標系轉換到/map坐標系的x, y, z, roll, pitch, yaw轉換,且頻率為10Hz。
點擊 [TF] 按鈕,如下圖:
(4)制作點雲地圖
和回放點雲數據一樣,點擊進入 [Simulaton] 頁面,點擊界面右上方 [Ref] 按鈕,加載之前錄制的 bag 文件,點擊 [Play] 按鈕播放數據,然后再點擊 [Pause] 暫停播放。點擊runtime manager右下方的 [Rviz] 按鈕,啟動 Rviz 可視化窗口。加載Rviz的配置文件,路徑為:autoware/ros/src/.config/rviz/ndt_mapping.rviz。加載后rviz的配置文件后,回到runtime manager的 [Simulaton] 頁面,再次點擊 [Pause] 開始播放,這是可以看到Rviz 可視化窗口顯示如下:
可以看到有一輛黑色小車在跑,而且它的激光雷達數據在RViz中不斷累加。
注意:由於rviz會占用大量的系統資源,所以在見圖過程中不需要打開rviz的顯示,只需要查看terminal上的顯示即可,如下所示
注意:上圖的最下面的(Process/Input): (1688 / 1697),這兩個數字前一個數字表示正在處理的點雲幀數,后一個表示加載的點雲幀數。如果兩個數字相差過大,會出現運行錯誤。我們使用的gpu是gtx1080,根據曾sir的描述,針對gtx1080,如果前后兩個數字相差1000以上,就要按[Simulaton] 頁面的[Pause] 按鍵,暫停加載,等待一下正在處理的數字,兩個數字重新接近之后,可以再次按 [Pause] 按鍵運行。
運行停止,表示地圖生成完畢。
(5)保存點雲地圖
打開 [Compulting] 下的 [Ndt_Mapping] 選項的 [app],如下所示:
點擊 [ref] 選擇保存地圖的路徑,將 [Filter Resolution] 參數設置為0.2,點擊 [PCD OUTPUT]按鈕,開始保存pcd文件。此時,可以在保存的路徑里看到一個.pcd文件,該文件就是地圖文件。
(6)查看地圖文件
選擇runtime manager的 [Map] 菜單,點擊 [Point Cloud] 按鈕的 [ref],加載剛才保存.pcd文件,並點擊 [Point Cloud] 按鈕,進度條顯示OK,則加載完畢,如下所示:
點擊runtime manager 右下角的 [RViz] ,在RViz顯示界面點擊左下角的 [Add] 按鈕,通過 [By Topic] 找到/points_map 並打開,在rviz中顯示如下:
到此為止,點雲地圖制作完畢。
(7)點雲地圖評價
總結為一下幾點:
- 地圖是否扭曲變形
- 地圖在閉合處z方向是否對齊
- 掃描在牆壁上的點是否很粗
- 掃描在樹木上的點是否有從影
引用:
dowson.live
原創文章,轉載請引用。