1. 程式人生 > >Kitti資料集使用之坑

Kitti資料集使用之坑

KITTI資料集簡介與使用: https://blog.csdn.net/solomon1558/article/details/70173223

 

接下來是我使用時遇到的坑:

一、label檔案中ry的含義

按照文件中圖示,ry應該是小車朝向和相機座標系z軸的夾角,但是事實上並不是,而是和相機座標系x軸的夾角,大家可以自行驗證。

二、座標系的轉換

這個坑主要還是我個人學藝不精造成的。我欲將某點從cam座標系轉到world座標系,於是就寫了如下程式碼:

cam2toWorld_Pose = cam2toImu_Pose*imu2base_Pose*Pose_base2world_map[frame_id];

vector_world = cam2toWorld_Pose*vector_cam2;

事實上我把轉換矩陣的相乘順序搞反了,實際應當這樣:

cam2toWorld_Pose = Pose_base2world_map[frame_id]*imu2base_Pose*cam2toImu_Pose;   

vector_world = cam2toWorld_Pose*vector_cam2;

我居然認為矩陣乘法可以交換,唉,數學學不好,demo跑到老。

順便說一句,我只所以沒注意到我把順序搞反了是因為我之前這樣相反地用起來並沒有出錯,那是因為我之前使用時幾個座標系之間幾乎只有平移而沒有旋轉。

三、使用kittie2bag將資料集轉為bag後tf的使用

貌似tf功能包的api不好用,總是延遲,而且一旦降低播放速度就極其容易出錯。於是乎我乾脆,直接把/tf當作節點來訂閱使用。/tf和/tf_static中訊息的格式以及內容如下所示:

四、我懷疑kitti的tf中的軌跡並不準

這一點我不確定,歡迎大家指正。

五、向量的座標系變換

將一個向量變換到另一個座標系上?別想了!要變換隻能變換某個點,把向量當作變換物件註定是要坑自己的,點才可以作為變換物件!