數據採集平臺: 1個彩色攝像頭立體聲對, 1個灰度攝像頭立體聲對, 1個64線激光雷達, 1個GPS/IMU
先上採集裝置實物圖:
座標系統的定義如下, 其中方向以司機看向前方道路的視角給出.
Camera: x: right, y: down, z: forward
Velodyne: x: forward, y: left, z: up
GPS/IMU: x: forward, y: left, z: up
所有的座標系統遵循右手系, 右手系的定義如下: 左圖爲左手系, 右圖爲右手系. 對於右手系,右手拇指在 Z 軸方向爲正, 手掌的彎曲表示從 X 軸到 Y 軸的運動.
傳感器裝置平面圖如下: 紅色標註的爲傳感器, 藍色表示傳感器之間的轉換
相機的佈置:
彩色和灰度相機相互靠近(約6釐米), 兩種立體設備的基線約爲54釐米. 我們選擇這樣的設置, 以便爲左右相機, 可以提供顏色和灰度信息. 雖然彩色相機(顯然)帶有顏色信息, 但灰度相機圖像具有更高的對比度和更少的噪聲. 所有攝像機相對於Velodyne激光掃描儀均以約10 Hz的頻率同步. 雷達採集數據時,是繞着豎直軸旋轉掃描,只有當雷達旋轉到與相機的朝向一致時會觸發相機採集圖像. 我們使用時直接使用官網給出的同步且校準後的數據即可,它已將雷達數據與相機數據對齊,也就是可以認爲同一文件名對應的圖像數據與雷達點雲數據屬於同一個場景.
數據的描述:
序列的所有傳感器讀數都壓縮到一個名爲date_drive的文件中。其中日期和驅動器是記錄日期和序列號的佔位符。目錄結構如下圖所示.
時間戳存儲在 timestamp.txt 中, 相應的數據子文件中提供每幀傳感器的讀數. txt 文件中的每一行都是由日期和時間 (以小時, 分鐘, 秒爲單位)組成的. 由於激光雷達具有滾動快門, 對這個傳感器提供 3 個時間戳. 一個旋轉的起始位置, 一個旋轉的結束位置和一個用於激光雷達和相機朝向一致時觸發相機採集圖像的時間.
每個傳感器流存儲的數據格式如下:
Images: 彩色和灰度圖像都使用8位PNG文件進行無損壓縮存儲.
OXTS: 對於每一幀,我們在一個文本文件中存儲了30個不同的GPS/IMU值:地理座標包括海拔、全球方向、速度、加速度、角速率、精度和衛星信息。加速度和角速度都是通過兩個座標系來確定的,一個是附着在車身上的(x, y, z),另一個是映射到該位置的地表切平面上(f, l, u).
Velodyne: Velodyne掃描存儲爲浮點二進制文件. 每個點存儲有它的座標 (x, y, z) 和一個額外的反射值 r.
同步:
爲了同步傳感器, 使用激光雷達的時間戳作爲參考, 並考慮每一個自旋作爲一幀. 在激光雷達掃描儀的底部安裝了一個簧片觸點, 當連續旋轉的激光雷達旋轉到與相機的朝向一致時,觸發相機採集圖像.這最小化了動態對象在範圍和圖像觀測上的差異.
但是, GPS/IMU不能這樣同步, 相反,由於它以100赫茲的頻率提供更新,我們收集與激光掃描儀時間戳最接近的特定幀的信息,導致GPS/IMU和camera/Velodyne數據包之間最壞情況下的時間差爲5毫秒。注意,所有的時間戳都提供了這樣的信息,即任何時候的定位信息都可以很容易地通過插值得到。
相機的校準:
每天的校準參數以行爲主順序存儲在calib_cam_to_cam.txt中,使用如下表示法:
,是相機的索引. 0 代表左邊的灰度相機, 1 代表右邊的灰度相機, 2 代表左邊彩色相機, 3 代表右邊彩色相機. 當使用同步和矯正過的數據時,只有帶有 rect 下標的變量是相關的. 但是你最有可能使用到的是P_rect_xx. 矯正旋轉矩陣用於使圖像平面共面.
將校準過 (旋轉過) 的相機座標系中的點 投射成第 i 個相機圖片的點 . 其公式如下:
表示相對於參考相機 0 的基線. 爲了將參考相機座標系中的三維點 x 投影到第 i 個圖像平面上的點 y, 參考相機的校準旋轉矩陣 也必須考慮.
注意: 在這裏,通過添加第四個零行和零列, 被擴展成了 4X4的矩陣. 並且設置
從Velodyne 座標系到 相機座標系的剛體變換存在於 calib_velo_to_cam.txt 文件中, 如下公式將 Velodyne 座標系中的點投射到 第 i 個相機圖片中.
Kitti官網 devkit 中的一個例子:
example transformations
-----------------------
As the transformations sometimes confuse people, here we give a short
example how points in the velodyne coordinate system can be transformed
into the camera left coordinate system.
In order to transform a homogeneous point X = [x y z 1]' from the velodyne
coordinate system to a homogeneous point Y = [u v 1]' on image plane of
camera xx, the following transformation has to be applied:
Y = P_rect_xx * R_rect_00 * (R|T)_velo_to_cam * X
To transform a point X from GPS/IMU coordinates to the image plane:
Y = P_rect_xx * R_rect_00 * (R|T)_velo_to_cam * (R|T)_imu_to_velo * X
The matrices are:
- P_rect_xx (3x4): rectfied cam 0 coordinates -> image plane
- R_rect_00 (4x4): cam 0 coordinates -> rectified cam 0 coord.
- (R|T)_velo_to_cam (4x4): velodyne coordinates -> cam 0 coordinates
- (R|T)_imu_to_velo (4x4): imu coordinates -> velodyne coordinates
Note that the (4x4) matrices above are padded with zeros and:
R_rect_00(4,4) = (R|T)_velo_to_cam(4,4) = (R|T)_imu_to_velo(4,4) = 1.
看到一個不錯的解釋照抄如下, 鏈接爲: https://www.cnblogs.com/llfctt/p/9475659.html
注: 本博客只爲記錄學習過程,留着複習.