diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt index 5849ba0754..bbea271c7d 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt @@ -71,7 +71,14 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener, IMoGoAutopilotCarConf val internal = TimeUnit.NANOSECONDS.toMillis(endTime - startTime) if (internal >= 1000) { lostFrame(internal.toString()) - identify.clearOldMarker() + if (isPredicted) { + val mapInstanceList = ArrayList() + mapInstanceList.add(MogoMap.DEFAULT) + mapInstanceList.add(MogoMap.SMALL_PRED_MAP) + identify.clearOldMarkers(mapInstanceList) + } else { + identify.clearOldMarker() + } } sendEmptyMessageDelayed(MSG_CHECK, 1000L) } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt index 6897662974..5ced98fd98 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt @@ -118,6 +118,7 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, // PredictionDataManager.getInstance()?.updateData(carPoiList1!!, 0) // PredictionDataManager.getInstance()?.updateData(carPoiList2!!, 2) } else { + CallerLogger.d(TAG, "准备处理它车感知物的预测数据!") if (isUnKnownType(preObj.classtype) || preObj.predictionTrajectoryList.isNullOrEmpty() || mogoMap == null) { CallerLogger.d(TAG, "未知感知物或者没有预测数据或者地图实例拿不到,直接返回!") return@forEach @@ -136,6 +137,7 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, return@forEach } } + preObj.predictionTrajectoryList[0].trajectoryPointsList.forEachIndexed { index, point -> if (index in 0..44 && index % 2 == 0) {// 步长为2,减少点 arr = mogoMap.switchData(point.x, point.y, false) @@ -147,6 +149,7 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, pointsList.add(points) } } + CallerLogger.d(TAG, "准备渲染它车感知物的预测轨迹数据!个数为:${pointsList.size}") PredictionOverlayDrawer.getInstance().drawPredictionList(pointsList, getLocationHeading()) } } catch (e: Exception) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt index 7fc28492d1..440504dd6c 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt @@ -18,6 +18,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisStatesListenerMa import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListenerManager import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager import com.mogo.eagle.core.function.map.R +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.shuyu.gsyvideoplayer.GSYVideoManager import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder @@ -124,11 +125,13 @@ class DecisionLayout @JvmOverloads constructor( @Volatile private var isCrossScene = false + @Volatile + private var lastPncTime = 0L private var state = -1 private var action = -1 override fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) { if (isCrossScene) { - Log.d(TAG, "路口场景不直接使用决策信息!") + CallerLogger.d(TAG, "路口场景不直接使用决策信息!") return } val actionMsg = planningActionMsg.actionMsg @@ -159,8 +162,14 @@ class DecisionLayout @JvmOverloads constructor( } if (type >= 0) { - ThreadUtils.runOnUiThread { - updateAnim(type) + val time = System.currentTimeMillis() + if (time - lastPncTime > 500) { + lastPncTime = time + ThreadUtils.runOnUiThread({ + updateAnim(type) + }, ThreadUtils.MODE.QUEUE) + } else { + CallerLogger.d(TAG, "Pnc决策数据:${type}更新过快不刷新页面!") } } } @@ -194,13 +203,16 @@ class DecisionLayout @JvmOverloads constructor( @Volatile private var triggerRoadId = "" override fun onStopLineInfo(info: StopLine) { - if (info.distance < 15 && !isInCrossRoad) {// 不在路口内且距离停止线小于15m + if (info.distance < 16) { + CallerLogger.d(TAG, "距离停止线距离小于18则认为快要进入路口了!进入路口内:${isInCrossRoad}") + if (isInCrossRoad) return triggerRoadId = lastRoadId + // 路口场景不处理决策数据 isCrossScene = true val time = System.currentTimeMillis() if (time - lastUpdateTime > 500) { lastUpdateTime = time - ThreadUtils.runOnUiThread { + ThreadUtils.runOnUiThread({ when (turnLightStatus) { 0 -> { updateAnim(8) @@ -212,7 +224,9 @@ class DecisionLayout @JvmOverloads constructor( updateAnim(9) } } - } + }, ThreadUtils.MODE.QUEUE) + } else { + CallerLogger.d(TAG, "当前时间:${time}距离上次时间:${lastUpdateTime}间隔太短,直接不处理!") } } } @@ -222,6 +236,7 @@ class DecisionLayout @JvmOverloads constructor( override fun onRoadIdInfo(roadId: String) { lastRoadId = roadId if (roadId != "0" && triggerRoadId.isNotEmpty() && triggerRoadId != roadId) { + CallerLogger.d(TAG, "触发路口:${triggerRoadId},此时路口:${roadId}") isCrossScene = false triggerRoadId = "" } @@ -229,19 +244,24 @@ class DecisionLayout @JvmOverloads constructor( @Volatile private var isInCrossRoad = false + @Volatile + private var lastUpdateTime2 = 0L override fun onRoadChange(cross: Boolean, roadCross: RoadCross?) { if (isInCrossRoad && !cross) {// 上次在路口内,当前不在路口内,则代表出路口了 + CallerLogger.d(TAG, "出路口了!") + isInCrossRoad = false isCrossScene = false triggerRoadId = "" val time = System.currentTimeMillis() - if (time - lastUpdateTime > 500) { - lastUpdateTime = time - ThreadUtils.runOnUiThread { + if (time - lastUpdateTime2 > 500) { + lastUpdateTime2 = time + ThreadUtils.runOnUiThread({ updateAnim(2)// 出路口默认显示"车道保持" - } + }, ThreadUtils.MODE.QUEUE) } + } else { + isInCrossRoad = cross } - isInCrossRoad = cross } @SuppressLint("SetTextI18n")