diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 6f9ae857d3..27de31e663 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -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 diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java index 264861b6c1..519f77c5e1 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java @@ -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), diff --git a/libraries/mogo-adas-data/src/main/proto/hadmap.proto b/libraries/mogo-adas-data/src/main/proto/hadmap.proto new file mode 100644 index 0000000000..bff3dd7f0a --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/hadmap.proto @@ -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; //û�л��ߵij��� + LANE_MARK_SOLID = 0x1; //��ɫ��ʵ�� + LANE_MARK_BROKEN = 0x2; //��ɫ������ + LANE_MARK_SOLID2 = 0x10; + LANE_MARK_BROKEN2 = 0x20; + LANE_MARK_SOLIDSOLID = 0x11; //LANE_MARK_SOLID | LANE_MARK_SOLID2, ��ɫ˫ʵ�� + LANE_MARK_SOLIDBROKEN = 0x21; //LANE_MARK_SOLID | LANE_MARK_BROKEN2, ��ɫʵ���� + LANE_MARK_BROKENSOLID = 0x12; //LANE_MARK_BROKEN | LANE_MARK_SOLID2, ��ɫ��ʵ�� + LANE_MARK_BROKENBROKEN = 0x22; //LANE_MARK_BROKEN | LANE_MARK_BROKEN2,��ɫ˫���� + + LANE_MARK_CURB = 0x100; //·��ʯ + + LANE_MARK_FENCE = 0x200; //դ�� + LANE_MARK_SOLID_FENCE = 0x201; //LANE_MARK_SOLID | LANE_MARK_FENCE, դ����ʵ�� + LANE_MARK_BROKEN_FENCE = 0x202; //LANE_MARK_BROKEN | LANE_MARK_FENCE, դ�������� + LANE_MARK_SOLIDSOLID_FENCE = 0x211; //LANE_MARK_SOLIDSOLID | LANE_MARK_FENCE, դ��˫ʵ�� + LANE_MARK_SOLIDBROKEN_FENCE = 0x221; //LANE_MARK_SOLIDBROKEN | LANE_MARK_FENCE, դ��ʵ���� + LANE_MARK_BROKENSOLID_FENCE = 0x212; //LANE_MARK_BROKENSOLID | LANE_MARK_FENCE, դ����ʵ�� + LANE_MARK_BROKENBROKEN_FENCE = 0x222; //LANE_MARK_BROKENBROKEN | LANE_MARK_FENCE, դ��˫���� + + LANE_MARK_GRASS = 0x400; //·��Ե + 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,//�Ƶ�ʵ�� + LANE_MARK_BROKEN_YELLOW = 0x10002; //LANE_MARK_BROKEN | LANE_MARK_YELLOW,//�Ƶ����� + LANE_MARK_SOLIDSOLID_YELLOW = 0x10011; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOW,//��˫ʵ�� + LANE_MARK_SOLIDBROKEN_YELLOW = 0x10021; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOW,//��ʵ���� + LANE_MARK_BROKENSOLID_YELLOW = 0x10012; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOW,//����ʵ�� + LANE_MARK_BROKENBROKEN_YELLOW = 0x10022; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOW,//��˫�� + + LANE_MARK_SOLID_YELLOW_FENCE = 0x10201; //LANE_MARK_SOLID_FENCE | LANE_MARK_YELLOW,դ���Ƶ�ʵ�� + LANE_MARK_Broken_YELLOW_FENCE = 0x10202; //LANE_MARK_BROKEN_FENCE | LANE_MARK_YELLOW,դ���Ƶ����� + LANE_MARK_SOLIDSOLID_YELLOW_FENCE = 0x10211; //LANE_MARK_SOLIDSOLID_FENCE | LANE_MARK_YELLOW,դ����˫ʵ�� + LANE_MARK_SOLIDBROKEN_YELLOW_FENCE = 0x10221; //LANE_MARK_SOLIDBROKEN_FENCE | LANE_MARK_YELLOW,դ����ʵ���� + LANE_MARK_BROKENSOLID_YELLOW_FENCE = 0x10212; //LANE_MARK_BROKENSOLID_FENCE | LANE_MARK_YELLOW,դ������ʵ�� + LANE_MARK_BROKENBROKEN_YELLOW_FENCE = 0x10222; //LANE_MARK_BROKENBROKEN_FENCE | LANE_MARK_YELLOW,դ��˫��ʵ + + LANE_MARK_WHITEYELLOW = 0x20000; //����һ� + LANE_MARK_SOLIDSOLID_WHITEYELLOW = 0x20011; //LANE_MARK_SOLIDSOLID | LANE_MARK_WHITEYELLOW,����һ�˫ʵ�� + LANE_MARK_SOLIDBROKEN_WHITEYELLOW = 0x20012; //LANE_MARK_SOLIDBROKEN | LANE_MARK_WHITEYELLOW,����һ���ʵ������ + LANE_MARK_BROKENSOLID_WHITEYELLOW = 0x20021; //LANE_MARK_BROKENSOLID | LANE_MARK_WHITEYELLOW,����һ���ʵ���� + LANE_MARK_BROKENBROKEN_WHITEYELLOW = 0x20022; //LANE_MARK_BROKENBROKEN | LANE_MARK_WHITEYELLOW,����һ�˫�� + + LANE_MARK_YELLOWWHITE = 0x30000; ////����Ұ� + LANE_MARK_SOLIDSOLID_YELLOWWHITE = 0x30011; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOWWHITE,����Ұ�˫ʵ�� + LANE_MARK_SOLIDBROKEN_YELLOWWHITE = 0x30012; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOWWHITE,����Ұ�ʵ���� + LANE_MARK_BROKENSOLID_YELLOWWHITE = 0x30021; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOWWHITE,����Ұ���ʵ�� + LANE_MARK_BROKENBROKEN_YELLOWWHITE = 0x30022; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOWWHITE,����Ұ�˫���� + + 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;//加速车�? + LANE_TYPE_Deceleration = 12;//减速车�? + LANE_TYPE_Compound = 13;//???, todo + LANE_TYPE_HOV = 14;//美国/加拿大为提高效率,拼车或者公交车�?行的车道,乘车人数需2人及以上 + LANE_TYPE_Slow = 15;//???? todo + LANE_TYPE_Reversible = 16;//�?汐车�? + LANE_TYPE_EmergencyParking = 17;//紧急停车带 + LANE_TYPE_Emergency = 20; + LANE_TYPE_TurnLeftWaiting = 21; + LANE_TYPE_Ramp = 22;//匝道 + LANE_TYPE_UTurnWaiting = 23;//掉头待转区车�? + LANE_TYPE_TurnRightWaiting = 24;//右转待转区车�? + LANE_TYPE_JuncTurnLeft = 25;//�?口左�?车道 + LANE_TYPE_JuncStraight = 26;//�?口直行车�? + LANE_TYPE_JuncTurnRight = 27;//�?口右�?车道 + LANE_TYPE_Turn = 28;//掉头车道 + LANE_TYPE_Diversion = 29;//导流带车�? + LANE_TYPE_DrivingSide = 30;//�?通车�?-辅路 + LANE_TYPE_BikingSide = 31;//非机动车�?-辅路 + LANE_TYPE_TurnRighSide = 32;//右转车道-辅路 + LANE_TYPE_TaxiLane = 33;//出�?�车专用车道 + LANE_TYPE_LeftOrUturnWaite = 34;//左转或调头待�?车道 + LANE_TYPE_PoliceCarLane = 35;//警务专用车道 + LANE_TYPE_AcceleOrDeceleLane = 36;//加减速车�? +} + +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; //ʮ��·�ڡ�T��·�� + JCT_TYPE_SIDE_MASTER = 612; //��·����·֮���·�ڿ� + JCT_TYPE_TO_RIGHT = 614; //���� + JCT_TYPE_INCREASE = 6151; //���������Ӵ� + JCT_TYPE_DECREASE = 6152; //���������ٴ� + JCT_TYPE_OUT_RAMP = 6153; //���ѵ��� + JCT_TYPE_IN_RAMP = 6154; //���ѵ��� + JCT_TYPE_SINGLE_UTURN = 616; //�����ͷ + JCT_TYPE_RING_LAND = 617; //���� + JCT_TYPE_SAMLL_MASTER = 619; //С·�ڡ���·���Ӵ� + JCT_TYPE_CROSS_NOT_LANE_NOT_SEGGREGATE = 6091; //ʮ��·�ڡ�T��·��(·�ڷ�Χ���޳����߹ᴩ,��·�м����߼�����) + JCT_TYPE_CROSS_NOT_LANE_SEGGREGATE = 6092; //ʮ��·�ڡ�T��·��(·�ڷ�Χ���޳����߹ᴩ,��·�м����߼�����) + JCT_TYPE_CROSS_LANE_NOT_SEGGREGATE = 6201; //ʮ��·�ڡ�T��·��(·�ڷ�Χ�ڴ��ڳ����߹ᴩ,��·�м����߼�����) + JCT_TYPE_CROSS_LANE_SEGGREGATE = 6202; //ʮ��·�ڡ�T��·��(·�ڷ�Χ�ڴ��ڳ����߹ᴩ,��·�м����߼�����) + + JCT_TYPE_UNKOWN = 99999; // δ֪���� +} + +// 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; + + // 将LaneType,LaneArrow,speedlimit绑定到每个geom点上 + repeated LanePoint point = 11; + + // ��ǰ�����ڵ��ܳ��������� + optional uint32 parallel_lane_count = 12; + + // ��ǰ�����ڵij����Ļ����������� + 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; + + // 驶出�?口的lanlink,�?�字段true,非�?�?fasle + optional bool from_junction = 8; + + // 进出�?口的lanlink,�?�字段true,非�?�?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; +} diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 354ca0df3d..e826d5f81c 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -112,6 +112,7 @@ enum MessageType MsgTypeForceStopOrStartCloudReq = 0x10138;//关闭或打开云链接 MsgTypeSetObuUploadReq = 0x10139;//关闭或打开域控上报自车数据到OBU MsgTypeObuUploadStatus = 0x1013A;//obu上报状态查询以结果(上下行) + MsgTypePlanningStopLine = 0x1013B;//决策停止线(自动驾驶决策呈现使用) 定频,理论是10hz,实际会有不同 } message Header diff --git a/libraries/mogo-adas-data/src/main/res/values-en/strings.xml b/libraries/mogo-adas-data/src/main/res/values-en/strings.xml index 945b7badeb..c326933535 100644 --- a/libraries/mogo-adas-data/src/main/res/values-en/strings.xml +++ b/libraries/mogo-adas-data/src/main/res/values-en/strings.xml @@ -92,6 +92,7 @@ Domain control OBU upload switch control Domain control OBU upload status query Domain control OBU upload status response + Planning Stop Line Planning decision state Sweeper index data OBU warning event diff --git a/libraries/mogo-adas-data/src/main/res/values/strings.xml b/libraries/mogo-adas-data/src/main/res/values/strings.xml index 12f216d32c..34f31740ef 100644 --- a/libraries/mogo-adas-data/src/main/res/values/strings.xml +++ b/libraries/mogo-adas-data/src/main/res/values/strings.xml @@ -92,6 +92,7 @@ 域控上报OBU开关控制 域控上报OBU开关状态查询 域控上报OBU开关状态响应 + 决策停止线 Planning决策状态 清扫车指标数据 OBU预警事件 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index ce1670483c..423e3a28af 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -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); + /** * 是否有能力启动自动驾驶 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java index f2351c52ab..ce0c62b736 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java @@ -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; diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningStopLineMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningStopLineMessage.java new file mode 100644 index 0000000000..ab4a27261b --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningStopLineMessage.java @@ -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); + } +}