From e0c042f5182f6ce570ecd84fd33e3311e6010ae2 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 28 Apr 2022 19:22:57 +0800 Subject: [PATCH] =?UTF-8?q?[add]=E5=A2=9E=E5=8A=A0=E6=84=9F=E7=9F=A5?= =?UTF-8?q?=E9=80=8F=E4=BC=A0=E9=9A=9C=E7=A2=8D=E7=89=A9=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=BB=B6=E6=97=B6?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/DataDistribution.java | 15 +++ .../adas/client/bean/PerceptionObstacles.java | 23 ++++ .../zhidao/adas/client/ui/InfoFragment.java | 3 + .../zhidao/adas/client/ui/MainActivity.java | 37 ++++- .../zhidao/adas/client/utils/Constants.java | 1 + .../autopilot/adapter/MoGoAdasListenerImpl.kt | 16 ++- .../src/main/proto/message_pad.proto | 6 +- .../src/main/proto/object.proto | 126 ++++++++++++++++++ .../zhidao/support/adas/high/AdasChannel.java | 10 +- .../support/adas/high/OnAdasListener.java | 10 ++ .../support/adas/high/common/MessageType.java | 1 + .../adas/high/msg/MyMessageFactory.java | 15 ++- .../high/msg/PerceptionObstaclesMessage.java | 28 ++++ 13 files changed, 283 insertions(+), 8 deletions(-) create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionObstacles.java create mode 100644 libraries/mogo-adas-data/src/main/proto/object.proto create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionObstaclesMessage.java diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java index 413cd88d75..8b9f55fa0e 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java @@ -9,6 +9,7 @@ import com.zhidao.adas.client.bean.ErrorData; import com.zhidao.adas.client.bean.GlobalPathResp; import com.zhidao.adas.client.bean.GnssInfo; import com.zhidao.adas.client.bean.MogoReportMessage; +import com.zhidao.adas.client.bean.PerceptionObstacles; import com.zhidao.adas.client.bean.PerceptionTrafficLight; import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; import com.zhidao.adas.client.bean.RecordPanel; @@ -101,6 +102,7 @@ public class DataDistribution { public final List listMogoReportMessage = new ArrayList<>(); public final List listPerceptionTrafficLight = new ArrayList<>(); public final List listPredictionObstacleTrajectory = new ArrayList<>(); + public final List listPerceptionObstacles = new ArrayList<>(); public final List listBasicInfoReq = new ArrayList<>(); public final List listRecordPanel = new ArrayList<>(); public final List listGlobalPathResp = new ArrayList<>(); @@ -222,6 +224,19 @@ public class DataDistribution { // for (OnAdasClientListener listener : listeners) { // listener.onRefresh(); // } +// } + } else if (data instanceof PerceptionObstacles) { + listPerceptionObstacles.add(0, time + str); + if (listPerceptionObstacles.size() > LIST_SIZE) { + listPerceptionObstacles.remove(listPerceptionObstacles.size() - 1); + } + if (listener != null) { + listener.onRefresh(); + } +// if (!listeners.isEmpty()) { +// for (OnAdasClientListener listener : listeners) { +// listener.onRefresh(); +// } // } } else if (data instanceof BasicInfoReq) { listBasicInfoReq.add(0, time + str); diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionObstacles.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionObstacles.java new file mode 100644 index 0000000000..34c3ae91e8 --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PerceptionObstacles.java @@ -0,0 +1,23 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; + +import mogo.telematics.pad.MessagePad; +import perception.ObjectOuterClass; +import prediction.Prediction; + +public class PerceptionObstacles extends BaseInfo { + public final ObjectOuterClass.TrackedObjects bean; + + public PerceptionObstacles(MessagePad.Header header, ObjectOuterClass.TrackedObjects bean) { + super("接收", bean.getSerializedSize(), header); + this.bean = bean; + } + + + @Override + public String toString() { + return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean); + } + +} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java index 4ea018b8ea..977b5af197 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java @@ -149,6 +149,9 @@ public class InfoFragment extends BaseFragment { case Constants.TITLE.RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY: adapter.setData(DataDistribution.getInstance().listPredictionObstacleTrajectory); break; + case Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES: + adapter.setData(DataDistribution.getInstance().listPerceptionObstacles); + break; case Constants.TITLE.RECEIVE_ERROR: adapter.setData(DataDistribution.getInstance().listErrorData); break; diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 3fb2d54180..362e519344 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -56,6 +56,7 @@ import com.zhidao.adas.client.bean.GnssInfo; import com.zhidao.adas.client.bean.IPCConnectState; import com.zhidao.adas.client.bean.MogoReportMessage; import com.zhidao.adas.client.bean.MySSHResult; +import com.zhidao.adas.client.bean.PerceptionObstacles; import com.zhidao.adas.client.bean.PerceptionTrafficLight; import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; import com.zhidao.adas.client.bean.RecordPanel; @@ -91,6 +92,7 @@ import chassis.VehicleStateOuterClass; import io.netty.channel.Channel; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; +import perception.ObjectOuterClass; import perception.TrafficLightOuterClass; import prediction.Prediction; import record_cache.RecordPanelOuterClass; @@ -143,6 +145,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas private InfoFragment reportMessageFragment; private InfoFragment perceptionTrafficLightFragment; private InfoFragment predictionObstacleTrajectoryFragment; + private InfoFragment perceptionObstaclesFragment; private VersionFragment versionFragment; private FragmentManager manager; private FragmentTransaction transaction; @@ -449,6 +452,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas titleFragmentData.add(Constants.TITLE.RECEIVE_GNSS_INFO); titleFragmentData.add(Constants.TITLE.RECEIVE_TRAJECTORY); titleFragmentData.add(Constants.TITLE.RECEIVE_TRACKED_OBJECTS); + titleFragmentData.add(Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES); titleFragmentData.add(Constants.TITLE.RECEIVE_VEHICLE_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_AUTOPILOT_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_REPORT_MESSAGE); @@ -494,6 +498,22 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas btnAdapter.setOnItemClickListener(this); } + /** + * 感知接口 提示 + * + * @param isSeriaNet 是否是透传接口 + */ + private void hintTrackedObjects(boolean isSeriaNet) { + int value = 0; + MessagePad.CarConfigResp carConfigResp = AdasManager.getInstance().getCarConfig(); + if (carConfigResp != null) { + value = carConfigResp.getProtocolVersionValue(); + } + if (isSeriaNet && value < 3 && value > 0 || value > 2) { + showToastCenter("当前工控机协议版本:" + value + ",此接口不受支持"); + } + } + private void initFragmentRecyclerView() { //创建默认的线性LayoutManager 横向的GridLayoutManager LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); @@ -528,6 +548,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } break; case Constants.TITLE.RECEIVE_TRACKED_OBJECTS: + hintTrackedObjects(false); if (viewFragment == null) viewFragment = new InfoFragment(data); if (!viewFragment.isVisible()) { @@ -616,6 +637,15 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas transaction.commit(); } break; + case Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES: + hintTrackedObjects(true); + if (perceptionObstaclesFragment == null) + perceptionObstaclesFragment = new InfoFragment(data); + if (!perceptionObstaclesFragment.isVisible()) { + transaction.replace(R.id.fl_info, perceptionObstaclesFragment); + transaction.commit(); + } + break; case Constants.TITLE.RECEIVE_CAR_CONFIG_RESP: AdasManager.getInstance().sendCarConfigReq(); if (versionFragment == null) @@ -709,7 +739,6 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } - @Override public void onError(ProtocolStatus status, byte[] bytes) { ErrorData base = new ErrorData(status, bytes); @@ -764,6 +793,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas DataDistribution.getInstance().addData(base); } + @Override + public void onTrackedObjects(MessagePad.Header header, ObjectOuterClass.TrackedObjects trackedObjects) { + PerceptionObstacles base = new PerceptionObstacles(header, trackedObjects); + DataDistribution.getInstance().addData(base); + } + @Override public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) { BasicInfoReq info = new BasicInfoReq(header, basicInfoReq); diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java index 2b4d91388a..e6c30f51fe 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java @@ -151,6 +151,7 @@ public class Constants { String RECEIVE_REPORT_MESSAGE = "监控事件"; String RECEIVE_PERCEPTION_TRAFFIC_LIGHT = "感知红绿灯"; String RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY = "他车轨迹预测"; + String RECEIVE_PERCEPTION_OBSTACLES = "透传的融合障碍物"; // String RECEIVE_BASIC_INFO_REQ = "自动驾驶设备基础信息请求"; String RECEIVE_CAR_CONFIG_RESP = "信息与配置"; diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index 8b06378099..dafacd5491 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -45,6 +45,7 @@ import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject import mogo_msg.MogoReportMsg +import perception.ObjectOuterClass import perception.TrafficLightOuterClass import prediction.Prediction import record_cache.RecordPanelOuterClass @@ -97,6 +98,19 @@ class MoGoAdasListenerImpl : OnAdasListener { } } + /** + * 透传的融合障碍物 他车数据 + * 当 MessagePad.CarConfigResp.getProtocolVersionValue() >=3 时此回调有数据,老接口“MessagePad.TrackedObjects”不会回调任何数据 + * + * @param header 头 + * @param trackedObjects 数据 + */ + override fun onTrackedObjects( + header: MessagePad.Header?, + trackedObjects: ObjectOuterClass.TrackedObjects? + ) { + } + //自车定位信息 @ChainLog( linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, @@ -175,7 +189,7 @@ class MoGoAdasListenerImpl : OnAdasListener { if (autopilotStatusInfo.connectIP == null) { autopilotStatusInfo.connectIP = AdasManager.getInstance().ipcConnectedIp } - if(autopilotStatusInfo.connectPort == null){ + if (autopilotStatusInfo.connectPort == null) { autopilotStatusInfo.connectPort = AdasManager.getInstance().ipcConnectedPort } if (autopilotStatusInfo.dockVersion == null) { 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 4d71cebaec..3b403eed2b 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -3,7 +3,7 @@ package mogo.telematics.pad; enum ProtocolVersion{ Defaultver = 0; - CurrentVersion = 2; //每次修改proto文件增加1 + CurrentVersion = 3; //每次修改proto文件增加1 } enum MessageType @@ -18,6 +18,7 @@ enum MessageType MsgTypeReportMessage = 0x10005; //监控事件报告 MsgTypePerceptionTrafficLight = 0x10006; //感知红绿灯 MsgTypePredictionObstacleTrajectory = 0x10007; //他车轨迹预测 + MsgTypePerceptionObstacles = 0x10008; //透传的融合障碍物 MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求 MsgTypeBasicInfoResp = 0x10101; //自动驾驶设备基础信息应答 @@ -129,6 +130,9 @@ message AutopilotState // message definition for MessageType: MsgTypePredictionObstacleTrajectory // refer to prediction.proto +// message definition for MessageType: MsgTypePerceptionObstacles +// refer to TrackedObjects in object.proto + // message definition for MessageType: MsgTypeBasicInfoReq message BasicInfoReq { diff --git a/libraries/mogo-adas-data/src/main/proto/object.proto b/libraries/mogo-adas-data/src/main/proto/object.proto new file mode 100644 index 0000000000..af31f08475 --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/object.proto @@ -0,0 +1,126 @@ +syntax = "proto2"; +package perception; + +import "header.proto"; +import "geometry.proto"; + +enum ObjectType { + TYPE_UNKNOWN = 0; + TYPE_PEDESTRIAN = 3; + TYPE_BICYCLE = 4; + TYPE_MOTOR = 5; + TYPE_RIDER = 6; + TYPE_CAR = 7; + TYPE_TRUCK = 8; + TYPE_BUS = 9; + TYPE_TRAIN = 10; + TYPE_SIGN = 20; + TYPE_LIGHT = 30; + TYPE_RED = 31; + TYPE_GREEN = 32; + TYPE_YELLOW = 33; + TYPE_BLACK = 34; + TYPE_TRIANGLEROADBLOCK = 35; + TYPE_WARNINGTRIANGLE = 36; + TYPE_UNKNOWN_SMALL = 91; + TYPE_UNKNOWN_BIG = 92; + TYPE_UNKNOWN_STATIC = 93; + TYPE_UNKNOWN_DYNAMIC = 94; +} + +message BBox2D { + optional double xmin = 1 [default = nan]; // in pixel. + optional double ymin = 2 [default = nan]; + optional double xmax = 3 [default = nan]; + optional double ymax = 4 [default = nan]; +} + +message CameraObjectSupplement { + optional bool on_use = 1 [default = false]; + optional BBox2D box = 2; + optional int32 cols = 3; + optional int32 rows = 4; +} + +message LidarObjectSupplement { + optional bool on_use = 1 [default = false]; + // Format: [x0, y0, z0, x1, y1, z1...] + repeated double cloud = 2 [packed = true]; +} + +message RadarObjectSupplement { + optional bool on_use = 1 [default = false]; + optional float x = 2; + optional float y = 3; + optional float relative_vel_x = 4; + optional float relative_vel_y = 5; + optional float absolute_vel_x = 6; + optional float absolute_vel_y = 7; +} + +message Object { + optional uint32 id = 1; // obj id, after tracked + optional string sensor_name = 2; + + optional ObjectType type = 3; // obj category + + optional double time_stamp = 4; // sensing time + optional float confidence = 5; // probability + optional int32 status = 6; // reserved + + optional float x_distance = 7; // longitudinal distance + optional float y_distance = 8; // lateral distance + optional float angle = 9; // obj angle relative to host vehicle + + optional geometry.Point center = 10; // x,y,z in meter + optional geometry.Point centroid = 11; + optional geometry.Vector3 size = 12; // length width height(in meter) + repeated geometry.Point contour = 13; // contour points + + optional geometry.Vector3 velocity = 14; // sharing with visual/tracked obj + optional geometry.Vector3 acceleration = 15; + + optional double tracking_time = 16; + + // camera supplement + optional CameraObjectSupplement camera_supplement = 17; + // lidar supplement + optional LidarObjectSupplement lidar_supplement = 18; + // radar supplement + optional RadarObjectSupplement radar_supplement = 19; + //lidar polygon + repeated geometry.Point polygon = 20; // polygon points +} + +message TrackedObject { + optional Object obj = 1; + + optional float yaw = 2; //box orientation angle from x axis, counter clockwise(in rad),range 0 to 2*pi + optional float yaw_rate = 3; //in rad/s + optional geometry.Vector3 velocity = 4; // absolute velocity, in m/s, vx, vy, vz + repeated geometry.Trace trace = 5; // historical positions + repeated geometry.Trace prediction = 6; // predicted global position in future stamp + + optional float absolute_longitude_v = 7; // along lane speed, m/s + optional float absolute_longitude_a = 8; // in m/s2, longitudinal acc + optional float absolute_lateral_v = 9; // vertical to lane speed, left positive, m/s + + optional double longitude = 10; // longitude , in degrees + optional double latitude = 11; // latitude , in degrees + optional double alt = 12; // height above mean sea level in meters + + optional double longitude_p = 13; // position in East , in meters + optional double latitude_p = 14; // position in North , in meters + + optional double speed = 15; //absolute speed + +//float x_speed // longitudinal speed relative to host vehicle, m/s +//float y_speed // lateral speed relative to host vehicle, m/s +} + +message TrackedObjects { + optional common.Header header = 1; + optional string sensor_name = 2; + repeated TrackedObject objs = 3; +} + diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 4f496b4a2c..1f1c747173 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -34,6 +34,8 @@ import com.zhjt.service.chain.TracingConstants; import org.json.JSONObject; import java.util.HashSet; +import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.atomic.AtomicInteger; import mogo.telematics.pad.MessagePad; @@ -358,7 +360,13 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec if (adasConnectStatusListener != null) { adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), "已连接"); } - sendCarConfigReq(); + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + sendCarConfigReq(); + } + }, 1600L); // 延迟1秒,执行一次task } @Override 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 c8b5ff52e4..23f6e9b78c 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 @@ -6,6 +6,7 @@ import com.zhidao.support.adas.high.common.ProtocolStatus; import chassis.VehicleStateOuterClass; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; +import perception.ObjectOuterClass; import perception.TrafficLightOuterClass; import prediction.Prediction; import record_cache.RecordPanelOuterClass; @@ -88,6 +89,15 @@ public interface OnAdasListener { */ void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects); + /** + * 透传的融合障碍物 他车数据 + * 当 MessagePad.CarConfigResp.getProtocolVersionValue() >=3 时此回调有数据,老接口“MessagePad.TrackedObjects”不会回调任何数据 + * + * @param header 头 + * @param trackedObjects 数据 + */ + void onTrackedObjects(MessagePad.Header header, ObjectOuterClass.TrackedObjects trackedObjects); + /** * 自动驾驶设备基础信息请求 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 2685ca4ba5..db696fced8 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -20,6 +20,7 @@ public enum MessageType { TYPE_RECEIVE_REPORT_MESSAGE(MessagePad.MessageType.MsgTypeReportMessage, "监控事件报告"), TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT(MessagePad.MessageType.MsgTypePerceptionTrafficLight, "感知红绿灯"), TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY(MessagePad.MessageType.MsgTypePredictionObstacleTrajectory, "他车轨迹预测"), + TYPE_RECEIVE_PERCEPTION_OBSTACLES(MessagePad.MessageType.MsgTypePerceptionObstacles, "透传的融合障碍物"), TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"), TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"), 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 9a786d3c8d..2dbaf88b86 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 @@ -18,7 +18,8 @@ public class MyMessageFactory implements IMyMessageFactory { private IMsg autopilotStateMessage;//自动驾驶状态 private IMsg reportMessage;//监控事件报告 private IMsg perceptionTrafficLightMessage;//感知红绿灯 - private IMsg predictionObstacleTrajectory;//他车轨迹预测 + private IMsg predictionObstacleTrajectoryMessage;//他车轨迹预测 + private IMsg perceptionObstaclesMessage;//透传的融合障碍物 private IMsg basicInfoReqMessage;//自动驾驶设备基础信息请求 private IMsg carConfigRespMessage;//车机基础信息应答 @@ -94,10 +95,16 @@ public class MyMessageFactory implements IMyMessageFactory { return perceptionTrafficLightMessage; } else if (messageType == MessageType.TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.typeCode) { //他车轨迹预测 - if (predictionObstacleTrajectory == null) { - predictionObstacleTrajectory = new PredictionObstacleTrajectoryMessage(); + if (predictionObstacleTrajectoryMessage == null) { + predictionObstacleTrajectoryMessage = new PredictionObstacleTrajectoryMessage(); } - return predictionObstacleTrajectory; + return predictionObstacleTrajectoryMessage; + } else if (messageType == MessageType.TYPE_RECEIVE_PERCEPTION_OBSTACLES.typeCode) { + //他车轨迹预测 + if (perceptionObstaclesMessage == null) { + perceptionObstaclesMessage = new PerceptionObstaclesMessage(); + } + return perceptionObstaclesMessage; } else if (messageType == MessageType.TYPE_RECEIVE_BASIC_INFO_REQ.typeCode) { //自动驾驶设备基础信息请求 if (basicInfoReqMessage == null) { diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionObstaclesMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionObstaclesMessage.java new file mode 100644 index 0000000000..9e31d08ec5 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PerceptionObstaclesMessage.java @@ -0,0 +1,28 @@ +package com.zhidao.support.adas.high.msg; + +import com.google.gson.Gson; +import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.OnAdasListener; + +import mogo.telematics.pad.MessagePad; +import perception.ObjectOuterClass; + +/** + * 透传的融合障碍物 ProtocolVersion >=3 版本生效 + */ +public class PerceptionObstaclesMessage extends MyAbstractMessageHandler { + + @Override + public void handlerMsg(Gson gson, OnAdasListener adasListener, String msg) { + } + + @Override + public void handlerMsg(MessagePad.Header header, byte[] msg, OnAdasListener adasListener) throws InvalidProtocolBufferException { + ObjectOuterClass.TrackedObjects trackedObjects = ObjectOuterClass.TrackedObjects.parseFrom(msg); + if (adasListener != null) { + adasListener.onTrackedObjects(header, trackedObjects); + } + } + + +}