当前位置:   article > 正文

【数据集】waymo motion dataset介绍与数据解析可视化_waymo motion数据集

waymo motion数据集

前言

  • waymo open dataset数据集由两个数据集组成: Perception数据集 + Motion数据集
    • Perception数据集主要用于2D和3D目标检测和追踪任务,是自车第一视角数据
    • Motion数据集主要用于自动驾驶行为预测,是鸟瞰图数据
  • 我们重点学习Motion数据集

1. 数据下载

2. Motion数据集

  • 传感器方案: 5 Lidar(64线束)和5高分辨率针孔相机。限制了LiDAR数据范围,并且每个激光脉冲有两个回波(双回波)。相机图像是通过卷帘快门扫描捕获的,其中确切的扫描模式可能因场景而异, 所有相机图像都将进行降采样并从原始图像中裁剪出来

  • 数据量和场景: Motion数据集有100000段总计超过200000000帧的数据,但是好像只有激光雷达采集的数据和对应的地图还原结果, 标签为Vehicles, Pedestrians, Cyclists三类(使用VPN)

3. 数据描述

  • (1) 数据集文件格式为tfrecord, 是tensorflow的一种格式

  • (2) 一个trrecord包含199帧数据, 是连续时间段的数据帧, 采样频率10Hz, 近似有20s数据

  • (3) 一帧中包含了车上所有传感器的数据以及相应的label

  • (4) 一个tfrecord包含多条scenario, scenario是一条数据的最小单元,

  • (5) 数据格式包含在scenario中, 使用scenario.proto进行描述

  • (6) scenario代表一个场景, 也就是一段时间内的交通信息,包括自车和其它的交通参与者,以及交通灯在20s内的轨迹和状态,同时还包括了道路信息

  • (7) scenario每个场景包含9秒91帧数据, 其中历史10帧, 当前1帧, 未来80帧, 在轨迹预测或其他任务中一般使用1s历史数据预测8s未来数据; 也可以根据实验用途从20s数据中自己切分数据

    waymo motion数据的结构如图:

    接下来我们详细介绍scenario.proto和map.proto地图格式

4. 数据特征scenario.proto

  • 一个场景中的特征主要分为三个部分

    • (1) 场景Features:该类别包括当前场景的基本信息,如场景ID、自动驾驶汽车的索引等
    • (2) HdMap Features静态动态地图功能都属于这一类别。动态地图特征包括交通信号状态,静态地图特征包括道路几何形状和连接的综合信息。Waymo提供车道、边界、人行横道、豁口等的明确坐标。对于每个路段,上游/下游车道和相邻车道的索引都记录在相应的属性中
    • (3) 轨迹Tracks:此属性存储场景中所有观察到的对象的运动。共有四种类型的对象:车辆、行人、骑自行车的人和其他。物体的状态以10 Hz的频率记录,每个状态包括物体的坐标(x、y、z)、尺寸(宽度和高度)、运动(航向、纵向和横向速度)和有效标志等
  • Scenario结构

    message Scenario {
         
      reserved 9;
    
      // 场景ID
      optional string scenario_id = 5;
    
      // 时间戳数组.与追踪目标tracks和红绿灯状态数组大小相等
      repeated double timestamps_seconds = 1;
    
      // 当前时间在时间戳数组中的index, 在此之前的为历史数据,在此之后的为预测数据
      optional int32 current_time_index = 10;
    
      // scenario内所有追踪目标; tracks[i].states[j]表示第i个目标在j时刻的状态
      repeated Track tracks = 2;
    
      // scenario的动态地图状态, 这里主要指交通灯信息; 和时间戳数组大小相等, dynamic_map_states[i]表示i时刻的交通灯信息
      repeated DynamicMapState dynamic_map_states = 7;
    
      // scenario的静态地图特征, 如lane/road/crosswalk/driveway等静态地图
      repeated MapFeature map_features = 8;
    
      // 自车在目标tracks里的索引
      optional int32 sdc_track_index = 6;
    
      // 与自车有交互行为的目标ID列表; 这些ID对应tracks里的id
      repeated int32 objects_of_interest = 4;
    
      // 需要预测的目标列表,这只是建议train的目标,不是包含所有目标
      repeated RequiredPrediction tracks_to_predict = 11;
    
      // 每个时间步的lidar数据列表; 包含当前时间步之前的lidar数据, 即timestamps_seconds[i] where i <= current_time_index; 不是所有版本中均有此字段
      repeated CompressedFrameLaserData compressed_frame_laser_data = 12;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 数据结构:Track

    message Track {
         
      enum ObjectType {
         
        TYPE_UNSET = 0;  // This is an invalid state that indicates an error.
        TYPE_VEHICLE = 1;
        TYPE_PEDESTRIAN = 2;
        TYPE_CYCLIST = 3;
        TYPE_OTHER = 4;
      }
    
      // 被追踪的目标ID, 非负
      optional int32 id = 1;
    
      // 目标类型
      optional ObjectType object_type = 2;
    
      // 目标states,包括位置速度信息等
      repeated ObjectState states = 3;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 数据结构:ObjectState

    message ObjectState {
         
      // Coordinates of the center of the object bounding box.
      optional double center_x = 2;
      optional double center_y = 3;
      optional double center_z = 4;
    
      // The dimensions of the bounding box in meters.
      optional float length = 5;
      optional float width = 6;
      optional float height = 7;
    
      // 目标朝向, 取值[-pi, pi]
      optional float heading = 8;
    
      // 速度m/s,和目标朝向heading可能有差异
      optional float velocity_x = 9;
      optional float velocity_y = 10;
    
      // state状态数据是否有效, False表示数据无效或丢失
      optional bool valid = 11;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 数据结构:DynamicMapState

    message DynamicMapState {
         
      // 在该时间步能观察到的所有红绿灯列表
      repeated TrafficSignalLaneState lane_states = 1;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 数据结构:TrafficSignalLaneState

    message TrafficSignalLaneState {
         
      // 被该交通灯控制的lane id
      optional int64 lane = 1;
    
      enum State {
         
        LANE_STATE_UNKNOWN = 0;
    
        // 箭头交通灯信号
        LANE_STATE_ARROW_STOP = 1
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/325137
推荐阅读
相关标签
  

闽ICP备14008679号