天天看點

Autoware 标定工具 Calibration Tool Kit 聯合标定 Robosense-16 和 ZED 相機!

一、安裝 Autoware & ZED 内參标定 & 外參标定準備

之前的這篇文章:Autoware 進行 Robosense-16 線雷達與 ZED 雙目相機聯合标定! 記錄了我用 Autoware 标定相機和雷達的過程,雖然用的不是 Calibration Tool Kit 工具,但是部落格裡面的以下章節也适用本次的 Calibration Tool Kit :

  • 一、編譯安裝 Autoware-1.10.0
  • 二、标定 ZED 相機内參
  • 3.1 聯合标定準備

如果你是第一次看這篇 Calibration Tool Kit 聯合标定的部落格,建議先按照之前的部落格安裝 Autoware、标定 ZED 内參和做好外參标定的準備(标定闆,錄制标定包等),最好用上篇部落格的方法标定一次。

這篇部落格我就直接開始介紹使用 Calibration Tool Kit 标定雷達和相機外參的過程!

二、Calibration Tool Kit 聯合标定雷達和 ZED 相機

2.1 啟動 Autoware

先啟動 Autoware-1.10.0,啟動過程中可能需要輸入 root 密碼:

# 1. 進入 autoware 的 ros 目錄下
cd autoware-1.10.0/ros

# 2. source 環境,zsh 或 bash
source devel/setup.zsh[.bash]

# 3. 啟動主界面
./run
           

切換到 Sensing 頁籤:

2.2 回放雷達相機 Bag

這裡回放時需要更改雷達的話題為

/points_raw

,因為這個工具訂閱的雷達主題是固定的:

rosbag play --pause xxx.bag /rslidar_points:=/points_raw
           

我用的 Robosense 雷達,釋出的話題是

rslidar_points

,這個回放預設暫停,防止跑掉資料,按空格繼續或暫停。

2.3 啟動 Calibration Tool Kit

點選 Calibration Tool Kit 啟動标定工具:

選擇圖像輸入話題,我隻用的 ZED 的左圖像話題,如果沒有相機話題,確定前面你已經回放了 bag,選擇好了點選 OK 确定:

選擇标定類型為相機到 velodyne 雷達的标定(對 Robosense 雷達也适用,隻不過需要更改點雲的釋出話題),點選 OK 确定:

進入标定主界面 MainWindow:

配置标定闆棋盤格參數:

  • Pattern Size(m):标定闆中每個格子的邊長,機關 m,我的标定闆每個格子長 0.025 m
  • Pattern Number:标定闆長X寬的單元格數量 - 1,我的标定闆是長有 12 個格子,寬有 9 個,是以填 11x8,減一是因為标定檢測的是内部角點

設定好了後,重新開機 Calibration Tool Kit,點選左上角 Load 導入第一步标定的相機内參 YAML 檔案,但是這個工具隻能導入 YML 格式的檔案:

是以需要把前面的内參标定檔案拷貝一份,修改格式為 yml 即可,YAML 和 YML 其實是一樣的:

修改好了之後,再點選 Load 加載 yml 格式的内參檔案即可:

選擇不加載相機和雷達的标定資料,因為我是直接回放 Bag 标定:

到這裡都設定好了,下面開始外參标定過程!

2.4 标定過程

打開回放 bag 終端,按空格繼續回放資料,主界面會顯示相機圖像:

但是右邊的點雲視窗沒有顯示資料,需要我們調整視角才可以,視角的調整方法如下(文末有個 pdf 專門介紹):

簡單解釋下,建議直接操作,很容易:

  • 移動點雲:上下左右方向鍵、PgUp、PgDn
  • 旋轉點雲:a、d、w、s、q、e
  • 切換模式:數字 1 和數字 2
  • 視角縮放:減号縮小、加号放大
  • 點雲大小:o 鍵使用小點雲、p 使用大點雲
  • 改變點雲視窗背景顔色:b

我使用的使用直接按數字 2 切換模式就能看到點雲了,其實這些模式我也不是很懂。。。:

如果需要更換背景,按 b 鍵改變為大緻灰色即可:

我這裡就不改背景了,黑色也挺好看出點雲的,然後使用上面的視角操作方法,把點雲中的标定闆放大到中心位置:

之後點選右上角的 Grab 捕獲目前幀的圖像和點雲,使用

-

+

縮放視角:

如果你點選 grab 沒反應很正常,可能是棋盤格離得太遠或者模糊了,你多試幾個位置應該就能捕獲到,我回放一個 Bag 也就捕獲了 9 張左右。

然後把滑鼠放到右下角捕獲的點雲視窗,選擇一個棋盤格的中心位置區域,關于這個區域的選擇,我是參考這個标定工具的文檔例子(文末有連結)選擇的,大概就是标定闆的中心位置選擇一個圓形的區域,盡量保證向外側的平面法向量垂直于标定闆平面:

滑鼠左鍵點選選擇,右鍵點選取消,我的選擇如下,可以參考:

然後重複以上步驟,不斷回放暫停,Grab 捕獲單幀圖像和點雲(多選一些),選擇點雲區域,直到回放結束,接着就可以點選右上角的「Calibrate」按鈕計算外參矩陣(左上角顯示),然後再點選「Project」檢視标定效果:

切換左下方的單幀圖檔和點雲視窗,捕獲的每一幀圖像和點雲都可以看到對齊效果,另外左邊也能看到标定的誤差,當然是越小越好,我目前的标定效果一般,後續打算再标幾次。

标定好之後,點選左上角「save」儲存外參矩陣即可,檔案名建議帶上時間戳友善識别:

最後的外參數檔案如下,這個檔案包含了相機内參和相機到雷達的外參:

以上就是我的雷達相機聯合标定過程!希望能幫助正在标定雷達和相機的同學 _!

三、标定結果測試

可以直接用之前部落格 Autoware 進行 Robosense-16 線雷達與 ZED 雙目相機聯合标定! 中的「四、标定結果測試」一節介紹的步驟來測試融合效果:

前幾天我把 ROS 的點雲和圖像的融合節點也調試好了,是以直接在程式裡面加載了外參矩陣,然後做了個初步的融合,效果如下:

我也錄了個融合視訊,可以看看:B 站:Robosense-16 雷達與 ZED 相機資料融合。

五、标定資源

以下是我标定過程中收集的一些好的資料,這裡也分享給大家:

  • 标定工具的使用文檔在這裡:CalibrationToolkit_Manual.pdf
  • 這裡還有個視訊,有條件的同學可以看看:Yutobe:Autoware 标定相機和雷達

另外 ROS 融合節點的程式我還在完善中,建議關注我的 Github 項目,後續會上傳節點代碼:AI-Notes: lidar_camera_fusion,如果标定遇到問題,可以公衆号背景給我發消息,或者直接在部落格平台留言,我看到會盡快回複的,不過公衆号應該回複的快些,哈哈 :)