From 1ce99f8cdb11c03376a916bdeaf9c92b4f872089 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 9 May 2022 17:09:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[BadCase]BadCase=E5=85=A5=E5=8F=A3=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E8=B6=85=E8=BF=874=E5=B0=8F=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 8 ++++---- .../functions/test/AutoPilotBadCaseTest.kt | 1 + .../autopilot/adapter/MoGoAdasListenerImpl.kt | 2 ++ .../badcase/BadCaseManager.kt | 3 ++- .../IMoGoAutopilotVehicleStateListener.kt | 1 - ...lerAutopilotVehicleStateListenerManager.kt | 19 +++++++++++++++---- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index aed4fbd960..14008b885a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,9 +25,9 @@ if (!isAndroidTestBuild()) { } } -//if (!isAndroidTestBuild()) { +if (!isAndroidTestBuild()) { apply plugin: 'apm-plugin' -//} +} //if (!isAndroidTestBuild()) { // apply plugin: 'bytex.threadOpt' @@ -265,7 +265,7 @@ dependencies { androidTestImplementation rootProject.ext.dependencies.androidx_espresso_core } -//if (!isAndroidTestBuild()) { +if (!isAndroidTestBuild()) { ApmPlugin { // 是否进行插桩 enable true @@ -289,7 +289,7 @@ dependencies { ] } -//} +} android.applicationVariants.all { variant -> def buildTime = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08:00")) diff --git a/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt b/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt index 41984bba30..766ef7cb4e 100644 --- a/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt +++ b/app/src/androidTest/java/com/mogo/functions/test/AutoPilotBadCaseTest.kt @@ -33,6 +33,7 @@ class AutoPilotBadCaseTest { @Test fun showBadCaseEntrance1(): Unit = runBlocking(Dispatchers.Main) { ensureMoGoHmiFragmentShow() + delay(TimeUnit.MILLISECONDS.toSeconds(30)) var index = 0 (1 until 50) .map { it } 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..2deec258b6 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 @@ -175,6 +175,8 @@ class MoGoAdasListenerImpl : OnAdasListener { autopilotState: MessagePad.AutopilotState? ) { if (autopilotState != null) { + //工控机模拟时间 + CallerAutopilotVehicleStateListenerManager.invokeAutopilotTime(header.timestamp.toLong()) if (HdMapBuildConfig.isMapLoaded) { // 初始化自动驾驶状态信息 val autopilotStatusInfo = getAutoPilotStatusInfo() diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 930224fd9d..6bb8c3fdae 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -14,6 +14,7 @@ import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.kotlin.PX import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -193,7 +194,7 @@ internal object BadCaseManager : LifecycleEventObserver { private fun CoroutineScope.showBadCaseInternal(record: AutoPilotRecord) = launch { viewHolder?.get()?.also { itx -> - presenter.updateLastModified(record.toLongTime()) + presenter.updateLastModified(CallerAutopilotVehicleStateListenerManager.getAutopilotTimeStamp()) showEntry() itx.onClick { showBadCaseFloat( diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotVehicleStateListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotVehicleStateListener.kt index 5ed01d9298..a980b68591 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotVehicleStateListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotVehicleStateListener.kt @@ -30,5 +30,4 @@ interface IMoGoAutopilotVehicleStateListener { * @param gear 档位 */ fun onAutopilotGearData(gear: Chassis.GearPosition) - } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotVehicleStateListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotVehicleStateListenerManager.kt index 92dee2d168..f08725d29c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotVehicleStateListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotVehicleStateListenerManager.kt @@ -15,6 +15,9 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() { private val M_AUTOPILOT_VEHICLE_LISTENERS: ConcurrentHashMap = ConcurrentHashMap() + @Volatile + private var timeStamp: Long = 0L + /** * 添加 ADAS车辆状态&定位 监听 * @param tag 标记,用来注销监听使用 @@ -57,7 +60,6 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() { * 车辆转向灯数据回调 * @param lightSwitch */ - @Synchronized fun invokeAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) { M_AUTOPILOT_VEHICLE_LISTENERS.forEach { val listener = it.value @@ -69,7 +71,6 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() { * 车辆刹车灯数据回调 * @param brakeLight */ - @Synchronized fun invokeAutopilotBrakeLightData(brakeLight: Boolean) { M_AUTOPILOT_VEHICLE_LISTENERS.forEach { val listener = it.value @@ -81,7 +82,6 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() { * 车辆方向盘转向角回调 * @param steering 方向盘转向角 */ - @Synchronized fun invokeAutopilotSteeringData(steering: Float){ M_AUTOPILOT_VEHICLE_LISTENERS.forEach{ val listener = it.value @@ -93,7 +93,6 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() { * 车辆挂挡档位 * @param gear 档位 */ - @Synchronized fun invokeAutopilotGearData(gear: Chassis.GearPosition){ M_AUTOPILOT_VEHICLE_LISTENERS.forEach{ val listener = it.value @@ -101,5 +100,17 @@ object CallerAutopilotVehicleStateListenerManager : CallerBase() { } } + /** + * 工控机时间回调 + */ + fun invokeAutopilotTime(time: Long) { + this.timeStamp = time + } + /** + * 获取工控机的时间, 单位是秒 + */ + fun getAutopilotTimeStamp(): Long { + return this.timeStamp + } } \ No newline at end of file From 2ae168b0d76f79d82cab7c373607250ab4a9576a Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Mon, 9 May 2022 17:43:44 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[change]=E5=A2=9E=E5=8A=A0=E9=80=8F?= =?UTF-8?q?=E4=BC=A0=E7=82=B9=E4=BA=91=E6=8E=A5=E5=8F=A3,=E5=8D=87?= =?UTF-8?q?=E7=BA=A7PB=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/DataDistribution.java | 15 ++++++++++ .../zhidao/adas/client/bean/MyPointCloud.java | 21 ++++++++++++++ .../zhidao/adas/client/ui/InfoFragment.java | 4 +++ .../zhidao/adas/client/ui/MainActivity.java | 22 +++++++++++++-- .../zhidao/adas/client/utils/Constants.java | 1 + .../autopilot/adapter/MoGoAdasListenerImpl.kt | 5 ++++ .../src/main/proto/message_pad.proto | 6 +++- .../src/main/proto/point_cloud.proto | 14 ++++++++++ .../support/adas/high/OnAdasListener.java | 9 ++++++ .../support/adas/high/common/MessageType.java | 1 + .../adas/high/msg/MyMessageFactory.java | 7 +++++ .../adas/high/msg/PointCloudMessage.java | 28 +++++++++++++++++++ 12 files changed, 129 insertions(+), 4 deletions(-) create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/MyPointCloud.java create mode 100644 libraries/mogo-adas-data/src/main/proto/point_cloud.proto create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PointCloudMessage.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 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); + } + } + + +} From f4bb0af9e330945fa937a8537f04602c290c4b56 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Mon, 9 May 2022 18:33:09 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[change]=E5=B0=81=E8=A3=85=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E7=8A=B6=E6=80=81=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/support/adas/high/AdasChannel.java | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) 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 d1072081d7..df4a5b7033 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 @@ -9,12 +9,14 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_CONNEC import android.text.TextUtils; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.gson.Gson; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.bean.BaseInfo; import com.zhidao.support.adas.high.common.Constants; import com.zhidao.support.adas.high.common.CupidLogUtils; +import com.zhidao.support.adas.high.common.Define; import com.zhidao.support.adas.high.common.DigitalTrans; import com.zhidao.support.adas.high.common.IPCFixationIPHelper; import com.zhidao.support.adas.high.common.MessageType; @@ -104,18 +106,12 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec @Override public void onStartFindIP() { - if (adasConnectStatusListener != null) { - ipcConnectionStatus.set(Constants.IPC_CONNECTION_STATUS.SEARCH_ADDRESS); - adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), "正在搜索IP"); - } + updateConnectStatus(Constants.IPC_CONNECTION_STATUS.SEARCH_ADDRESS, "正在搜索IP"); } @Override public void onStopFindIP() { - if (adasConnectStatusListener != null) { - ipcConnectionStatus.set(Constants.IPC_CONNECTION_STATUS.DISCONNECTED); - adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), "停止搜索IP"); - } + updateConnectStatus(Constants.IPC_CONNECTION_STATUS.DISCONNECTED, "停止搜索IP"); } /** @@ -346,36 +342,26 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec @Override public void onConnecting(String msg) { - ipcConnectionStatus.set(Constants.IPC_CONNECTION_STATUS.CONNECTING); - if (adasConnectStatusListener != null) { - adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), msg); - } + updateConnectStatus(Constants.IPC_CONNECTION_STATUS.CONNECTING, msg); } @Override public void onWebSocketConnectSuccess(String ipAddress, int port) { - ipcConnectionStatus.set(Constants.IPC_CONNECTION_STATUS.CONNECTED); ipcConnectedIp = ipAddress; ipcConnectedPort = port; - if (adasConnectStatusListener != null) { - adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), "已连接"); - } + updateConnectStatus(Constants.IPC_CONNECTION_STATUS.CONNECTED, "已连接"); sendCarConfigReq(); } @Override public void onWebSocketConnectFailed(String t) { - ipcConnectionStatus.set(Constants.IPC_CONNECTION_STATUS.DISCONNECTED); ipcConnectedIp = null; ipcConnectedPort = Constants.DEFAULT_PORT; - if (adasConnectStatusListener != null) { - adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), t); - } + updateConnectStatus(Constants.IPC_CONNECTION_STATUS.DISCONNECTED, t); } @Override public void onMessage(String message) { - handlerWSMsg(message); } @Override @@ -384,10 +370,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } private void notFoundAddress() { - ipcConnectionStatus.set(Constants.IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS); - if (adasConnectStatusListener != null) { - adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), "地址不可用或不合法"); - } + updateConnectStatus(Constants.IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS, "地址不可用或不合法"); } /** @@ -438,6 +421,20 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec //连接状态listener private final OnAdasConnectStatusListener adasConnectStatusListener; + /** + * 更新连接状态 + * + * @param status 状态 + * @param reason 状态描述 + * 如果ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED && reason==null 表示主动断开连接 + */ + private void updateConnectStatus(@Define.IPCConnectionStatus int status, @Nullable String reason) { + ipcConnectionStatus.set(status); + if (adasConnectStatusListener != null) { + adasConnectStatusListener.onConnectionIPCStatus(ipcConnectionStatus.get(), reason); + } + } + void setOnAdasListener(OnAdasListener adasListener) { mAdasListener = adasListener; }