1. 程式人生 > >Autoware 標定工具 Calibration Tool Kit 聯合標定 Robosense-16 和 ZED 相機!

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

## 一、安裝 Autoware & ZED 內參標定 & 外參標定準備 之前的這篇文章:[Autoware 進行 Robosense-16 線雷達與 ZED 雙目相機聯合標定!](https://dlonng.com/posts/autoware-calibr-1) 記錄了我用 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 密碼: ```shell # 1. 進入 autoware 的 ros 目錄下 cd autoware-1.10.0/ros # 2. source 環境,zsh 或 bash source devel/setup.zsh[.bash] # 3. 啟動主介面 ./run ``` 切換到 Sensing 選項卡: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/sensing.png) ### 2.2 回放雷達相機 Bag 這裡回放時需要更改雷達的話題為 `/points_raw`,因為這個工具訂閱的雷達主題是固定的: ```shell rosbag play --pause xxx.bag /rslidar_points:=/points_raw ``` 我用的 Robosense 雷達,釋出的話題是 `rslidar_points`,這個回放預設暫停,防止跑掉資料,按空格繼續或暫停。 ### 2.3 啟動 Calibration Tool Kit 點選 Calibration Tool Kit 啟動標定工具: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/calibration_tool_kit.png) 選擇影象輸入話題,我只用的 ZED 的左影象話題,如果沒有相機話題,確保前面你已經回放了 bag,選擇好了點選 OK 確定: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/left_imageraw.png) 選擇標定型別為相機到 velodyne 雷達的標定(對 Robosense 雷達也適用,只不過需要更改點雲的釋出話題),點選 OK 確定: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/camera_velodyne.png) 進入標定主介面 MainWindow: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/main_window_config.png) 配置標定板棋盤格引數: - Pattern Size(m):標定板中每個格子的邊長,單位 m,我的標定板每個格子長 0.025 m - Pattern Number:標定板長X寬的單元格數量 - 1,我的標定板是長有 12 個格子,寬有 9 個,所以填 11x8,減一是因為標定檢測的是內部角點 設定好了後,重啟 Calibration Tool Kit,點選左上角 Load 匯入第一步標定的相機內參 YAML 檔案,但是這個工具只能匯入 YML 格式的檔案: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/only_yml.png) 因此需要把前面的內參標定檔案拷貝一份,修改格式為 yml 即可,YAML 和 YML 其實是一樣的: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/yaml2yml.png) 修改好了之後,再點選 Load 載入 yml 格式的內參檔案即可: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/load_yml.png) 選擇不載入相機和雷達的標定資料,因為我是直接回放 Bag 標定: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/load_camera_data_no.png) ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/load_cloud_data_no.png) 到這裡都設定好了,下面開始外參標定過程! ### 2.4 標定過程 打開回放 bag 終端,按空格繼續回放資料,主介面會顯示相機影象: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/calibr_play_bag.png) 但是右邊的點雲視窗沒有顯示資料,需要我們調整視角才可以,視角的調整方法如下(文末有個 pdf 專門介紹): ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/basic_operations.png) 簡單解釋下,建議直接操作,很容易: - 移動點雲:上下左右方向鍵、PgUp、PgDn - 旋轉點雲:a、d、w、s、q、e - 切換模式:數字 1 和數字 2 - 視角縮放:減號縮小、加號放大 - 點雲大小:o 鍵使用小點雲、p 使用大點雲 - 改變點雲視窗背景顏色:b 我使用的使用直接按數字 2 切換模式就能看到點雲了,其實這些模式我也不是很懂。。。: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/mode_2.png) 如果需要更換背景,按 b 鍵改變為大致灰色即可: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/change_bgcolor.png) 我這裡就不改背景了,黑色也挺好看出點雲的,然後使用上面的視角操作方法,把點雲中的標定板放大到中心位置: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/change_cloud_view2.png) 之後點選右上角的 Grab 捕獲當前幀的影象和點雲,使用 `-` 和 `+` 縮放視角: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/grab_3.png) 如果你**點選 grab 沒反應**很正常,可能是棋盤格離得太遠或者模糊了,你多試幾個位置應該就能捕獲到,我回放一個 Bag 也就捕獲了 9 張左右。 然後把滑鼠放到右下角捕獲的點雲視窗,選擇一個棋盤格的中心位置區域,關於這個區域的選擇,我是參考這個標定工具的文件例子(文末有連結)選擇的,大概就是標定板的中心位置選擇一個圓形的區域,儘量保證向外側的平面法向量垂直於標定板平面: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/CalibrationToolKitExample.png) 滑鼠左鍵點選選擇,右鍵點選取消,我的選擇如下,可以參考: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/select_cloud2.png) 然後重複以上步驟,不斷回放暫停,Grab 捕獲單幀影象和點雲(多選一些),選擇點雲區域,直到回放結束,接著就可以點選右上角的「Calibrate」按鈕計算外參矩陣(左上角顯示),然後再點選「Project」檢視標定效果: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/result_4.png) 切換左下方的單幀圖片和點雲視窗,捕獲的每一幀影象和點雲都可以看到對齊效果,另外左邊也能看到標定的誤差,當然是越小越好,我目前的標定效果一般般,後續打算再標幾次。 標定好之後,點選左上角「save」儲存外參矩陣即可,檔名建議帶上時間戳方便識別: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/save.png) 最後的外引數檔案如下,這個檔案包含了相機內參和相機到雷達的外參: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/ext_mat.png) 以上就是我的雷達相機聯合標定過程!希望能幫助正在標定雷達和相機的同學 ^_^! ## 三、標定結果測試 可以直接用之前部落格 [Autoware 進行 Robosense-16 線雷達與 ZED 雙目相機聯合標定!](https://dlonng.com/posts/autoware-calibr-1) 中的「**四、標定結果測試**」一節介紹的步驟來測試融合效果: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/cali_result_test.png) 前幾天我把 ROS 的點雲和影象的融合節點也除錯好了,所以直接在程式裡面載入了外參矩陣,然後做了個初步的融合,效果如下: ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/blog/ros_fusion_result.png) 我也錄了個融合視訊,可以看看:[B 站:Robosense-16 雷達與 ZED 相機資料融合](https://www.bilibili.com/video/BV1Sp4y1S74w)。 ## 五、標定資源 以下是我標定過程中收集的一些好的資料,這裡也分享給大家: - 標定工具的使用文件在這裡:[CalibrationToolkit_Manual.pdf](https://github.com/DLonng/AI-Notes/tree/master/SensorFusion/fusion_ws/src/calibration_publisher/docs) - 這裡還有個視訊,有條件的同學可以看看:[Yutobe:Autoware 標定相機和雷達](https://www.youtube.com/watch?v=pfBmfgHf6zg) 另外 ROS 融合節點的程式我還在完善中,建議關注我的 Github 專案,後續會上傳節點程式碼:[AI-Notes: lidar_camera_fusion](https://github.com/DLonng/AI-Notes/tree/master/SensorFusion/fusion_ws/src/lidar_camera_fusion),如果標定遇到問題,可以公眾號後臺給我發訊息,或者直接在部落格平臺留言,我看到會盡快回復的,不過公眾號應該回復的快些,哈哈 :) ![](https://dlonng.oss-cn-shenzhen.aliyuncs.com/yingliu_code/yinliu_c