[8.1.2][fix]解决路口场景的问题并新增日志
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user