syntax = "proto3"; option optimize_for = LITE_RUNTIME; // 添加包名 package VRC; import "vrc.v2x.msgframe.proto"; import "vrc.v2x.dataframe.proto"; import "vrc.public.dataframe.proto"; // VRC公共消息 // 命令消息,用于PAD APP传递命令给V2X协议栈,目前支持感知数据共享请求功能开关 message CmdmPb { SsmVirSetPb ssmVirSet = 1; // 感知数据共享请求功能开关 } // 心跳消息 // 下属模块状态,0:正常;1:关闭;2:无效; message HmPb { bytes id = 1; // 设备ID int32 type = 2; // 设备类型,0:无效;1:车载;2:路侧;3:行人; int32 msgCnt = 3; // 消息计数,每次+1 int32 v2xStatus = 4; // V2X通信模组状态 int32 gnssStatus = 5; // GNSS状态 // GNSS质量 // 0:No fix;1:Autonomous GNSS fix;2:Differential GNSS fix; // 4:RTK fixed;5:RTK float;6:Estimated/Dead reckoning fix; int32 gnssQuality = 6; int32 fiveGStatus = 7; // 5G状态 int32 ethernetStatus = 8; // 以太网状态 int32 wifiStatus = 9; // WIFI状态 string softVer = 10; // 软件版本 string description = 11; // 设备描述 oneof reservedOpt { bytes reserved = 12; // 预留数据项 } } // 信号灯引导消息 message SgmPb { // 信号灯信息 // 每组标识一个对应的信号灯信息 repeated SignalMsgInLinkPb signals = 1; oneof guidanceSpeedOpt { double guidanceSpeed = 2; // 引导速度 } int32 guidanceNum = 3; // 引导速度支持的信号灯数量 oneof greenLightStartGuidanceOpt { string greenLightStartGuidance = 4; // 绿灯起步引导信息 } oneof reservedOpt { bytes reserved = 5; // 预留数据项 } } // 预警信息 message TmPb { // 预警类型 // 0:无预警/解除预警;1:前向碰撞预警;2:交叉碰撞预警;3:左转辅助; // 4:变道预警;5:逆向超车预警;6:紧急制动预警;7:异常车辆提醒; // 8:车辆失控预警;9:紧急车辆提醒;10:盲区提醒;11:闯红灯预警; // 12:道路交通事件信息;13:道路交通标识信息;14:限速预警; // 15:弱势交通参与者碰撞预警;16:协作式优先车辆通行预警; // 17:协作式车辆汇入预警:18:基于V2I的协作式变道预警; // 19:基于V2V的协作式变道预警; int32 type = 1; int32 priority = 2; // 预警级别,范围0-100,其他取值映射到该取值范围 // 预警子类型 // DAY1的道路交通事件信息和道路交通标识信息中,填写事件类型和标牌类型; // DAY1的紧急车辆提醒和DAY2的协作式优先车辆通行中,填写紧急车辆类型; // DAY2的协作式变道中,V2V时,填写远车请求行为(左转或右转);V2I时,填写路侧 // 提出的驾驶建议; // DAY2的协作式匝道汇入中,填写路侧提出的驾驶建议; oneof subtypeOpt { int32 subtype = 3; } // 描述信息 // DAY1的道路交通事件信息和道路交通标识信息中,填写描述信息; oneof descriptionOpt { string description = 4; } oneof confidenceOpt { int32 confidence = 5; // 预警置信度 } oneof hostIdOpt { bytes hostId = 6; // 本地编号,即设备ID } V2xPosPb hostPos = 7; // 本地位置 oneof hostSpeedOpt { double hostSpeed = 8; // 本地速度 } oneof hostHeadingOpt { double hostHeading = 9; // 本地行驶方向 } // 远端ID,即预警ID // DAY1的V2V场景和弱势交通参与者碰撞预警中,如果数据源是远端BSM时,填写远端车辆ID;如果数据源 // 是RSM时,填写RSU ID(此时配合ptcId标识预警车辆); // DAY1的道路交通事件信息和道路交通标识信息中,填写RSU ID; // DAY2的协作式优先车辆通行中,同DAY1的V2V场景; // DAY2的协作式变道中,V2V时,填写远端车辆ID;V2I时,填写RSU ID; // DAY2的协作式匝道汇入中,填写RSU ID; oneof remoteIdOpt { bytes remoteId = 10; } // 弱势交通参与者ID // DAY1的V2V场景和弱势交通参与者碰撞预警,DAY2的协作式变道中, // 如果数据源是RSM时,填写该数据项; oneof ptcIdOpt { int32 ptcId = 11; } // 道路交通事件ID // DAY1的道路交通事件信息中,填写该数据项; oneof rteIdOpt { int32 rteId = 12; } // 道路交通标识ID // DAY1的道路交通标识信息中,填写该数据项; oneof rtsIdOpt { int32 rtsId = 13; } // 远端位置,即预警位置 // DAY1的V2V场景和弱势交通参与者碰撞预警中,填写远端车辆或行人位置; // DAY1的道路交通事件信息和道路交通标识信息中,填写事件或标识位置(可能没有); // DAY1的限速预警和闯红灯预警中,填写停止线位置; // DAY2的协作式优先车辆通行中,填写远端车辆位置; // DAY2的协作式变道中,V2V时,填写远端车辆位置;V2I时,填写RSU位置; // DAY2的协作式匝道汇入中,如果存在路径规划,则填写其最后一个位置(也就是匝道所在 // link的最后一个点);否则,填写RSU位置; V2xPosPb remotePos = 14; // 远端距离 // 本地位置到远端位置的距离 oneof remoteDisOpt { double remoteDis = 15; } // 远端速度 // DAY1的V2V场景和弱势交通参与者碰撞预警,DAY2的协作式优先车辆通行,DAY2的协 // 作式变道中,V2V时,填写远端车辆或行人速度; oneof remoteSpeedOpt { double remoteSpeed = 16; } // 远端行驶方向 // DAY1的V2V场景和弱势交通参与者碰撞预警,DAY2的协作式优先车辆通行,DAY2的协 // 作式变道中,V2V时,填写远端车辆或行人行驶方向; oneof remoteHeadingOpt { double remoteHeading = 17; } // 相对位置 // 1 << 0:同向非相邻左前方;1 << 1:同向相邻左前方;1 << 2:同向正前方; // 1 << 3:同向相邻右前方;1 << 4:同向非相邻右前方;1 << 5:同向非相邻左后方; // 1 << 6:同向相邻左后方;1 << 7:同向正后方;1 << 8:同向相邻右后方; // 1 << 9:同向非相邻右后方;1 << 10:反向非相邻左前方;1 << 11:反向相邻左前方; // 1 << 12:反向正前方;1 << 13:反向相邻右前方;1 << 14:反向非相邻右前方; // 1 << 15:交叉左前方;1 << 16:交叉右前方;0xFFFFFFFF:所有位置; // DAY1的V2V场景中,填写远端车辆相对位置; // DAY1的道路交通事件信息,道路交通标识信息,限速预警,闯红灯预警和弱势交通参与者碰撞预 // 警中,填写同向正前方; // DAY2的协作式优先车辆通行中,填写远端车辆相对位置; // DAY2的协作式变道中,V2V时,填写远端车辆相对位置; oneof relPosOpt { int32 relPos = 18; } // 限速值 // DAY1的限速预警中,填写该数据项; oneof speedLimitOpt { double speedLimit = 19; } } // 时间位置消息 // 用于封装从GNSS模组获取的GNSS数据 message TpmPb { double utcTime = 1; // UTC时间 V2xPosPb pos = 2; // 位置信息 double speed = 3; // 速度 double heading = 4; // 行驶方向 V2xPosAccuracyPb posAccuracy = 5; // 定位系统自身的精度 V2xPosCfdSetPb posConfidence = 6; // 实时位置(经纬度和高程)的精度大小 V2xAccelSetPb accelSet = 7; // 加速度集合 } // 车辆接口消息 // 用于封装从车端获取的车辆信息 message VimPb { VimDoublePb speed = 1; // 速度 VimDoubleOptPb angle = 2; // 方向盘转角 VimIntPb transmission = 3; // 车辆档位 VimBrakesPb brakes = 4; // 刹车系统状态 VimSafetyExtPb safetyExt = 5; // 安全扩展 VimVehEmergencyExtPb emergencyExt = 6; // 车辆紧急扩展信息 } // 中继消息 message RmPb { int32 aid = 1; // AID值 // 消息内部ID // 1 << 0:BSM;1 << 1:MAP;1 << 2:RSI;1 << 3:RSM;1 << 4:SPAT; // 1 << 5:CLPMM;1 << 6:PAM;1 << 7:PSM;1 << 8:RSC;1 << 9:RTCM; // 1 << 10:SSM;1 << 11:TEST;1 << 12:VIR;1 << 13:VPM;1 << 14:UDM; int32 msgInsideId = 2; // 变更假名证书标识 // 只有车载需要变更假名证书时,将该数据置true;否则为false; bool changePc = 3; oneof msgCntOpt { int32 msgCnt = 4; // 消息计数 } bytes data = 5; // 消息数据 oneof reservedOpt { bytes reserved = 6; // 预留数据项 } } // 配置消息 // 包含配置信息; message CfgMsgPb { // 配置信息 ConfigInfoPb info = 1; } // 配置控制消息 // 包含配置控制接口信息; message CfgCtlMsgPb { oneof choice { // 配置请求 ConfigReqPb req = 1; // 配置回复 ConfigRspPb rsp = 2; } } // 基本安全消息增强版 // 包含BSM和安全消息扩展; message BsmPlusPb { V2xBsmPb bsm = 1; SafetyMsgExtLitePb safetyMsgExt = 2; } // 路侧安全消息增强版 // 包含RSM和安全消息扩展集合; message RsmPlusPb { V2xRsmPb rsm = 1; repeated SafetyMsgExtLitePb safetyMsgExt = 2; } // 交通参与者、道路障碍物和交通事件的感知共享消息增强版 // 包含SSM和安全消息扩展集合; message SsmPlusPb { V2xSsmPb ssm = 1; repeated SafetyMsgExtLitePb safetyMsgExt = 2; }