>
返回

[数据集]Complex Urban Dataset with Multi-level Sensors from Highly Diverse Urban Environments

简单记录一下 Complex Urban Dataset 的论文和基本使用方法。

总览

数据集地址为:Complex Urban Dataset

论文中列举了一些其他的数据集的情况,如下图所示。相比于其他数据集,这个数据集会包含更复杂的场景,包括:多车道的马路、高楼大厦、密集分布的居民区。同时也包括一些具有挑战性的场景,如大楼阻挡后 GPS 信号消失等。

数据集中会包括两个 3D Lidar 和两个 2D Lidar。两个 3D Lidar 安装在车顶上车上的左右两侧(大概和车方向成 45°),以此来最大化覆盖范围。两个 2D 雷达分别安装车头和车尾,且朝向分别为朝下和朝上,同样也是为了数据覆盖的范围。同时为了估计汽车的位姿,还提供了一系列导航传感器,如光纤陀螺仪、IMU、GPS 和编码器。同时,数据集提供了使用导航传感器和 Lidar 以 SLAM 生成的汽车位姿作为 baseline,大致以 100 Hz 生成。以这个轨迹可以拼接点云生成 3D 地图,数据集中也提供了生成后的地图(以 las 格式)。可以使用 WebGL 应用查看。此外,数据集还提供了双目相机的数据作为额外补充。

数据集组成

数据采集车上配置的传感器以及采集车如下图所示:

不同模块的数据收集流程如下图所示,三台 PC 分别用于收集 Lidar、Camera 和导航数据,同一台 PC 的时间可以保持同步,而三台 PC 之间的时间也周期性的进行同步(所以可以认为所有数据的时间戳都是经过同步的):

这个数据提供了两个 3D Lidar(VLP-16),并设置以 10 Hz 的频率采集数据,此外还有两个 2D Lidar (SICK LMSS511) 以 100 Hz 收集数据。两个 2D Lidar 安装角度分别为向前和向后;向前的 Lidar 可以用来获取建筑物的结构和道路基础设施,向后的 Lidar 可以获取路面信息。此外,数据集中配备的双目相机可以以 10 Hz 获得前视图照片。

数据集中还包括两种精度的导航传感器,用来估计汽车姿态的传感器包括一个 IMU 和一个 3 自由度的光纤陀螺仪。其中,在 Baseline 中,光纤陀螺仪用来提供高精度旋转信息,而 IMU 可以获得多种信息,例如地磁信息、加速度以及角速度,但精度低于光纤陀螺仪。同样,数据集配有两个精度的 GPS 传感器,其中 VRS(Virtual Reference Station) GPS 通过和参考基站沟通且用来修正位置,全局位置精度大概为 10cm 以内。而消费级别的 GPS 没有类似的修正处理,因此误差可以达到几米。GPS 的测量值依赖卫星的数量以及周围的环境,在城市密集高楼下,VRS-GPS 也会较难估计位置。这个数据集还提供了一个轮式编码器来累计计算汽车行驶距离,以及一个高度传感器用来获取相对高度变化。

下图大致展示了,传感器之间的相对位置关系,传感器系统的中心在地面高度,位置在车子后轮轴的中心:

标定

标定包括:导航传感器标定、Lidar 标定、双目相机内外参标定

TODO

数据集说明

采集环境

数据集包括多样的城市环境,例如 10 车道的宽敞道路以及高楼之间的狭窄道路。下表列举了提供了不同序列及其平均 GPS 卫星数量、使用的传感器类型、以及汽车轨迹长度。

大致上,基于 GNSS 的建图系统需要 10 个以上的卫星才能实现比较精确的定位,但是在城市场景下基本很难达到,下图展示了序列 00 的轨迹,颜色表示该点平均接收到的卫星数量,可以看到只有少部分地区才能达到这个标准。

数据格式

数据集格式如下图所示,大致分为 4 个部分 calibration 包括所有传感器之间的外参标定结果、sensor_data 包含除相机图片以外的所有传感器信息,以及他们的时间戳,image 中包含双目相机的照片,vehicle_pose.csv 则是参考真值:

数据集中,

  • 3D Lidar:VLP-16 数据以 10 Hz 采集,并将每一次旋转的结束时间作为该帧的参考时间戳记录。传感器数据保存在 time_stamp.bin(文件名为该帧扫描对应的时间戳)。 二进制文件中,每个点包含三个笛卡尔坐标值以及一个反射值,即 (x, y, y, R),均为浮点数,笛卡尔坐标为 lidar 坐标系的局部坐标值。时间戳记录在 VLP_left/right_stamp.csv 中。
  • 2D Lidar: SICK LMS-511 以 100 Hz,数据存储在 SICK_Back/middle 文件夹中。每一帧扫描中的每个点保存了其原始消息,即距离和反射值,每一个光束对应的角度可以通过 LMS-511 的 FoV 和激光密度算出来。LMS-511 的 FoV 为 190°,从 -5° 到 185°,数据频率为 100 Hz,每两次测量之间角度差为 0.666°。
  • 双目照片:双目照片采集频率为 10 Hz,以无损 PNG 格式保存,且没有经过校正,需要经过一定过程转化成校正后的 RGB 图像。
  • 高度计数据:高度计信息保存在 altitude.csv,格式为 timestamp, altitude
  • 编码器数据:编码器数据的保存格式为累计的脉冲数,保存在 encoder.csv,格式为:timestamp, left count, right count
  • FOG 数据:两次测量之间的相对旋转记录在 fog.csv,格式为: timestamp, delta roll, delta pitch, delta yaw
  • GPS 数据:消费级 GPS 的全局位置测量数据记录在 gps.csv,格式为:timestamp, longtitude, altitude, 9-d vector,最后 9d 向量为位置的方差
  • VRS-GPS:高精度 GPS 测量值保存在 vrs_gps.csv,保存格式为:
    • timestamp
    • latitude, longtitude
    • x, y coordinate:采用墨卡托投影计算的笛卡尔坐标值
    • altitude
    • fix state:一个数字用来表示当前 VRS GPS 的状态:(1 – normal, 2 – DGPS, 4 – fix, 5 – float)
    • horizontal precision
    • latitude, longtitude std
    • heading validate flag
    • magnetic global heading
    • global heading
    • speed in knots
    • speed in km
    • GNVTG mode
    • orthometric altitude
  • IMU 数据:相邻测量之间的旋转位姿、陀螺仪数据和线性加速度以及磁力计数据保存在 imu.csv,格式为:
    • timestamp
    • quaternion x/y/z/w
    • eular x/y/z
    • Gyro x/y/z
    • Acceleration x/y/z
    • MegnetField x/y/z

Baseline

由于在复杂环境下即使使用 VRS-GPS 也很难获得精确位置,这个数据集采用了 iSAM 的方法融合多个约束来进行位姿估计,其使用了以下约束:

  • FOG 提供的相对旋转
  • 编码器提供的相对运动距离
  • VRS-GPS 在不确定度低时会用做部分约素
  • 由于在高楼环境导致 GPS 信号不好时会降低精度,因此在序列中引入回环,在回环中通过 ICP 计算相对位姿获得回环约素

整体优化图如下所示:

产生的数据在 vehicle_pose.csv,频率为 100 Hz。但是作者不建议用其来作为 ground truth,因为城市的复杂度会很大程度影响的精度

WebGL 3D demo 和 LAS 数据

数据集中提供了由 baseline 轨迹拼接成的点云地图,以 las 格式存储,可以用来作为先验信息进行定位或者地点识别。该数据可以用 WebGL 应用可视化,下面是一个例子:

开发工具

数据集配套有两个开发工具:

  • File Player:应用可以读取保存的
  • Data Viewer:应用可以用来可视化数据,可以展示点云,图片以及导航信息。

下面是其中一个序列用 File Player 播放的 topic:

topics:      /altimeter_data          3080 msgs    : irp_sen_msgs/altimeter     
             /clock                  29528 msgs    : rosgraph_msgs/Clock        
             /dsp1760_data          307986 msgs    : irp_sen_msgs/fog_3axis     
             /encoder_count          30798 msgs    : irp_sen_msgs/encoder       
             /gps/fix                 1540 msgs    : sensor_msgs/NavSatFix      
             /imu/data_raw           30800 msgs    : sensor_msgs/Imu            
             /imu/mag                30800 msgs    : sensor_msgs/MagneticField  
             /lms511_back/scan       30750 msgs    : irp_sen_msgs/LaserScanArray
             /lms511_middle/scan     30750 msgs    : irp_sen_msgs/LaserScanArray
             /ns1/velodyne_points     3054 msgs    : sensor_msgs/PointCloud2    
             /ns2/velodyne_points     3053 msgs    : sensor_msgs/PointCloud2    
             /odom                   30798 msgs    : nav_msgs/Odometry          
             /rosout                    23 msgs    : rosgraph_msgs/Log           (2 connections)
             /rosout_agg                 8 msgs    : rosgraph_msgs/Log          
             /vrs_gps_data             308 msgs    : irp_sen_msgs/vrs           
             /xsens_imu_data         30800 msgs    : irp_sen_msgs/imu

大致上都比较清晰,每个传感器消息的帧id对其对应传感器 id,如 /ns1/velodyne_points 的 frame id 为 left velodyne。其中,里程计信息由编码计算得到,发布的 frame id 为 map, child_frame_id 为 baselink。另外 baseline 的轨迹没有处理,所以如果需要的话需要自己写 node 进行发布。

潜在应用和结论

Built with Hugo
Theme Stack designed by Jimmy