[2.13.2]fix bug of aicloud fusion problem and add limit of visual long sight
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
/**
|
||||
* 订阅感知数据的订阅者
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
}
|
||||
@@ -15,4 +15,8 @@ object CallerMapIdentifyManager : CallerBase() {
|
||||
fun getIdentifyObj(uuid: String): MessagePad.TrackedObject? {
|
||||
return identifyApi.getIdentifyObj(uuid)
|
||||
}
|
||||
|
||||
fun clearAiCloudRoma(){
|
||||
identifyApi.clearAiCloudRoma()
|
||||
}
|
||||
}
|
||||
@@ -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坐标给lat,lon两个成员变量
|
||||
*
|
||||
* 在下发车机时计算高德经纬度
|
||||
* 1.将gps(lat,lon)给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;
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user