diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawer.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawer.java index 7e63c599e8..f56a931402 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawer.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawer.java @@ -12,6 +12,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMarkerManager; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.utils.DrivingDirectionUtils; import java.util.ArrayList; import java.util.List; @@ -90,7 +91,7 @@ public class IdentifyDataDrawer { long start = System.currentTimeMillis(); //清除缓存 for (MessagePad.TrackedObject data : resultList) { - if(trafficDataUuidList.size() > 0 && trafficDataUuidList.contains("" + data.getUuid())){ + if (trafficDataUuidList.size() > 0 && trafficDataUuidList.contains("" + data.getUuid())) { trafficDataUuidList.remove("" + data.getUuid()); } } @@ -134,13 +135,20 @@ public class IdentifyDataDrawer { //首次过来的数据不添加,首次未添加的感知物在调用完绘制方法后再塞入cache map MessagePad.TrackedObject cacheData = mMarkersCaches.get("" + data.getUuid()); if (cacheData != null) { - //todo 测试航向角修正时打开 MessagePad.TrackedObject correctData = null; - //todo 判断点是不是在当前车道线上,如果是,判断差值,进行修正 -// if (Math.abs(cacheData.getHeading() - data.getHeading()) > 90) { -// CallerLogger.INSTANCE.d(M_HMI + "arrow47","uuid修正 上一帧 : " + cacheData.getHeading() + " , 当前帧 : " + data.getHeading()); -// correctData = data.toBuilder().setHeading(cacheData.getHeading()).build(); -// } + //todo 进行修正 + if (Math.abs(cacheData.getHeading() - data.getHeading()) > 40 && Math.abs(cacheData.getHeading() - data.getHeading()) < 90) { + CallerLogger.INSTANCE.d(M_HMI + "arrow47", "uuid: " + data.getUuid() + " , 40~90差值范围 , 上一帧 : " + cacheData.getHeading() + " , 当前帧 : " + data.getHeading()); + } + if (Math.abs(cacheData.getHeading() - data.getHeading()) > 90) { + int degree = DrivingDirectionUtils.getDegreeOfCar2Poi(cacheData.getLongitude(), cacheData.getLatitude(), data.getLongitude(), data.getLatitude(), Double.valueOf(cacheData.getHeading()).intValue()); + if (degree > 90) { + CallerLogger.INSTANCE.d(M_HMI + "arrow47", "uuid: " + data.getUuid() + " , 夹角 : " + degree + " , 修正 上一帧 : " + cacheData.getHeading() + " , 当前帧 : " + data.getHeading()); + correctData = data.toBuilder().setHeading(cacheData.getHeading()).build(); + } else { + CallerLogger.INSTANCE.d(M_HMI + "arrow47", "uuid: " + data.getUuid() + " , 夹角 : " + degree + " , 未修正 上一帧 : " + cacheData.getHeading() + " , 当前帧 : " + data.getHeading()); + } + } if (correctData != null) { mFilterTrafficData.add(correctData); //更新已存在的感知物体数据 diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java index 85bd82d6fc..a5f40d4a71 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java @@ -8,12 +8,12 @@ import android.content.Context; import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.enums.TrafficTypeEnum; -import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMap; import com.mogo.map.MogoMarkerManager; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.constants.AdasRecognizedType; import java.util.ArrayList; import java.util.List; @@ -120,7 +120,12 @@ public class IdentifyDataDrawerTest { //CallerLogger.INSTANCE.w(TAG, "未知感知类型数据,丢弃,不渲染"); continue; } - double heading = kalmanFilter(data); + + MessagePad.TrackedObject cacheData = mMarkersCaches.get("" + data.getUuid()); + double heading = MogoMap.getInstance().getMogoMap().getUIController().getAngle(cacheData.getLongitude(), cacheData.getLatitude(), data.getLongitude(), data.getLatitude()); + CallerLogger.INSTANCE.d(M_HMI + "arrow47", " uuid : " + data.getUuid() + " , origin heading : " + data.getHeading() + " , correct heading : " + heading + " ---- " + (data.getHeading() - heading)); + +// double heading = kalmanFilter(data); MessagePad.TrackedObject correctData = data.toBuilder().setHeading(heading).build(); mFilterTrafficData.add(correctData); //更新已存在的感知物体数据 @@ -142,9 +147,13 @@ public class IdentifyDataDrawerTest { assert cacheTrackObj != null; double heading = MogoMap.getInstance().getMogoMap().getUIController().getAngle(cacheTrackObj.getLongitude(), cacheTrackObj.getLatitude(), lonLat[0], lonLat[1]); CallerLogger.INSTANCE.d(M_HMI + "arrow47", " uuid : " + uuid + " , origin heading : " + data.getHeading() + " , correct heading : " + heading + " ---- " + (data.getHeading() - heading)); - return Math.abs((data.getHeading() - heading)) >= 180 ? heading : data.getHeading(); + return heading; } else { - algoCache.put(uuid, new KalmanFilter(data.getLongitude(), data.getLatitude(), 0.00005)); + double r = 0.00005; + if (AdasRecognizedType.valueFrom(data.getType()) == AdasRecognizedType.classIdTrafficBus || AdasRecognizedType.valueFrom(data.getType()) == AdasRecognizedType.classIdTrafficTruck) { + r = 0.0001; + } + algoCache.put(uuid, new KalmanFilter(data.getLongitude(), data.getLatitude(), r)); return data.getHeading(); } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt index 662e3c6136..5eb0df67c8 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt @@ -41,9 +41,9 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, IMoGoAutopi override fun onAutopilotIdentifyDataUpdate(trafficData: List?) { try { if (FunctionBuildConfig.isDrawIdentifyData) { - ThreadUtils.getSinglePool().execute { IdentifyDataDrawerTest.getInstance().renderAdasRecognizedResult(trafficData) } + ThreadUtils.getSinglePool().execute { IdentifyDataDrawer.getInstance().renderAdasRecognizedResult(trafficData) } } else { - IdentifyDataDrawerTest.getInstance().clearOldMarker() + IdentifyDataDrawer.getInstance().clearOldMarker() } } catch (e: Exception) { e.printStackTrace()