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

登龍發表於2020-06-11

一、安裝 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 相機資料融合

五、標定資源

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

另外 ROS 融合節點的程式我還在完善中,建議關注我的 Github 專案,後續會上傳節點程式碼:AI-Notes: lidar_camera_fusion,如果標定遇到問題,可以公眾號後臺給我發訊息,或者直接在部落格平臺留言,我看到會盡快回復的,不過公眾號應該回復的快些,哈哈 :)

相關文章