[2.13.2]fix bug of aicloud fusion problem and add limit of visual long sight

This commit is contained in:
zhongchao
2023-01-11 13:55:01 +08:00
parent c57e9d86e8
commit 79ff37d90d
18 changed files with 162 additions and 37 deletions

View File

@@ -632,6 +632,15 @@ class DebugSettingView @JvmOverloads constructor(
}
}
tbDrawAiCloudFusion.isChecked = FunctionBuildConfig.isDrawAiCloudFusion
//云端感知绘制
tbDrawAiCloudFusion.setOnCheckedChangeListener { _, isChecked ->
FunctionBuildConfig.isDrawAiCloudFusion = isChecked
if (!FunctionBuildConfig.isDrawAiCloudFusion) {
tbDrawAiCloudFusion.isChecked = false
}
}
//重启工控机所有节点
btnIpcReboot.onClick {
CallerAutoPilotManager.sendIpcReboot()

View File

@@ -5,6 +5,7 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.map.MogoMapUIController
import com.mogo.map.uicontroller.VisualAngleMode
@@ -34,12 +35,14 @@ class PerspectiveSwitchView @JvmOverloads constructor(
// .visibleAllMarkers()
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
CallerMapUIServiceManager.getMapUIController()?.setLockMode(true)
textSwitch.setText(R.string.module_map_model_normal)
} else if (MogoMapUIController.getInstance().currentMapVisualAngle.isMediumSight) {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS)
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
CallerMapUIServiceManager.getMapUIController()?.setLockMode(false)
textSwitch.setText(R.string.module_map_model_faster)
} else {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())

View File

@@ -254,6 +254,18 @@
android:textOn="关闭车端V2N预警"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbDrawAiCloudFusion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:background="@drawable/radio_button_normal_background_right"
android:textColor="#000"
android:textOff="开启云端感知绘制"
android:textOn="关闭云端感知绘制"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbMojie"
android:layout_width="match_parent"

View File

@@ -1,17 +1,19 @@
package com.mogo.eagle.core.function.business.ai
import android.content.Context
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener
import com.mogo.cloud.socket.SocketManager
import com.mogo.cloud.socket.entity.SocketDownData.SocketDownDataProto
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.module.common.MogoApisHandler
import com.mogo.realtime.constant.RealTimeConstant
import mogo.yycp.api.proto.SocketDownData
class AiCloudIdentifyDataManager : IMogoMapListener {
@@ -32,16 +34,20 @@ class AiCloudIdentifyDataManager : IMogoMapListener {
fun init(mContext: Context) {
MogoApisHandler.getInstance().apis.registerCenterApi.registerMogoMapListener(TAG, this)
SocketManager.getInstance()
MogoAiCloudSocketManager.getInstance(mContext)
.registerOnMessageListener(
RealTimeConstant.LOW_FREQUENCY_CHANNEL_ID,
object : IMogoCloudSocketOnMessageListener<SocketDownDataProto> {
override fun target(msgType: Int): Class<SocketDownDataProto> {
return SocketDownDataProto::class.java
0x040003, //低频数据
object : IMogoOnMessageListener<SocketDownData.SocketDownDataProto> {
override fun target(): Class<SocketDownData.SocketDownDataProto> {
return SocketDownData.SocketDownDataProto::class.java
}
override fun onMsgReceived(msgType: Int, obj: SocketDownDataProto?) {
override fun onMsgReceived(obj: SocketDownData.SocketDownDataProto?) {
CallerLogger.d("$M_MAP$TAG", "SocketDownDataProto obj : $obj")
if(!FunctionBuildConfig.isDrawAiCloudFusion){
MapIdentifySubscriber.instance.clearAiCloudRoma()
return
}
obj?.let {
obj.data?.let {
if (showAiCloud) {
@@ -74,9 +80,14 @@ class AiCloudIdentifyDataManager : IMogoMapListener {
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) {
super.onMapVisualAngleChanged(visualAngleMode)
showAiCloud = when {
visualAngleMode.isLongSight -> true
else -> false
when {
visualAngleMode.isLongSight -> {
showAiCloud = true
}
else -> {
showAiCloud = false
CallerMapIdentifyManager.clearAiCloudRoma()
}
}
}

View File

@@ -1,9 +1,9 @@
package com.mogo.eagle.core.function.business.identify
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.eagle.core.data.traffic.TrafficData
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
interface Identify {

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.identify
import android.annotation.SuppressLint
import androidx.collection.ArraySet
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.traffic.TrafficData
@@ -10,6 +9,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w
import com.mogo.map.MogoMarkerManager
import mogo.telematics.pad.MessagePad.PlanningObject
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
import java.util.concurrent.ConcurrentHashMap
class IdentifyAiCloudDataDrawer : Identify {
@@ -62,7 +62,7 @@ class IdentifyAiCloudDataDrawer : Identify {
it.remove()
mMarkersCaches.remove(key)
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.removeMarker(key)
.removeMarker(key.hashCode().toString())
}
val filterList = filterTrafficData(resultList)
@@ -86,15 +86,19 @@ class IdentifyAiCloudDataDrawer : Identify {
val uuid = "" + data.uuid
mMarkersCaches[uuid] = data
trafficDataUuidList.add(uuid)
mFilterTrafficData[uuid] = data
}
return mFilterTrafficData
}
@SuppressLint("NewApi")
override fun clearAiMarker() {
if(trafficDataUuidList.size == 0){
return
}
for (uuid in trafficDataUuidList) {
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.removeMarker(uuid)
.removeMarker(uuid.hashCode().toString())
}
trafficDataUuidList.clear()
}

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.identify
import android.os.Handler
import android.os.Message
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.function.api.obu.IMoGoObuStatusListener
@@ -10,6 +9,7 @@ import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
object IdentifyFactory : Identify, IMoGoObuStatusListener {

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.identify
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_IDENTIFY
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
@@ -13,6 +12,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
/**
* 订阅感知数据的订阅者

View File

@@ -451,15 +451,6 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb
}
}
@SuppressLint("NewApi")
@ChainLog(
linkChainLog = CHAIN_LINK_LOG_CLOUD_V2N,
linkCode = CHAIN_LINK_CLOUD,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_V2N,
paramIndexes = [0],
clientPkFileName = "sn"
)
override fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?) {
super.onAutopilotIdentifyPlanningObj(planningObjects)
if(!FunctionBuildConfig.isV2NFromCar){

View File

@@ -64,6 +64,13 @@ object FunctionBuildConfig {
@JvmField
var isBeautyMode = true
/**
* 是否绘制云端感知物
*/
@Volatile
@JvmField
var isDrawAiCloudFusion = true
/**
* 是否开启感知物替换颜色功能
* 默认关闭
@@ -179,4 +186,5 @@ object FunctionBuildConfig {
@JvmField
var isPNCWarning = true
}

View File

@@ -15,4 +15,8 @@ object CallerMapIdentifyManager : CallerBase() {
fun getIdentifyObj(uuid: String): MessagePad.TrackedObject? {
return identifyApi.getIdentifyObj(uuid)
}
fun clearAiCloudRoma(){
identifyApi.clearAiCloudRoma()
}
}

View File

@@ -0,0 +1,78 @@
syntax = "proto3";
package mogo.yycp.service;
option java_package = "mogo.yycp.api.proto";
option java_outer_classname = "SocketDownData";
/*
message xxx {
// 字段规则required -> 字段只能也必须出现 1 次
// 字段规则optional -> 字段可出现 0 次或1次
// 字段规则repeated -> 字段可出现任意多次(包括 0
// 类型int32、int64、sint32、sint64、string、32-bit ....
// 字段编号0 ~ 536870911除去 19000 到 19999 之间的数字)
字段规则 类型 名称 = 字段编号;
}
*/
//返回车机主实体
message SocketDownDataProto {
uint64 seq = 1;
uint32 msgType = 2;
string sn = 3;
LauncherSnapshotProto data = 4;
uint64 utcTime = 5;
uint64 upUtcTime = 6;
string cityCode = 7;
}
//LauncherSnapshot数据响应VO
message LauncherSnapshotProto {
//总数据集合 RoadDataVo
repeated CloudRoadDataProto allList = 1;
//前方50米数据集合 RoadDataVo
repeated CloudRoadDataProto nearList = 2;
//摄像头 RoadDataVo
CloudRoadDataProto camera = 3;
string msgId = 4;
uint64 time = 5;
//过期时间
uint64 expire = 6;
}
//RoadDataVo
message CloudRoadDataProto {
/**物体类型 1-人 2-自行车 3-小轿车 4-摩托车 5-红绿灯 6-bus 8-truck 9-路边摄像头*/
uint32 type = 1;
/**数据来源 1,"自车数据" 2,"ADAS数据" 3,"路测设备识别数据" */
uint32 fromType = 2;
/**
* 车机上行pgs坐标给latlon两个成员变量
*
* 在下发车机时计算高德经纬度
* 1.将gpslatlon给wgslat,wgalon
* 2.高德算法算出高德经纬度给lat,lon
*/
double lat = 3; //gps->gd
double lon = 4; //gps->gd
double wgslat = 5; //原gps
double wgslon = 6; //原gps
//车机sn
string sn = 7;
//车辆UUID
string uuid = 8;
/** 车牌号 */
string cardId = 9;
/**速度*/
double speed = 10;
/**方向*/
double heading = 11;
/** 系统时间 */
uint64 systemTime = 12;
/** 星历时间 */
uint64 satelliteTime = 13;
/**红绿灯状态 1红 2绿 3黄*/
uint32 lightStatus = 14;
/**红绿灯剩余时间 读秒*/
uint32 lightLeftTime = 15;
/**视频流直播地址*/
string rtmpUrl = 16;
/**距离*/
double distance = 17;
}

View File

@@ -55,7 +55,6 @@ dependencies {
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-data')
}
implementation rootProject.ext.dependencies.mogoaicloudsocket
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -1,6 +1,5 @@
package com.mogo.map;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.map.center.CenterLine;
import com.mogo.map.marker.IMogoMarker;
@@ -14,6 +13,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang

View File

@@ -2,7 +2,6 @@ package com.mogo.map.marker;
import android.content.Context;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.eagle.core.data.map.MogoLatLng;
import java.util.ArrayList;
@@ -11,6 +10,7 @@ import java.util.List;
import java.util.Map;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang

View File

@@ -5,7 +5,6 @@ import android.content.Context;
import android.graphics.Point;
import android.util.Pair;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
@@ -41,8 +40,10 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang
@@ -121,10 +122,14 @@ public class AMapWrapper implements IMogoMap {
markerOptionsArrayList.add(markerOptions);
}
});
// markerOptionsArrayList.addAll(cwList);
long time = markerOptionsArrayList.get(0).getTime();
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, FunctionBuildConfig.isBeautyMode ? 8.0f : 0f, 1, time, 1);
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, FunctionBuildConfig.isBeautyMode ? 8.0f : 0f, 1, time, 0);
// cwList.clear();
}
// private final CopyOnWriteArrayList<MarkerSimpleData> cwList = new CopyOnWriteArrayList<>();
@SuppressLint("NewApi")
@Override
public void updateBatchAiMarkerPosition(HashMap<String, SocketDownData.CloudRoadDataProto> optionsArrayList) {
@@ -138,9 +143,10 @@ public class AMapWrapper implements IMogoMap {
markerOptionsArrayList.add(markerOptions);
}
});
// cwList.addAll(markerOptionsArrayList);
long time = markerOptionsArrayList.get(0).getTime();
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, FunctionBuildConfig.isBeautyMode ? 8.0f : 0f, 1, time, 1);
//todo 最后一个参数,是否管理锚点的删除
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, FunctionBuildConfig.isBeautyMode ? 8.0f : 0f, 1, time, 0);
}
@Override

View File

@@ -2,7 +2,6 @@ package com.mogo.map;
import android.content.Context;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.v2x.CallMarkersClearManager;
import com.mogo.map.marker.IMogoMarker;
@@ -16,6 +15,7 @@ import java.util.List;
import java.util.Map;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang

View File

@@ -5,7 +5,6 @@ import android.graphics.Color;
import android.text.TextUtils;
import android.view.View;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
@@ -49,6 +48,7 @@ import java.util.ArrayList;
import java.util.List;
import mogo.telematics.pad.MessagePad;
import mogo.yycp.api.proto.SocketDownData;
/**
* @author congtaowang