KITTI数据集-RTABMAP

(1)数据集介绍:

  如图-1所示,KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光学镜头,以及1个GPS导航系统。具体的传感器参数如下[2] :

 

KITTI数据集-RTABMAP_第1张图片

图-2所示为传感器的配置平面图。为了生成双目立体图像,相同类型的摄像头相距54cm安装。由于彩色摄像机的分辨率和对比度不够好,所以还使用了两个立体灰度摄像机,它和彩色摄像机相距6cm安装。为了方便传感器数据标定,规定坐标系方向如下[2] : 
• Camera: x = right, y = down, z = forward 
• Velodyne: x = forward, y = left, z = up 
• GPS/IMU: x = forward, y = left, z = up 

KITTI数据集-RTABMAP_第2张图片

从KITTI主页可以发现,KITTI数据集主要包括三个部分,相机和激光数据,calibration文件,groundtruth位置。如何明白三个部分的数据构成和参数意义,将会是我们使用KITTI数据的关键。

1. 从KITTI数据到rosbag
为了在机器人导航系统中方便测试,先将KITTI图片数据转到ROS系统兼容的rosbag文件,以便于做出一个通用的数据集借口进行测试。

2. groundtruth真实地图
poses文件其实已经很方便的展示了相机的位姿,为了全面,也为了记录自己遇到问题过程,依然附上完整解释。

3. calib 相机参数
描述了相机的参数,以及传感器之间的关系,理解参数将有利于用于其他SLAM系统中,比如DSO,SVO,ORB-SLAM。

 

在calib文件中,有sequence 00-21序列,包括calib.txt 和 times.txt文件。
在sequence calib.txt 中,

P0: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 0.000000000000e+00 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 -3.861448000000e+02 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 4.538225000000e+01 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 -1.130887000000e-01 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 3.779761000000e-03
P3: 7.188560000000e+02 0.000000000000e+00 6.071928000000e+02 -3.372877000000e+02 0.000000000000e+00 7.188560000000e+02 1.852157000000e+02 2.369057000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 4.915215000000e-03
Tr: 4.276802385584e-04 -9.999672484946e-01 -8.084491683471e-03 -1.198459927713e-02 -7.210626507497e-03 8.081198471645e-03 -9.999413164504e-01 -5.403984729748e-02 9.999738645903e-01 4.859485810390e-04 -7.206933692422e-03 -2.921968648686e-01

0,1,2,3 代表相机的编号,0表示左边灰度相机,1右边灰度相机,2左边彩色相机,3右边彩色相机。Tr表示将velodyne坐标系转换到左边相机系统坐标

根据calib.txt相机投影矩阵可以得到相机内参

b(i) 代表其他相机相对于cam 0的偏移。

故此可以得到相机参数:内参矩阵:

fu = 718.856
fv = 718.856
cu = 607.1928
cv = 185.2157

(2)KITTI image 序列转为rosbag 文件

利用python将kitti的数据转为rosbag, 仅测试于grayscale数据集,测试过程如下.
python代码请见:
http://git.oschina.net/taiping.z.git/image2rosbag_KITTIodometry

1. 在KITTI网页下载odometry dataset (grayscale, 22GB), 并解压.

2. 指定image路径, 生成的bag名,时间戳路径, 然后运行.

python img2bag_kitti_odo.py /your directory/KITTI/dataset/sequences/00/image_0 kitti_00_l.bag /your directory/KITTI/dataset/sequences/00/times.txt

3. 查看rosbag,并测试结果

查看rosbag

rosbag info image_0 kitti_00_l.bag
--------
path:        kitti_00_l.bag
version:     2.0
duration:    7:50s (470s)
start:       Jan 01 1970 08:00:00.00 (0.00)
end:         Jan 01 1970 08:07:50.58 (470.58)
size:        2.0 GB
messages:    4541
compression: none [2271/2271 chunks]
types:       sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743]
topics:      camera/image_raw   4541 msgs    : sensor_msgs/Image

在ORBSLAM2上测试

rosbag play --pause kitti_00_l.bag
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml

注意此处我们已经将rostopic设置为了camera/image_raw.

update Sep.23 2017

4. image to compressed image

压缩图片以便存储

rosrun image_transport republish raw in:=(in_base_topic) compressed out:=(out_base_topic)

image_transport republic 压缩或者解压视频信息存储在rosbag.

你可能感兴趣的:(KITTI数据集-RTABMAP)