[8.0.0][opt]调整预测的数据和绘制逻辑

This commit is contained in:
chenfufeng
2025-05-14 18:11:13 +08:00
parent e152a773b3
commit db97849736
21 changed files with 1142 additions and 100 deletions

View File

@@ -8,6 +8,7 @@ import android.view.View;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils;
import com.mogo.map.overlay.line.Polyline;
import com.mogo.map.overlay.point.Point;
import com.mogo.map.uicontroller.MapCameraPosition;
@@ -19,12 +20,15 @@ import com.zhidaoauto.map.sdk.open.renders.marker.MarkerOptions;
import com.zhidaoauto.map.sdk.open.renders.marker.MarkerSimpleData;
import com.zhidaoauto.map.sdk.open.renders.poyline.PolylineOptions;
import com.zhidaoauto.map.sdk.open.view.MapAutoView;
import com.zhjt.mogo.adas.data.Adas;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
import prediction2025.Prediction2025;
/**
* @author congtaowang
@@ -34,6 +38,19 @@ import mogo.yycp.api.proto.SocketDownData;
*/
public class ObjectUtils {
private static Map<Adas.TrackedObjectType, Adas.TrackedObjectClassID> sTypeMap = Map.of(
Adas.TrackedObjectType.TYPE_PEDESTRIAN, Adas.TrackedObjectClassID.Person,
Adas.TrackedObjectType.TYPE_MOTOR, Adas.TrackedObjectClassID.MotorCycle,
Adas.TrackedObjectType.TYPE_BICYCLE, Adas.TrackedObjectClassID.Bicycle,
Adas.TrackedObjectType.TYPE_CAR, Adas.TrackedObjectClassID.Car,
Adas.TrackedObjectType.TYPE_TRUCK, Adas.TrackedObjectClassID.Truck,
Adas.TrackedObjectType.TYPE_BUS, Adas.TrackedObjectClassID.Bus,
Adas.TrackedObjectType.TYPE_WARNINGTRIANGLE, Adas.TrackedObjectClassID.WarningTriangle,
Adas.TrackedObjectType.TYPE_ROADWORK_OCCUPY_0501, Adas.TrackedObjectClassID.RoadWork_occupy_0501,
Adas.TrackedObjectType.TYPE_ROADWORK_BREAK_0502, Adas.TrackedObjectClassID.RoadWork_break_0502,
Adas.TrackedObjectType.TYPE_ROAD_CONGESTION, Adas.TrackedObjectClassID.ROAD_CONGESTION
);
public static MarkerOptions fromMogo(Point.Options opt, MapAutoView mapAutoView) {
if (opt == null) {
@@ -174,6 +191,55 @@ public class ObjectUtils {
return markerOptions;
}
public static MarkerSimpleData fromPreData(Prediction2025.mPredictionObjectApp preData) {
if (preData == null || preData.getMNid() == 800000) {// 过滤掉自车
return null;
}
MarkerSimpleData markerOptions = null;
try {
markerOptions = new MarkerSimpleData();
markerOptions.setId(preData.getMNid());
markerOptions.setMarkerType(trackedObjectTypeTransform(preData.getClasstype()));
markerOptions.setRotateAngle(getPredictionHeading(preData));
// 自车2条轨迹它车1条轨迹每条轨迹的第一个点为位置其它点为预测轨迹点
markerOptions.setLat(preData.getPredictionTrajectoryList().get(0).getTrajectoryPointsList().get(0).getX());
markerOptions.setLon(preData.getPredictionTrajectoryList().get(0).getTrajectoryPointsList().get(0).getY());
// marker做动画时需用到(要么一直不传,要么一直都传)
// markerOptions.setTime(Double.valueOf(preData.getSatelliteTime() * 1000).longValue());
markerOptions.setColor("#90ABCAFF");
} catch (Exception e) {
e.printStackTrace();
}
return markerOptions;
}
/**
* 域控障碍物类型转换成鹰眼使用的类型
*
* @param classType 域控障碍物类型目前只有Prediction2025.mPredictionObjects.objs_app.classtype 是域控的障碍物类型)
* @return 障碍物类型 与 message_pad中的TrackedObjects 的 objs.type 类型一致
*/
private static int trackedObjectTypeTransform(int classType) {
Adas.TrackedObjectType type = Adas.TrackedObjectType.forNumber(classType);
if (type == null) {
type = Adas.TrackedObjectType.TYPE_UNKNOWN;
}
Adas.TrackedObjectClassID classID = sTypeMap.get(type);
if (classID == null) {
classID = Adas.TrackedObjectClassID.Unknown;
}
return classID.getNumber();
}
private static float getPredictionHeading(Prediction2025.mPredictionObjectApp preData) {
List<geometry.Geometry.Point> pointList = preData.getPredictionTrajectoryList().get(0).getTrajectoryPointsList();
if (pointList.size() >= 2) {
return (float) DrivingDirectionUtils.getLineAngle(pointList.get(0).getX(), pointList.get(0).getY(), pointList.get(1).getX(), pointList.get(1).getY());
} else {
return 0;
}
}
private static BitmapDescriptor getBitmapDescriptorFromMogo(Bitmap icon, View view) {
if (icon != null) {
return BitmapDescriptorFactory.INSTANCE.fromBitmap(icon);