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 58b6a19d99..1ab3f18cc3 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
@@ -3,7 +3,6 @@ package com.mogo.eagle.core.function.autopilot.adapter
import chassis.VehicleStateOuterClass
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HdMapBuildConfig
-import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD
@@ -33,10 +32,11 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListe
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarStatusListenerManager.invokeAutopilotCarStateData
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate
-import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager.invokeAutopilotRecordResult
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager.invokeAutopilotWarnMessage
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotRotting
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotTrajectory
+import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPointCloudListenerManager
+import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager.invokeAutopilotRecordResult
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.zhidao.support.adas.high.AdasManager
@@ -241,6 +241,8 @@ class MoGoAdasListenerImpl : OnAdasListener {
override fun onPointCloud(header: MessagePad.Header?, pointCloud: PointCloud.LidarPointCloud?) {
//点云数据透传
+ //Logger.d("pointCloud","pointCloud"+pointCloud);
+ CallerAutopilotPointCloudListenerManager.invokeAutopilotPointCloudDataUpdate(header,pointCloud)
}
override fun onBasicInfoReq(
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
index 9a4f92b8f5..461cf45baa 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
@@ -550,6 +550,12 @@ class DebugSettingView @JvmOverloads constructor(
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked
}
+ //TODO
+ tbIsDrawPath.setOnCheckedChangeListener { _, isChecked ->
+
+ }
+
+
// 初始化 GSP数据源 数据
rgGpsProvider.check(
when (FunctionBuildConfig.gpsProvider) {
@@ -603,6 +609,13 @@ class DebugSettingView @JvmOverloads constructor(
}
+ //初始化点云数据渲染情况
+ tbDrawPointCloudData.isChecked = FunctionBuildConfig.isDrawPointCloudData
+ //是否渲染点云数据
+ tbDrawPointCloudData.setOnCheckedChangeListener { _, isChecked ->
+ FunctionBuildConfig.isDrawPointCloudData = isChecked
+ }
+
// 模拟自动驾驶中
tbChangeAutoPilotStatus.setOnCheckedChangeListener { _, isChecked ->
CallerAutoPilotManager.setControlAutopilotCarAuto(isChecked)
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
index 7b856b341c..cf4407f0b7 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
@@ -1480,6 +1480,21 @@
app:layout_constraintLeft_toLeftOf="@id/tbIsDrawAutopilotTrajectoryData"
app:layout_constraintRight_toRightOf="@id/tbIsDrawAutopilotTrajectoryData"/>
+
+
// TODO 临时初始化地图监听工控机、OBU等数据监听器,用于感知元素绘制
MapIdentifySubscriber.Companion.getInstance();
+ MapPointCloudSubscriber.Companion.getInstance();
}
@Override
diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt
new file mode 100644
index 0000000000..d141a6467f
--- /dev/null
+++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapPointCloudSubscriber.kt
@@ -0,0 +1,49 @@
+package com.mogo.eagle.core.function.map
+
+import com.mogo.eagle.core.data.config.FunctionBuildConfig
+import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPointCloudListener
+import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
+import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPointCloudListenerManager
+import com.zhidao.support.adas.high.common.PointCloudDecoder
+import com.zhidaoauto.map.sdk.open.business.PointCloudHelper
+import mogo.telematics.pad.MessagePad
+import rule_segement.PointCloud
+
+/**
+ * 订阅点云数据
+ * 数据来源:工控机、OBU、云端下发
+ *
+ * @author donghongyu
+ */
+class MapPointCloudSubscriber private constructor() : IMoGoSubscriber, IMoGoAutopilotPointCloudListener {
+
+ private val TAG = "MapPointCloudSubscriber"
+
+ init {
+ onCrate()
+ }
+
+ companion object {
+ val instance: MapPointCloudSubscriber by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+ MapPointCloudSubscriber()
+ }
+ }
+
+ override fun onCrate() {
+ CallerAutopilotPointCloudListenerManager.addListener(TAG, this)
+
+ }
+
+ override fun onDestroy() {
+ CallerAutopilotPointCloudListenerManager.removeListener(TAG)
+ }
+
+ override fun onAutopilotPointCloudDataUpdate(header: MessagePad.Header?, pointCloud: PointCloud.LidarPointCloud?) {
+ // 根据配置动态控制点云是否绘制
+ if (FunctionBuildConfig.isDrawPointCloudData) {
+ val data = PointCloudDecoder.decode(header, pointCloud)
+ val result = PointCloudHelper.updatePointCloudData(data, false, true, true)
+ //Logger.d(TAG, "result=$result")
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
index 49227e0797..44193c016c 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt
@@ -77,6 +77,15 @@ object FunctionBuildConfig {
@JvmField
var isDrawObuIdentifyData = true
+ /**
+ * 地图是否绘制 点云数据
+ * true - 绘制
+ * false - 不绘制
+ */
+ @Volatile
+ @JvmField
+ var isDrawPointCloudData = true
+
/**
* 地图是否忽略判断条件直接绘制工控机引导线数据&全局路径规划
* 用于调试
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotPointCloudListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotPointCloudListener.kt
new file mode 100644
index 0000000000..9437bad03a
--- /dev/null
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotPointCloudListener.kt
@@ -0,0 +1,20 @@
+package com.mogo.eagle.core.function.api.autopilot
+
+import mogo.telematics.pad.MessagePad
+import rule_segement.PointCloud
+
+/**
+ * @author xiaoyuzhou
+ * @date 2021/11/1 5:57 下午
+ * 感知识别回调
+ */
+interface IMoGoAutopilotPointCloudListener {
+
+ /**
+ * 点云数据
+ *
+ * @param pointCloud 点云数据
+ */
+ fun onAutopilotPointCloudDataUpdate(header: MessagePad.Header?, pointCloud: PointCloud.LidarPointCloud?)
+
+}
\ No newline at end of file
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotPointCloudListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotPointCloudListenerManager.kt
new file mode 100644
index 0000000000..b4e8d6350c
--- /dev/null
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotPointCloudListenerManager.kt
@@ -0,0 +1,73 @@
+package com.mogo.eagle.core.function.call.autopilot
+
+import androidx.annotation.Nullable
+import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
+import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPointCloudListener
+import com.mogo.eagle.core.function.call.base.CallerBase
+import mogo.telematics.pad.MessagePad
+import perception.TrafficLightOuterClass
+import rule_segement.PointCloud
+import java.util.concurrent.ConcurrentHashMap
+
+/**
+ * @author xiaoyuzhou
+ * @date 2021/9/30 5:48 下午
+ * 点云数据管理
+ */
+object CallerAutopilotPointCloudListenerManager : CallerBase() {
+
+ // 存储所有注册了监听的对象,invokeXXXX进行遍历回调,将信息同步
+ private val M_AUTOPILOT_IDENTIFY_LISTENERS: ConcurrentHashMap =
+ ConcurrentHashMap()
+
+ /**
+ * 添加 域控制器感知数据 监听
+ * @param tag 标记,用来注销监听使用
+ * @param listener 监听回调
+ */
+ fun addListener(
+ @Nullable tag: String,
+ @Nullable listener: IMoGoAutopilotPointCloudListener
+ ) {
+ if (M_AUTOPILOT_IDENTIFY_LISTENERS.containsKey(tag)) {
+ return
+ }
+ M_AUTOPILOT_IDENTIFY_LISTENERS[tag] = listener
+ }
+
+ /**
+ * 删除监听
+ * @param tag 标记,用来注销监听使用
+ */
+ fun removeListener(@Nullable tag: String) {
+ if (!M_AUTOPILOT_IDENTIFY_LISTENERS.containsKey(tag)) {
+ return
+ }
+ M_AUTOPILOT_IDENTIFY_LISTENERS.remove(tag)
+ }
+
+ /**
+ * 删除自动驾驶按钮选中监听
+ * @param listener 要删除的监听对象
+ */
+ fun removeListener(@Nullable listener: IMoGoAutopilotPointCloudListener) {
+ M_AUTOPILOT_IDENTIFY_LISTENERS.forEach {
+ if (it.value == listener) {
+ M_AUTOPILOT_IDENTIFY_LISTENERS.remove(it.key)
+ }
+ }
+ }
+
+ /**
+ * 识别交通元素数据发生更新 回调
+ */
+ @Synchronized
+ fun invokeAutopilotPointCloudDataUpdate(header: MessagePad.Header?, pointCloud: PointCloud.LidarPointCloud?) {
+ M_AUTOPILOT_IDENTIFY_LISTENERS.forEach {
+ val tag = it.key
+ val listener = it.value
+ listener.onAutopilotPointCloudDataUpdate(header,pointCloud)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index d47e0194e9..fcfc0cc7c4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -82,7 +82,7 @@ MOGO_LOCATION_VERSION=1.3.59
MOGO_TELEMATIC_VERSION=1.3.59
######## MogoAiCloudSDK Version ########
# 自研地图
-MAP_SDK_VERSION=2.1.1.2
+MAP_SDK_VERSION=2.2.0.1
MAP_SDK_OPERATION_VERSION=1.0.13
# websocket
WEBSOCKET_VERSION=1.1.7