Skip to content

proto/schema

Apollo HD Map 的 Protocol Buffers 数据模型定义。所有 .proto 文件位于 public/proto/,由 proto/loader 在运行时加载。

概览

Proto 文件定义了 Apollo 高精地图中所有地图元素的数据结构,属于 apollo.hdmap 包(几何基础类型属于 apollo.common,拓扑图属于 apollo.routing)。

顶层入口是 map.proto 中的 Map 消息,它聚合了所有地图元素:

proto
message Map {
  Header header = 1;
  repeated Crosswalk crosswalk = 2;
  repeated Junction junction = 3;
  repeated Lane lane = 4;
  repeated StopSign stop_sign = 5;
  repeated Signal signal = 6;
  repeated YieldSign yield = 7;
  repeated Overlap overlap = 8;
  repeated ClearArea clear_area = 9;
  repeated SpeedBump speed_bump = 10;
  repeated Road road = 11;
  repeated ParkingSpace parking_space = 12;
  repeated PNCJunction pnc_junction = 13;
  repeated RSU rsu = 14;
  repeated Area ad_area = 15;
  repeated BarrierGate barrier_gate = 16;
}

文件依赖关系

geometry.proto (apollo.common)
  └── map_geometry.proto
        ├── map_lane.proto
        ├── map_road.proto
        ├── map_junction.proto
        ├── map_signal.proto
        ├── map_stop_sign.proto
        ├── map_yield_sign.proto
        ├── map_crosswalk.proto
        ├── map_clear_area.proto
        ├── map_speed_bump.proto
        ├── map_parking_space.proto
        ├── map_pnc_junction.proto
        ├── map_area.proto
        ├── map_barrier_gate.proto
        ├── map_overlap.proto
        ├── map_speed_control.proto
        └── topo_graph.proto (apollo.routing)

map_id.proto ──────► 上述大部分文件
map_rsu.proto ─────► map_id.proto

map.proto ─────────► 聚合所有 map_*.proto

基础类型

geometry.proto

包:apollo.common

消息说明关键字段
PointENU东-北-天坐标点x, y, z
PointLLH经纬高坐标点lon, lat, height
Point2D二维点x, y
Point3D三维点x, y, z
Quaternion四元数旋转qx, qy, qz, qw
Polygon二维多边形(逆时针)repeated Point3D point

map_geometry.proto

包:apollo.hdmap — 导入 geometry.proto

消息说明关键字段
Polygon多边形repeated PointENU point
LineSegment直线段repeated PointENU point
CurveSegment曲线段oneof curve_type { LineSegment }, s, start_position, heading, length
Curve由若干段组成的曲线repeated CurveSegment segment

map_id.proto

包:apollo.hdmap

消息说明关键字段
Id全局唯一标识string id

车道与道路

map_lane.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息:

消息说明
Lane车道定义
LaneBoundary车道边界线
LaneBoundaryType边界线类型描述
LaneSampleAssociation中心点到边界的宽度采样

Lane 关键字段:

字段类型说明
idId车道标识
central_curveCurve中心线
left_boundaryLaneBoundary左边界
right_boundaryLaneBoundary右边界
lengthdouble车道长度
speed_limitdouble限速(m/s)
predecessor_idrepeated Id前驱车道
successor_idrepeated Id后继车道
junction_idId所属路口
directionLaneDirection方向

枚举:

枚举
LaneBoundaryType.TypeUNKNOWN, DOTTED_YELLOW, DOTTED_WHITE, SOLID_YELLOW, SOLID_WHITE, DOUBLE_YELLOW, CURB
Lane.LaneTypeNONE, CITY_DRIVING, BIKING, SIDEWALK, PARKING, SHOULDER, SHARED
Lane.LaneTurnNO_TURN, LEFT_TURN, RIGHT_TURN, U_TURN
Lane.LaneDirectionFORWARD, BACKWARD, BIDIRECTION

map_road.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息:

消息说明
Road道路(包含若干 RoadSection)
RoadSection道路截面(包含若干 Lane)
RoadBoundary道路边界
BoundaryPolygon边界多边形
BoundaryEdge边界边
RoadROIBoundary道路感兴趣区域边界

枚举:

枚举
BoundaryEdge.TypeUNKNOWN, NORMAL, LEFT_BOUNDARY, RIGHT_BOUNDARY
Road.TypeUNKNOWN, HIGHWAY, CITY_ROAD, PARK

路口

map_junction.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
Junction路口id, polygon, overlap_id, type

枚举:

枚举
Junction.TypeUNKNOWN, IN_ROAD, CROSS_ROAD, FORK_ROAD, MAIN_SIDE, DEAD_END

map_pnc_junction.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

PNC(Planning and Control)路口,用于自动驾驶规划。

消息说明关键字段
PNCJunctionPNC 路口id, polygon, overlap_id, repeated passage_group
PassageGroup通道组id, repeated passage
Passage通道id, signal_id, yield_id, stop_sign_id, lane_id, type

枚举:

枚举
Passage.TypeUNKNOWN, ENTRANCE, EXIT

交通设施

map_signal.proto

包:apollo.hdmap — 导入 geometry.proto, map_geometry.proto, map_id.proto

消息说明关键字段
Signal信号灯id, boundary, repeated subsignal, overlap_id, type, repeated stop_line
Subsignal子信号灯id, type, location
SignInfo信号标志信息type

枚举:

枚举
Subsignal.TypeUNKNOWN, CIRCLE, ARROW_LEFT, ARROW_FORWARD, ARROW_RIGHT, ARROW_LEFT_AND_FORWARD, ARROW_RIGHT_AND_FORWARD, ARROW_U_TURN
Signal.TypeUNKNOWN, MIX_2_HORIZONTAL, MIX_2_VERTICAL, MIX_3_HORIZONTAL, MIX_3_VERTICAL, SINGLE
SignInfo.TypeNone, NO_RIGHT_TURN_ON_RED

map_stop_sign.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
StopSign停车标志id, repeated stop_line, overlap_id, type

枚举:

枚举
StopSign.StopTypeUNKNOWN, ONE_WAY, TWO_WAY, THREE_WAY, FOUR_WAY, ALL_WAY

map_yield_sign.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
YieldSign让行标志id, repeated stop_line, overlap_id

map_barrier_gate.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
BarrierGate道闸id, type, polygon, repeated stop_line, overlap_id

枚举:

枚举
BarrierGate.BarrierGateTypeROD, FENCE, ADVERTISING, TELESCOPIC, OTHER

道路标记与区域

map_crosswalk.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
Crosswalk人行横道id, polygon, overlap_id

map_clear_area.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
ClearArea禁停区id, overlap_id, polygon

map_speed_bump.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
SpeedBump减速带id, overlap_id, repeated position

map_parking_space.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
ParkingSpace停车位id, polygon, overlap_id, heading
ParkingLot停车场id, polygon, overlap_id

map_area.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

消息说明关键字段
Area自定义区域id, type, polygon, overlap_id, name

枚举:

枚举
Area.TypeDriveable, UnDriveable, Custom1, Custom2, Custom3

map_speed_control.proto

包:apollo.hdmap — 导入 map_geometry.proto

消息说明关键字段
SpeedControl区域限速name, polygon, speed_limit
SpeedControls限速集合repeated speed_control

重叠关系

map_overlap.proto

包:apollo.hdmap — 导入 map_geometry.proto, map_id.proto

Overlap 描述两个地图元素在空间上的重叠关系,是连接交通设施与车道的关键结构。

核心消息:

消息说明
Overlap重叠关系 — 包含 id, repeated ObjectOverlapInfo object, repeated RegionOverlapInfo region_overlap
ObjectOverlapInfo对象重叠信息 — id + oneof overlap_info(见下表)
RegionOverlapInfo区域重叠信息 — id, repeated polygon

ObjectOverlapInfo 可选类型:

类型对应消息
车道LaneOverlapInfostart_s, end_s, is_merge, region_overlap_id
信号灯SignalOverlapInfo
停车标志StopSignOverlapInfo
人行横道CrosswalkOverlapInforegion_overlap_id
路口JunctionOverlapInfo
让行标志YieldOverlapInfo
禁停区ClearAreaOverlapInfo
减速带SpeedBumpOverlapInfo
停车位ParkingSpaceOverlapInfo
PNC 路口PNCJunctionOverlapInfo
RSURSUOverlapInfo
区域AreaOverlapInfo
道闸BarrierGateOverlapInfo

其他

map_rsu.proto

包:apollo.hdmap — 导入 map_id.proto

消息说明关键字段
RSU路侧单元id, junction_id, overlap_id

map.proto — Header

消息说明关键字段
Header地图头信息version, date, projection, district, vendor, 边界坐标等
Projection投影设置proj(PROJ.4 格式字符串)

拓扑图

topo_graph.proto

包:apollo.routing — 导入 map_geometry.proto

用于路径规划的拓扑图结构。

消息说明关键字段
Graph拓扑图hdmap_version, hdmap_district, repeated node, repeated edge
Node拓扑节点lane_id, length, cost, central_curve, is_virtual, road_id, left_out, right_out
Edge拓扑边from_lane_id, to_lane_id, cost, direction_type
CurveRange曲线范围start, end
CurvePoint曲线上的点s

枚举:

枚举
Edge.DirectionTypeFORWARD, LEFT, RIGHT

Released under the CC BY-NC-SA 4.0 License.