[8.1.2][fix]解决路口场景的问题并新增日志

This commit is contained in:
chenfufeng
2025-07-16 20:14:13 +08:00
parent 0a1d7f85ff
commit 7172af3457
3 changed files with 42 additions and 12 deletions

View File

@@ -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<String>()
mapInstanceList.add(MogoMap.DEFAULT)
mapInstanceList.add(MogoMap.SMALL_PRED_MAP)
identify.clearOldMarkers(mapInstanceList)
} else {
identify.clearOldMarker()
}
}
sendEmptyMessageDelayed(MSG_CHECK, 1000L)
}

View File

@@ -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) {

View File

@@ -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")