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 8b9f55fa0e..db72b9ce94 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.MyPointCloud; import com.zhidao.adas.client.bean.PerceptionObstacles; import com.zhidao.adas.client.bean.PerceptionTrafficLight; import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; @@ -110,6 +111,7 @@ public class DataDistribution { public final List listArrivalNotification = new ArrayList<>(); public final List listErrorData = new ArrayList<>(); public final List listUpdate = new ArrayList<>(); + public final List listPointCloud = new ArrayList<>(); public String cutDown(String str) { if (isCutDown && str.length() > 650) { @@ -146,6 +148,19 @@ public class DataDistribution { // for (OnAdasClientListener listener : listeners) { // listener.onRefresh(); // } +// } + } else if (data instanceof MyPointCloud) { + listPointCloud.add(0, time + str); + if (listPointCloud.size() > LIST_SIZE) { + listPointCloud.remove(listPointCloud.size() - 1); + } + if (listener != null) { + listener.onRefresh(); + } +// if (!listeners.isEmpty()) { +// for (OnAdasClientListener listener : listeners) { +// listener.onRefresh(); +// } // } } else if (data instanceof GnssInfo) { listGnssInfo.add(0, time + str); diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MyPointCloud.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MyPointCloud.java new file mode 100644 index 0000000000..554fedec96 --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MyPointCloud.java @@ -0,0 +1,21 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; + +import mogo.telematics.pad.MessagePad; + +public class MyPointCloud extends BaseInfo { + public final rule_segement.PointCloud.LidarPointCloud bean; + + public MyPointCloud(MessagePad.Header header, rule_segement.PointCloud.LidarPointCloud 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 977b5af197..299bda0d76 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 @@ -152,6 +152,10 @@ public class InfoFragment extends BaseFragment { case Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES: adapter.setData(DataDistribution.getInstance().listPerceptionObstacles); break; + case Constants.TITLE.RECEIVE_POINT_CLOUD: + adapter.setData(DataDistribution.getInstance().listPointCloud); + 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 362e519344..c84e8c34bb 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 @@ -42,6 +42,7 @@ import com.mogo.telematic.client.listener.NettyClientListener; import com.mogo.telematic.client.status.ConnectState; import com.mogo.telematic.server.netty.NettyServerListener; import com.zhidao.adas.client.BuildConfig; +import com.zhidao.adas.client.DataDistribution; import com.zhidao.adas.client.R; import com.zhidao.adas.client.adapter.InfoTitleAdapter; import com.zhidao.adas.client.base.BaseActivity; @@ -55,7 +56,7 @@ import com.zhidao.adas.client.bean.GlobalPathResp; 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.MyPointCloud; import com.zhidao.adas.client.bean.PerceptionObstacles; import com.zhidao.adas.client.bean.PerceptionTrafficLight; import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; @@ -64,7 +65,6 @@ import com.zhidao.adas.client.bean.TrackedObjects; import com.zhidao.adas.client.bean.Trajectory; import com.zhidao.adas.client.bean.VehicleState; import com.zhidao.adas.client.bean.Warn; -import com.zhidao.adas.client.DataDistribution; import com.zhidao.adas.client.log.LogSave; import com.zhidao.adas.client.utils.Constants; import com.zhidao.support.adas.high.AdasManager; @@ -73,7 +73,6 @@ import com.zhidao.support.adas.high.OnAdasConnectStatusListener; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.OnMultiDeviceListener; import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo; -import com.zhidao.adas.client.ssh.SSHResult; import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS; import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.ProtocolStatus; @@ -96,6 +95,7 @@ import perception.ObjectOuterClass; import perception.TrafficLightOuterClass; import prediction.Prediction; import record_cache.RecordPanelOuterClass; +import rule_segement.PointCloud; public class MainActivity extends BaseActivity implements OnAdasListener, OnAdasConnectStatusListener, BaseAdapter.OnItemClickListener { private final static String TAG = MainActivity.class.getSimpleName(); @@ -146,6 +146,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas private InfoFragment perceptionTrafficLightFragment; private InfoFragment predictionObstacleTrajectoryFragment; private InfoFragment perceptionObstaclesFragment; + private InfoFragment pointCloudFragment; private VersionFragment versionFragment; private FragmentManager manager; private FragmentTransaction transaction; @@ -453,6 +454,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas 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_POINT_CLOUD); titleFragmentData.add(Constants.TITLE.RECEIVE_VEHICLE_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_AUTOPILOT_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_REPORT_MESSAGE); @@ -646,6 +648,14 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas transaction.commit(); } break; + case Constants.TITLE.RECEIVE_POINT_CLOUD: + if (pointCloudFragment == null) + pointCloudFragment = new InfoFragment(data); + if (!pointCloudFragment.isVisible()) { + transaction.replace(R.id.fl_info, pointCloudFragment); + transaction.commit(); + } + break; case Constants.TITLE.RECEIVE_CAR_CONFIG_RESP: AdasManager.getInstance().sendCarConfigReq(); if (versionFragment == null) @@ -799,6 +809,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas DataDistribution.getInstance().addData(base); } + @Override + public void onPointCloud(MessagePad.Header header, PointCloud.LidarPointCloud pointCloud) { + MyPointCloud base = new MyPointCloud(header, pointCloud); + 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 6ff6e9a4cc..676ddb7d91 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 @@ -152,6 +152,7 @@ public class Constants { String RECEIVE_PERCEPTION_TRAFFIC_LIGHT = "感知红绿灯"; String RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY = "他车轨迹预测"; String RECEIVE_PERCEPTION_OBSTACLES = "透传障碍物"; + String RECEIVE_POINT_CLOUD = "点云透传"; // 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 dafacd5491..ba9bdb1bff 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 @@ -49,6 +49,7 @@ import perception.ObjectOuterClass import perception.TrafficLightOuterClass import prediction.Prediction import record_cache.RecordPanelOuterClass +import rule_segement.PointCloud /** * @author emArrow @@ -235,6 +236,10 @@ class MoGoAdasListenerImpl : OnAdasListener { //他车轨迹预测 } + override fun onPointCloud(header: MessagePad.Header?, pointCloud: PointCloud.LidarPointCloud?) { + //点云数据透传 + } + override fun onBasicInfoReq( header: MessagePad.Header, basicInfoReq: MessagePad.BasicInfoReq? 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 3b403eed2b..b10495ce2f 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 = 3; //每次修改proto文件增加1 + CurrentVersion = 4; //每次修改proto文件增加1 } enum MessageType @@ -19,6 +19,7 @@ enum MessageType MsgTypePerceptionTrafficLight = 0x10006; //感知红绿灯 MsgTypePredictionObstacleTrajectory = 0x10007; //他车轨迹预测 MsgTypePerceptionObstacles = 0x10008; //透传的融合障碍物 + MsgTypePointCloud = 0x10009; //点云透传 MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求 MsgTypeBasicInfoResp = 0x10101; //自动驾驶设备基础信息应答 @@ -133,6 +134,9 @@ message AutopilotState // message definition for MessageType: MsgTypePerceptionObstacles // refer to TrackedObjects in object.proto +// message definition for MessageType: MsgTypePointCloud +// refer to point_cloud.proto + // message definition for MessageType: MsgTypeBasicInfoReq message BasicInfoReq { diff --git a/libraries/mogo-adas-data/src/main/proto/point_cloud.proto b/libraries/mogo-adas-data/src/main/proto/point_cloud.proto new file mode 100644 index 0000000000..e745750060 --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/point_cloud.proto @@ -0,0 +1,14 @@ +syntax="proto2"; +package rule_segement; + +import "header.proto"; + +message LidarPointCloud +{ + optional common.Header header = 1; + optional double self_longitude = 2; + optional double self_latitude = 3; + optional double self_yaw = 4; + repeated float del_data = 7 [packed=true]; + repeated float add_data = 8 [packed=true]; +} \ No newline at end of file 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 23f6e9b78c..e1d3205636 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 @@ -10,6 +10,7 @@ import perception.ObjectOuterClass; import perception.TrafficLightOuterClass; import prediction.Prediction; import record_cache.RecordPanelOuterClass; +import rule_segement.PointCloud; /** * @ProjectName: lib-adas-fpga @@ -98,6 +99,14 @@ public interface OnAdasListener { */ void onTrackedObjects(MessagePad.Header header, ObjectOuterClass.TrackedObjects trackedObjects); + /** + * 透传的点云数据 + * + * @param header 头 + * @param pointCloud 数据 + */ + void onPointCloud(MessagePad.Header header, PointCloud.LidarPointCloud pointCloud); + /** * 自动驾驶设备基础信息请求 * 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 db696fced8..78cd3f8d27 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 @@ -21,6 +21,7 @@ public enum MessageType { 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_POINT_CLOUD(MessagePad.MessageType.MsgTypePointCloud, "点云透传"), 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 2dbaf88b86..f12832d33b 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 @@ -20,6 +20,7 @@ public class MyMessageFactory implements IMyMessageFactory { private IMsg perceptionTrafficLightMessage;//感知红绿灯 private IMsg predictionObstacleTrajectoryMessage;//他车轨迹预测 private IMsg perceptionObstaclesMessage;//透传的融合障碍物 + private IMsg pointCloudMessage;//透传点云数据 private IMsg basicInfoReqMessage;//自动驾驶设备基础信息请求 private IMsg carConfigRespMessage;//车机基础信息应答 @@ -105,6 +106,12 @@ public class MyMessageFactory implements IMyMessageFactory { perceptionObstaclesMessage = new PerceptionObstaclesMessage(); } return perceptionObstaclesMessage; + } else if (messageType == MessageType.TYPE_RECEIVE_POINT_CLOUD.typeCode) { + //他车轨迹预测 + if (pointCloudMessage == null) { + pointCloudMessage = new PointCloudMessage(); + } + return pointCloudMessage; } 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/PointCloudMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PointCloudMessage.java new file mode 100644 index 0000000000..75abf34b1e --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PointCloudMessage.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 rule_segement.PointCloud; + +/** + * 透传点云数据 + */ +public class PointCloudMessage 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 { + PointCloud.LidarPointCloud pointCloud = PointCloud.LidarPointCloud.parseFrom(msg); + if (adasListener != null) { + adasListener.onPointCloud(header, pointCloud); + } + } + + +}