[8.3.0] 820决策停止线接口,同步PB,鹰眼目前未接入

This commit is contained in:
xinfengkun
2025-12-18 15:59:41 +08:00
parent eeec0520d0
commit c24c09d738
9 changed files with 564 additions and 0 deletions

View File

@@ -135,6 +135,7 @@ import com.zhjt.service.chain.ChainLog
import fault_management.FmInfo
import fsm.Fsm2024
import function_state_management.FunctionStates
import hadmap.Hadmap
import localization.LocState
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
@@ -1654,6 +1655,16 @@ class MoGoAdasListenerImpl : OnAdasListener {
CallerV2XManager.invokeObuUploadStatus(enable)
}
/**
* 决策停止线(自动驾驶决策呈现使用) 定频理论是10hz实际会有不同
*
* @param header 头
* @param mapMsg 数据
*/
override fun onPlanningStopLine(header: MessagePad.Header, mapMsg: Hadmap.MapMsg) {
}
/**
* 是否可以启动自动驾驶
* 使用方法查看app_ipc_monitoring/uiMainActivity/onAutopilotAbility

View File

@@ -117,6 +117,7 @@ public enum MessageType {
TYPE_SEND_SET_OBU_UPLOAD_REQ(MessagePad.MessageType.MsgTypeSetObuUploadReq, R.string.adas_data_MsgTypeSetObuUploadReq),
TYPE_SEND_OBU_UPLOAD_STATUS(MessagePad.MessageType.MsgTypeObuUploadStatus, R.string.adas_data_MsgTypeObuUploadStatus_SEND),
TYPE_RECEIVE_OBU_UPLOAD_STATUS(MessagePad.MessageType.MsgTypeObuUploadStatus, R.string.adas_data_MsgTypeObuUploadStatus_RECEIVE),
TYPE_RECEIVE_PLANNING_STOP_LINE(MessagePad.MessageType.MsgTypePlanningStopLine, R.string.adas_data_MsgTypePlanningStopLine),
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, R.string.adas_data_MsgTypePlanningDecisionState),

View File

@@ -0,0 +1,499 @@
syntax = "proto2";
package hadmap;
import "header.proto";
import "geometry.proto";
//////////////////////////////////////////////////
enum LaneMarkColor {
COLOR_WHITE = 0;
COLOR_YELLOW = 1;
}
enum LaneMarkType {
LANE_MARK_NONE = 0; //û<>л<EFBFBD><D0BB>ߵij<DFB5><C4B3><EFBFBD>
LANE_MARK_SOLID = 0x1; //<2F><>ɫ<EFBFBD><C9AB>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKEN = 0x2; //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LANE_MARK_SOLID2 = 0x10;
LANE_MARK_BROKEN2 = 0x20;
LANE_MARK_SOLIDSOLID = 0x11; //LANE_MARK_SOLID | LANE_MARK_SOLID2, <20><>ɫ˫ʵ<CBAB><CAB5>
LANE_MARK_SOLIDBROKEN = 0x21; //LANE_MARK_SOLID | LANE_MARK_BROKEN2, <20><>ɫʵ<C9AB><CAB5><EFBFBD><EFBFBD>
LANE_MARK_BROKENSOLID = 0x12; //LANE_MARK_BROKEN | LANE_MARK_SOLID2, <20><>ɫ<EFBFBD><C9AB>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKENBROKEN = 0x22; //LANE_MARK_BROKEN | LANE_MARK_BROKEN2,<2C><>ɫ˫<C9AB><CBAB><EFBFBD><EFBFBD>
LANE_MARK_CURB = 0x100; //·<><C2B7>ʯ
LANE_MARK_FENCE = 0x200; //դ<><D5A4>
LANE_MARK_SOLID_FENCE = 0x201; //LANE_MARK_SOLID | LANE_MARK_FENCE, դ<><D5A4><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKEN_FENCE = 0x202; //LANE_MARK_BROKEN | LANE_MARK_FENCE, դ<><D5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LANE_MARK_SOLIDSOLID_FENCE = 0x211; //LANE_MARK_SOLIDSOLID | LANE_MARK_FENCE, դ<><D5A4>˫ʵ<CBAB><CAB5>
LANE_MARK_SOLIDBROKEN_FENCE = 0x221; //LANE_MARK_SOLIDBROKEN | LANE_MARK_FENCE, դ<><D5A4>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
LANE_MARK_BROKENSOLID_FENCE = 0x212; //LANE_MARK_BROKENSOLID | LANE_MARK_FENCE, դ<><D5A4><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKENBROKEN_FENCE = 0x222; //LANE_MARK_BROKENBROKEN | LANE_MARK_FENCE, դ<><D5A4>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>
LANE_MARK_GRASS = 0x400; //·<><C2B7>Ե
LANE_MARK_BOLD = 0x1000; //bold line
LANE_MARK_YELLOW = 0x10000; //yellow lines, default white,blue green red
LANE_MARK_SOLID_YELLOW = 0x10001; //LANE_MARK_SOLID | LANE_MARK_YELLOW,//<2F>Ƶ<EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKEN_YELLOW = 0x10002; //LANE_MARK_BROKEN | LANE_MARK_YELLOW,//<2F>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>
LANE_MARK_SOLIDSOLID_YELLOW = 0x10011; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOW,//<2F><>˫ʵ<CBAB><CAB5>
LANE_MARK_SOLIDBROKEN_YELLOW = 0x10021; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOW,//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
LANE_MARK_BROKENSOLID_YELLOW = 0x10012; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOW,//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKENBROKEN_YELLOW = 0x10022; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOW,//<2F><>˫<EFBFBD><CBAB>
LANE_MARK_SOLID_YELLOW_FENCE = 0x10201; //LANE_MARK_SOLID_FENCE | LANE_MARK_YELLOW,դ<><D5A4><EFBFBD>Ƶ<EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_Broken_YELLOW_FENCE = 0x10202; //LANE_MARK_BROKEN_FENCE | LANE_MARK_YELLOW,դ<><D5A4><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>
LANE_MARK_SOLIDSOLID_YELLOW_FENCE = 0x10211; //LANE_MARK_SOLIDSOLID_FENCE | LANE_MARK_YELLOW,դ<><D5A4><EFBFBD><EFBFBD>˫ʵ<CBAB><CAB5>
LANE_MARK_SOLIDBROKEN_YELLOW_FENCE = 0x10221; //LANE_MARK_SOLIDBROKEN_FENCE | LANE_MARK_YELLOW,դ<><D5A4><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
LANE_MARK_BROKENSOLID_YELLOW_FENCE = 0x10212; //LANE_MARK_BROKENSOLID_FENCE | LANE_MARK_YELLOW,դ<><D5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKENBROKEN_YELLOW_FENCE = 0x10222; //LANE_MARK_BROKENBROKEN_FENCE | LANE_MARK_YELLOW,դ<><D5A4>˫<EFBFBD><CBAB>ʵ
LANE_MARK_WHITEYELLOW = 0x20000; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD>
LANE_MARK_SOLIDSOLID_WHITEYELLOW = 0x20011; //LANE_MARK_SOLIDSOLID | LANE_MARK_WHITEYELLOW,<2C><><EFBFBD><EFBFBD>һ<EFBFBD>˫ʵ<CBAB><CAB5>
LANE_MARK_SOLIDBROKEN_WHITEYELLOW = 0x20012; //LANE_MARK_SOLIDBROKEN | LANE_MARK_WHITEYELLOW,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LANE_MARK_BROKENSOLID_WHITEYELLOW = 0x20021; //LANE_MARK_BROKENSOLID | LANE_MARK_WHITEYELLOW,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
LANE_MARK_BROKENBROKEN_WHITEYELLOW = 0x20022; //LANE_MARK_BROKENBROKEN | LANE_MARK_WHITEYELLOW,<2C><><EFBFBD><EFBFBD>һ<EFBFBD>˫<EFBFBD><CBAB>
LANE_MARK_YELLOWWHITE = 0x30000; ////<2F><><EFBFBD><EFBFBD>Ұ<EFBFBD>
LANE_MARK_SOLIDSOLID_YELLOWWHITE = 0x30011; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOWWHITE,<2C><><EFBFBD><EFBFBD>Ұ<EFBFBD>˫ʵ<CBAB><CAB5>
LANE_MARK_SOLIDBROKEN_YELLOWWHITE = 0x30012; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOWWHITE,<2C><><EFBFBD><EFBFBD>Ұ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
LANE_MARK_BROKENSOLID_YELLOWWHITE = 0x30021; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOWWHITE,<2C><><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD>ʵ<EFBFBD><CAB5>
LANE_MARK_BROKENBROKEN_YELLOWWHITE = 0x30022; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOWWHITE,<2C><><EFBFBD><EFBFBD>Ұ<EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>
LANE_MARK_OTHERCOLORS = 0x40000;
LANE_MARK_LDM_P = 0x100000;
LANE_MARK_VGL_P = 0x200000;
LANE_MARK_SHIELDED = 0x1000000;
LANE_MARK_ABSEBNT = 0x2000000;
}
enum LaneType {
LANE_TYPE_None = 0;
LANE_TYPE_Driving = 1;
LANE_TYPE_Stop = 2;
LANE_TYPE_Shoulder = 3;
LANE_TYPE_Biking = 4;
LANE_TYPE_Sidewalk = 5;
LANE_TYPE_Border = 6;
LANE_TYPE_Restricted = 7;//BUS
LANE_TYPE_Parking = 8;
LANE_TYPE_MwyEntry = 9;
LANE_TYPE_MwyExit = 10;
LANE_TYPE_Acceleration = 11;//加速车<E9809F>?
LANE_TYPE_Deceleration = 12;//减速车<E9809F>?
LANE_TYPE_Compound = 13;//???, todo
LANE_TYPE_HOV = 14;//美国/加拿大为提高效率,拼车或者公交车<E4BAA4>?行的车道,乘车人数需2人及以上
LANE_TYPE_Slow = 15;//???? todo
LANE_TYPE_Reversible = 16;//<2F>?汐车<E6B190>?
LANE_TYPE_EmergencyParking = 17;//紧急停车带
LANE_TYPE_Emergency = 20;
LANE_TYPE_TurnLeftWaiting = 21;
LANE_TYPE_Ramp = 22;//匝道
LANE_TYPE_UTurnWaiting = 23;//掉头待转区车<E58CBA>?
LANE_TYPE_TurnRightWaiting = 24;//右转待转区车<E58CBA>?
LANE_TYPE_JuncTurnLeft = 25;//<2F>?口左<E58FA3>?车道
LANE_TYPE_JuncStraight = 26;//<2F>?口直行车<E8A18C>?
LANE_TYPE_JuncTurnRight = 27;//<2F>?口右<E58FA3>?车道
LANE_TYPE_Turn = 28;//掉头车道
LANE_TYPE_Diversion = 29;//导流带车<E5B8A6>?
LANE_TYPE_DrivingSide = 30;//<2F>?通车<E9809A>?-辅路
LANE_TYPE_BikingSide = 31;//非机动车<E58AA8>?-辅路
LANE_TYPE_TurnRighSide = 32;//右转车道-辅路
LANE_TYPE_TaxiLane = 33;//出<>?<3F>车专用车道
LANE_TYPE_LeftOrUturnWaite = 34;//左转或调头待<E5A4B4>?车道
LANE_TYPE_PoliceCarLane = 35;//警务专用车道
LANE_TYPE_AcceleOrDeceleLane = 36;//加减速车<E9809F>?
}
enum LaneArrow {
LANE_ARROW_None = 0x0;
LANE_ARROW_Straight = 0x1;
LANE_ARROW_Left = 0x2;
LANE_ARROW_Right = 0x4;
LANE_ARROW_Uturn = 0x8;
LANE_ARROW_SkewLeft = 0x20;
LANE_ARROW_SkewRight = 0x40;
LANE_ARROW_StraightLeft = 0x3;//LANE_ARROW_Straight | LANE_ARROW_Left,
LANE_ARROW_StraightRight = 0x5;//LANE_ARROW_Straight | LANE_ARROW_Right,
LANE_ARROW_LeftRight = 0x6;//LANE_ARROW_Left | LANE_ARROW_Right,
LANE_ARROW_LeftUturn = 0xa;//LANE_ARROW_Left | LANE_ARROW_Uturn,
LANE_ARROW_StraightUturn = 0x9;//LANE_ARROW_Straight | LANE_ARROW_Uturn,
}
enum RoadType {
ROAD_TYPE_Normal = 0;
ROAD_TYPE_OTHER = 1;
ROAD_TYPE_SA = 2; // Service Area
ROAD_TYPE_PA = 3; //Parking Area
ROAD_TYPE_ControlAccess = 4;
ROAD_TYPE_GenerapRamp = 5;
ROAD_TYPE_Overpass = 6;
ROAD_TYPE_Underpass = 7;
ROAD_TYPE_PrivateRoad = 8;
ROAD_TYPE_PedestrainRoad = 9;
ROAD_TYPE_OverpassForP = 10; //Overpass for passenger
ROAD_TYPE_BusOnly = 11;
ROAD_TYPE_BicycleOnly = 12; //Bicycle only30 Bridge
ROAD_TYPE_Tunnel = 13;
ROAD_TYPE_UTA = 14; //Undefined Traffic Figure
ROAD_TYPE_ICEntrance = 15;
ROAD_TYPE_TollBooth = 16;
ROAD_TYPE_ConstructionRoad = 17;
ROAD_TYPE_Roundabout = 18;
ROAD_TYPE_Intersection = 19;
}
enum RoadDirection {
ROAD_DIRECTION_FORWARD = 0;
ROAD_DIRECTION_BACKWARD = 1;
ROAD_DIRECTION_BIDIRECTIONAL = 2;
}
enum ObjectType {
OBJECT_TYPE_None = 0;
OBJECT_TYPE_Curb = 1;
OBJECT_TYPE_TrafficBarrier = 2;
OBJECT_TYPE_OverheadCrossing = 3;
OBJECT_TYPE_Tunnel = 4;
OBJECT_TYPE_Gantry = 5;
OBJECT_TYPE_TrafficSign = 6;
OBJECT_TYPE_VariableMessageSign = 7;
OBJECT_TYPE_PermanentDelineator = 8;
OBJECT_TYPE_TollBooth = 9;
OBJECT_TYPE_EmergencyCallbox = 10;
OBJECT_TYPE_Ditch = 11;
OBJECT_TYPE_Pole = 12;
OBJECT_TYPE_Building = 13;
OBJECT_TYPE_RoadSign = 14;
OBJECT_TYPE_CrossWalk = 15;
OBJECT_TYPE_TrafficLights = 16;
OBJECT_TYPE_TunnelWall = 17;
OBJECT_TYPE_Arrow = 18;
OBJECT_TYPE_Text = 19;
OBJECT_TYPE_RoadSign_Text = 20;
OBJECT_TYPE_Stop = 21;
OBJECT_TYPE_LaneBoundary = 22;
OBJECT_TYPE_ParkingSpace = 23;
OBJECT_TYPE_DrivingArea = 24;
OBJECT_TYPE_FeaturePoint = 25;
OBJECT_TYPE_SpeedLimit = 26;
OBJECT_TYPE_EdgeDriving = 27;
OBJECT_TYPE_Horn = 28;
OBJECT_TYPE_NoParkingGrid = 29;
}
enum ObjectShape {
OBJECT_SHAPE_None = 0;
OBJECT_SHAPE_Rectangle = 1;
OBJECT_SHAPE_Triangle = 2;
OBJECT_SHAPE_Circle = 3;
OBJECT_SHAPE_Diamond = 4;
OBJECT_SHAPE_RTriangle = 5;
OBJECT_SHAPE_Arrow = 6;
OBJECT_SHAPE_Bicycle = 7;
OBJECT_SHAPE_WheelChair = 8;
OBJECT_SHAPE_Cross = 9;
OBJECT_SHAPE_Polyline = 10;
OBJECT_SHAPE_Polygon = 11;
OBJECT_SHAPE_Point = 12;
}
// junction type
enum JunctionType {
JCT_TYPE_CROSS = 609; //ʮ<><CAAE>·<EFBFBD>ڡ<EFBFBD>T<EFBFBD><54>·<EFBFBD><C2B7>
JCT_TYPE_SIDE_MASTER = 612; //<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>·֮<C2B7><D6AE><EFBFBD>·<EFBFBD>ڿ<EFBFBD>
JCT_TYPE_TO_RIGHT = 614; //<2F><><EFBFBD><EFBFBD>
JCT_TYPE_INCREASE = 6151; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD>
JCT_TYPE_DECREASE = 6152; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD>
JCT_TYPE_OUT_RAMP = 6153; //<2F><><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD>
JCT_TYPE_IN_RAMP = 6154; //<2F><><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD>
JCT_TYPE_SINGLE_UTURN = 616; //<2F><><EFBFBD><EFBFBD><EFBFBD>ͷ
JCT_TYPE_RING_LAND = 617; //<2F><><EFBFBD><EFBFBD>
JCT_TYPE_SAMLL_MASTER = 619; //С·<D0A1>ڡ<EFBFBD><DAA1><EFBFBD>·<EFBFBD><C2B7><EFBFBD>Ӵ<EFBFBD>
JCT_TYPE_CROSS_NOT_LANE_NOT_SEGGREGATE = 6091; //ʮ<><CAAE>·<EFBFBD>ڡ<EFBFBD>T<EFBFBD><54>·<EFBFBD><C2B7><>ڷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>߹ᴩ,<2C><>·<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)
JCT_TYPE_CROSS_NOT_LANE_SEGGREGATE = 6092; //ʮ<><CAAE>·<EFBFBD>ڡ<EFBFBD>T<EFBFBD><54>·<EFBFBD><C2B7><>ڷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>߹ᴩ,<2C><>·<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)
JCT_TYPE_CROSS_LANE_NOT_SEGGREGATE = 6201; //ʮ<><CAAE>·<EFBFBD>ڡ<EFBFBD>T<EFBFBD><54>·<EFBFBD><C2B7><>ڷ<EFBFBD>Χ<EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>߹ᴩ,<2C><>·<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)
JCT_TYPE_CROSS_LANE_SEGGREGATE = 6202; //ʮ<><CAAE>·<EFBFBD>ڡ<EFBFBD>T<EFBFBD><54>·<EFBFBD><C2B7><>ڷ<EFBFBD>Χ<EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>߹ᴩ,<2C><>·<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)
JCT_TYPE_UNKOWN = 99999; // δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
}
// physical isolation type
enum IsolationType {
ISO_TYPE_GREENBELT = 1;
ISO_TYPE_SAFETYISLAND = 2;
ISO_TYPE_JUNCTION_CURB = 3;
}
message BoundaryPoint{
optional double x = 1;
optional double y = 2;
optional double z = 3;
optional LaneMarkType point_type = 4;
optional uint32 lane_tag = 5;
}
message LanePoint{
optional double x = 1;
optional double y = 2;
optional double z = 3;
optional LaneType point_center_type = 4;
optional LaneArrow point_center_arrow = 5;
optional uint32 point_speed_limit = 6;
}
message LaneBoundary {
// lane boundary primary key
optional uint64 pkid = 1;
// epsg code
optional uint32 srs = 2;
// lane mark
optional LaneMarkType type = 3;
optional LaneMarkColor color = 4;
// 将LaneMarkType绑定到每个geom点上
repeated BoundaryPoint point = 5;
}
message Lane {
// road primary key
optional uint64 road_pkid = 1;
// sectin id, ascend order
optional uint32 section_id = 2;
// lane id follow OpenDrive Specification
optional int32 lane_id = 3;
// lane name, "road.section.lane"
optional string name = 4;
// epsg code
optional uint32 srs = 5;
// left lane boundary geometry pkid
optional uint64 left_boundary_id = 6;
// right lane boundary geometry pkid
optional uint64 right_boundary_id = 7;
// lane type
optional LaneType type = 8;
// lane arrow
optional LaneArrow arrow = 9;
// speed limit
optional uint32 speed_limit = 10;
// 将LaneTypeLaneArrowspeedlimit绑定到每个geom点上
repeated LanePoint point = 11;
// <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
optional uint32 parallel_lane_count = 12;
// <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ڵij<DAB5><C4B3><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
optional uint32 drive_lane_count = 13;
// whether it is recommended
optional bool recommended = 14;
// for parallel lanes, steps away from the best lane
optional int32 rank = 15;
// Passable distance
optional double passable_dis = 16;
optional double dis_to_goal = 17;
}
message Section {
// section id
optional uint32 id = 1;
// lanes
repeated Lane lanes = 2;
// boundaries
repeated LaneBoundary boundaries = 3;
}
message Road {
// primary key
optional uint64 pkid = 1;
// geohash key
optional string id = 2;
// road name
optional string name = 3;
// epsg code
optional uint32 srs = 4;
// road length
optional float length = 6;
// section count of road
optional uint32 section_num = 7;
// road type
optional RoadType road_type = 8;
// road driving direction
optional RoadDirection direction = 9;
// curvature geometry
repeated geometry.Point curvature = 10;
// slope geometry
repeated geometry.Point slope = 11;
// heading geometry
repeated geometry.Point heading = 12;
// super_elevation geometry
repeated geometry.Point super_elevation = 13;
// road geometry
repeated geometry.Point geom = 14;
// sections
repeated Section sections = 15;
// opposite roads
repeated uint64 opposite_pkid = 16;
// this road have lane nums
optional uint32 lane_num = 17;
// this road hava drive lane nums
optional uint32 drive_lane_num = 18;
}
message Junction {
// primary key
optional uint64 pkid = 1;
// epsg code
optional uint32 srs = 2;
// junction altitude
optional float altitude = 3;
// junction polygon
optional geometry.Polygon geom = 4;
// junction type
optional JunctionType type = 5;
// road pkid
repeated uint32 road_ids = 6;
}
message LaneLink {
// primary key
optional uint64 pkid = 1;
// from road pkid
optional uint64 from_road_pkid = 2;
// from road section id
optional uint32 from_section_id = 3;
// from road lane id
optional int32 from_lane_id = 4;
// to road pkid
optional uint64 to_road_pkid = 5;
// to road section id
optional uint32 to_section_id = 6;
// to road lane id
optional int32 to_lane_id = 7;
// 驶出<E9A9B6>?口的lanlink<6B>?<3F>字段true<EFBC8C>?<3F>?fasle
optional bool from_junction = 8;
// 进出<E8BF9B>?口的lanlink<6B>?<3F>字段true<EFBC8C>?<3F>?false
optional bool to_junction = 9;
// lane_link geometry
repeated geometry.Point geom = 10;
// the type of lane_link
optional LaneType type = 11;
}
message Object {
// object primary key
optional uint64 pkid = 1;
// road id
optional uint64 road_pkid = 2;
// section id
optional uint64 section_id = 3;
// lane id
optional int32 lane_id = 4;
// objcet type
optional ObjectType type = 5;
// polygon style
optional ObjectShape shape = 6;
// object text
optional string text = 7;
// object attribute
optional string attribute = 8;
// object geom
repeated geometry.Point geom = 9;
// object value
optional float value = 10;
}
message PhysicalIsolation {
// primary key
optional uint64 pkid = 1;
// physical isolation name
optional string name = 2;
// type
optional IsolationType type = 3;
// road pkid
repeated uint64 road_pkid = 4;
// junction pkid
repeated uint64 junction_pkid = 5;
// physical isolation geometry
optional geometry.Polygon geom = 6;
}
message Map {
repeated Road roads = 1;
repeated LaneLink lanelinks = 2;
repeated Junction junctions = 3;
repeated Object objects = 4;
repeated PhysicalIsolation isolations = 5;
//TODO: junction relation with roads
}
message MapMsg {
optional common.Header header = 1;
optional Map map = 2;
}

View File

@@ -112,6 +112,7 @@ enum MessageType
MsgTypeForceStopOrStartCloudReq = 0x10138;//关闭或打开云链接
MsgTypeSetObuUploadReq = 0x10139;//关闭或打开域控上报自车数据到OBU
MsgTypeObuUploadStatus = 0x1013A;//obu上报状态查询以结果(上下行)
MsgTypePlanningStopLine = 0x1013B;//决策停止线(自动驾驶决策呈现使用) 定频理论是10hz实际会有不同
}
message Header

View File

@@ -92,6 +92,7 @@
<string name="adas_data_MsgTypeSetObuUploadReq">Domain control OBU upload switch control</string>
<string name="adas_data_MsgTypeObuUploadStatus_SEND">Domain control OBU upload status query</string>
<string name="adas_data_MsgTypeObuUploadStatus_RECEIVE">Domain control OBU upload status response</string>
<string name="adas_data_MsgTypePlanningStopLine">Planning Stop Line</string>
<string name="adas_data_MsgTypePlanningDecisionState">Planning decision state</string>
<string name="adas_data_MsgTypeSweeperTaskIndexData">Sweeper index data</string>
<string name="adas_data_MsgTypeObuWarningData">OBU warning event</string>

View File

@@ -92,6 +92,7 @@
<string name="adas_data_MsgTypeSetObuUploadReq">域控上报OBU开关控制</string>
<string name="adas_data_MsgTypeObuUploadStatus_SEND">域控上报OBU开关状态查询</string>
<string name="adas_data_MsgTypeObuUploadStatus_RECEIVE">域控上报OBU开关状态响应</string>
<string name="adas_data_MsgTypePlanningStopLine">决策停止线</string>
<string name="adas_data_MsgTypePlanningDecisionState">Planning决策状态</string>
<string name="adas_data_MsgTypeSweeperTaskIndexData">清扫车指标数据</string>
<string name="adas_data_MsgTypeObuWarningData">OBU预警事件</string>

View File

@@ -43,6 +43,7 @@ import chassis.VehicleStateOuterClass;
import fault_management.FmInfo;
import fsm.Fsm2024;
import function_state_management.FunctionStates;
import hadmap.Hadmap;
import localization.LocState;
import mogo.telematics.pad.MessagePad;
import mogo.v2x.MogoV2X;
@@ -778,6 +779,14 @@ public interface OnAdasListener {
*/
void onObuUploadStatus(@NonNull MessagePad.Header header, @NonNull MessagePad.SetEnableReq enable);
/**
* 决策停止线(自动驾驶决策呈现使用) 定频理论是10hz实际会有不同
*
* @param header 头
* @param mapMsg 数据
*/
void onPlanningStopLine(@NonNull MessagePad.Header header, @NonNull Hadmap.MapMsg mapMsg);
/**
* 是否有能力启动自动驾驶
*

View File

@@ -63,6 +63,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg vlmMessage;//视觉语言模型
private IMsg vlmMessageImage;//视觉语言模型图像
private IMsg obuUploadStatusMessage;//域控上报OBU开关状态响应
private IMsg planningStopLineMessage;//决策停止线
private final AutopilotReview autopilotReview;
private final TurnLightState lightLeft = new TurnLightState();
@@ -373,6 +374,12 @@ public class MyMessageFactory implements IMyMessageFactory {
obuUploadStatusMessage = new ObuUploadStatusMessage();
}
return obuUploadStatusMessage;
} else if (messageType == MessageType.TYPE_RECEIVE_PLANNING_STOP_LINE.typeCode) {
//决策停止线
if (planningStopLineMessage == null) {
planningStopLineMessage = new PlanningStopLineMessage();
}
return planningStopLineMessage;
} else {
//MessageType.TYPE_DEFAULT.typeCode
return null;

View File

@@ -0,0 +1,34 @@
package com.zhidao.support.adas.high.msg;
import android.os.SystemClock;
import com.google.protobuf.InvalidProtocolBufferException;
import com.zhidao.support.adas.high.AdasChannel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.protocol.RawData;
import hadmap.Hadmap;
/**
* 决策停止线
*/
public class PlanningStopLineMessage extends MyAbstractMessageHandler {
public PlanningStopLineMessage() {
}
@Override
public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
Hadmap.MapMsg mapMsg = Hadmap.MapMsg.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
AdasChannel.calculateTimeConsumingOnDispatchRaw("决策停止线", raw.receiveTime);
long nowTime = 0;
if (CupidLogUtils.isEnableLog())
nowTime = SystemClock.elapsedRealtime();
if (adasListener != null) {
adasListener.onPlanningStopLine(raw.getHeader(), mapMsg);
}
AdasChannel.calculateTimeConsumingBusiness("决策停止线", nowTime);
}
}