comma2k19

commaaiMIT长期未更新

面向融合位姿估计与建图算法开发验证的开放驾驶数据集,提供真实道路采集的传感器数据,适合做 SLAM 和定位研究。

A driving dataset for the development and validation of fused pose estimators and mapping algorithms

暂无版本664star128fork同步于 2026-11-07 07:32 UTC

怎么上手

由 README 提炼,执行前请确认
pip install -r requirements.txt
硬件要求按 README 说明

README 未说明;数据由 comma EON 采集,含面向道路的相机、手机 GPS、温度计和 9 轴 IMU,并通过 comma grey panda 采集原始 GNSS 与 CAN 数据

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

comma.ai 开源的加州 280 高速驾驶数据集,用于融合位姿估计与建图算法的开发验证

面向融合位姿估计与建图算法开发验证的开放驾驶数据集,提供真实道路采集的传感器数据,适合做 SLAM 和定位研究。

核心能力

  • 包含 2019 段、每段 1 分钟的高速驾驶数据
  • 提供相机、GPS、温度计与 9 轴 IMU 多传感器数据
  • 附带由 Laika 处理的全局位姿(位置与朝向)估计
  • 提供 processed_log 与 global_pos 的 numpy 数组格式
  • 含示例 notebook 与位置基准测试代码

容易踩的坑

完整数据集约 100GB,需从 academictorrents 分块下载;示例代码仅在 Python 2.7 和 3.6 上测试过;ExFat/NTFS 等微软文件系统不允许文件名含竖线字符,需用 utils/unzip_msft_fs.py 解压替换

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    comma2k19

    comma.ai presents comma2k19, a dataset of over 33 hours of commute in California's 280 highway. This means 2019 segments, 1 minute long each, on a 20km section of highway driving between California's San Jose and San Francisco. comma2k19 is a fully reproducible and scalable dataset. The data was collected using comma EONs that has sensors similar to those of any modern smartphone including a road-facing camera, phone GPS, thermometers and 9-axis IMU. Additionally, the EON captures raw GNSS measurements and all CAN data sent by the car with a comma grey panda.

    Alt

    Here we also introduced Laika, an open-source GNSS processing library. Laika produces 40% more accurate positions than the GNSS module used to collect the raw data. This dataset includes pose (position + orientation) estimates in a global reference frame of the recording camera. These poses were computed with a tightly coupled INS/GNSS/Vision optimizer that relies on data processed by Laika. comma2k19 is ideal for development and validation of tightly coupled GNSS algorithms and mapping algorithms that work with commodity sensors.

    Alt

    Publication

    For a detailed write-up about this dataset, please refer to our paper. If you use comma2k19 or Laika in your research, please consider citing

    @misc{1812.05752,
    Author = {Harald Schafer and Eder Santana and Andrew Haden and Riccardo Biasini},
    Title = {A Commute in Data: The comma2k19 Dataset},
    Year = {2018},
    Eprint = {arXiv:1812.05752},
    }
    

    Downloads

    The total dataset is ~100GB and can be downloaded here It is divided into ~10GB chunks.

    Example Code

    There is an example data segment in this repo for experimentation. There are also some notebooks with some example code. Including a position benchmark. This code has only been tested on python 2.7 and python 3.6. Make sure to pip install -r requirements.txt if you do not have the relevant packages installed already. The examples contain a 1 minute sample segment and some sample notebooks.

    • processed_readers: some examples of data reading and plotting
    • position_benchmarks: example of running the position benchmark used to evaluate fix quality
    • raw_readers: example of using OpenPilot tools

    For examples related to raw GNSS please check out Laika

    Dataset Structure

    Directory Structure

    The data is split into 10 chunks of each about 200 minutes of driving. Chunks 1-2 of the dataset are of the RAV4 and the rest is the civic. The dongle_id of the RAV4 is b0c9d2329ad1606b and that of the civic is 99c94dc769b5d96e.

    Dataset_chunk_n
    |
    +-- route_id (dongle_id|start_time)
        |
        +-- segment_number
            |
            +-- preview.png (first frame video)
            +-- raw_log.bz2 (raw capnp log, can be read with openpilot-tools: logreader)
            +-- video.hevc (video file, can be read with openpilot-tools: framereader)
            +-- processed_log/ (processed logs as numpy arrays, see format for details)
            +-- global_pos/ (global poses of camera as numpy arrays, see format for details)
    
    Log Format

    Every log type in processed_log director contains 2 numpy arrays. A timestamp array in seconds using the system device's boot time and a value array.

    processed_log
    |
    +--IMU ([forward, right, down])
    |  |
    |  +--acceleration: (m^2/s)
    |  +--gyro_uncalibrated (rad/s)
    |  +--gyro_bias: android gyro bias estimate (rad/s)
    |  +--gyro: with android bias correction (rad/s)
    |  +--magnetic_uncalibrated: (T)
    |  +--magnetic: with android calibration(T)
    |
    +--CAN data:
    |  |
    |  +--car_speed (m/s)
    |  +--steering_angle (deg)
    |  +--wheel_speeds: [front_left, front_right, rear_left, rear_right] (m/s)
    |  +--radar: [forward distance (m),
    |  |          left distance (m),
    |  |          relative speed (m/s),
    |  |          nan,
    |  |          nan,
    |  |          address,
    |  |          new_track (bool)]
    |  +--raw CAN: This not stored as a value array but as three seperate arrays [src, address, data]
    |
    +--GNSS
       |
       +--live_gnss_qcom: [latitude (deg),
       |                   longitude (deg),
       |                   speed (m/s),
       |                   utc_timestamp (s),
       |                   altitude (m),
       |                   bearing (deg)]
       +--live_gnss_ublox: [latitude (deg),
       |                    longitude (deg),
       |                    speed (m/s),
       |                    utc_timestamp (s),
       |                    altitude (m),
       |                    bearing (deg)]
       |
       +--raw_gnss_qcom: every row represents a measurement
       |                 of 1 satellite at 1 epoch can easily
       |                 be manipulated with laika.
       |                 [prn (nmea_id, see laika),
       |                  week of gps_time of reception (gps_week),
       |                  time pf week of gps_time of reception (s),
       |                  nan,
       |                  pseudorange (m),
       |                  pseudorange_std (m),
       |                  pseudorange_rate (m/s),
       |                  pseudorange_rate_std (m/s)]
       +--raw_gnss_ublox: every row represents a measurement
                          of 1 satellite at 1 epoch can easily
                          be manipulated with laika.
                          [prn (nmea_id, see laika),
                           week of gps_time of reception (gps_week),
                           time pf week of gps_time of reception (s),
                           GLONASS channel number (-7..6) nan if not GLONASS,
                           pseudorange (m),
                           pseudorange_std (m),
                           pseudorange_rate (m/s),
                           pseudorange_rate_std (m/s)]
    
    Pose Format
    The poses of the camera and timestamps of every frame of the video are stored
    as follows:
      frame_times: timestamps of video frames in boot time (s)
      frame_gps_times: timestamps of video frames in gps_time: ([gps week (weeks), time-of-week (s)])
      frame_positions: global positions in ECEF of camera(m)
      frame_velocities: global velocity in ECEF of camera (m/s)
      frame_orientations: global orientations as quaternion needed to
                          rotate from ECEF  frame to local camera frame
                          defined as [forward, right, down] (hamilton quaternion!!!!)
    

    Workaround for Microsoft-based filesystems

    ExFat and NTFS, among others, do not allow for |, the pipe character, in file and directory names. If you are using Microsoft-based filesystems, a workaround is to move the dataset to a non-Microsoft filesystem, decompress the archives there and run python3 utils/unzip_msft_fs.py <dataset dir> <goal dir> where <dataset dir> contains all chunks as zip files and <goal dir> is the directory you want the zip files extracted to. This will expand all the zip files in parallel and replace the pipe character with an underscore at every occurrence on the fly.

    Contact

    For questions, concerns or suggestions please contact [email protected]