diff --git a/config.gradle b/config.gradle index 5555de5f92..04efab1cd1 100644 --- a/config.gradle +++ b/config.gradle @@ -157,7 +157,7 @@ ext { gpssimulatordebug : "com.mogo.module:module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}", gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", - adasapi : "com.zhidao.autopilot.support:adas:1.0.6.10", + adasapi : "com.zhidao.autopilot.support:adas:1.0.6.11", adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.1.5.2", // 个人中心的SDK diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index d3094a52a5..7764049e38 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -11,7 +11,7 @@ import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.R; import com.mogo.module.common.constants.DataTypes; -import com.mogo.service.adas.entity.ADASRecognizedListResult; +import com.mogo.service.adas.entity.ADASRecognizedResult; import java.util.ArrayList; import java.util.HashMap; @@ -36,7 +36,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { mContext = AbsMogoApplication.getApp(); } - private Map< String, ADASRecognizedListResult > mLastPositions = new ConcurrentHashMap<>(); + private Map< String, ADASRecognizedResult > mLastPositions = new ConcurrentHashMap<>(); public static AdasRecognizedResultDrawer getInstance() { if ( sInstance == null ) { @@ -65,13 +65,13 @@ class AdasRecognizedResultDrawer extends BaseDrawer { return mAdasRecognizedMarkersCaches.containsKey( uniqueKey ); } - public void renderAdasRecognizedResult( List< ADASRecognizedListResult > resultList, boolean machineVision, double curSpeed ) { + public void renderAdasRecognizedResult( List< ADASRecognizedResult > resultList, boolean machineVision, double curSpeed ) { if ( resultList == null || resultList.isEmpty() ) { MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers( DataTypes.TYPE_MARKER_ADAS ); return; } purgeAdasRecognizedData( resultList ); - for ( ADASRecognizedListResult recognizedListResult : resultList ) { + for ( ADASRecognizedResult recognizedListResult : resultList ) { if ( recognizedListResult == null ) { continue; } @@ -97,7 +97,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { mAdasRecognizedMarkersCaches.put( uniqueKey, marker ); mLastPositions.put( uniqueKey, recognizedListResult ); } else { - ADASRecognizedListResult lastPosition = mLastPositions.get( uniqueKey ); + ADASRecognizedResult lastPosition = mLastPositions.get( uniqueKey ); mLastPositions.put( uniqueKey, recognizedListResult ); if ( lastPosition != null ) { List< MogoLatLng > points = new ArrayList<>(); @@ -133,7 +133,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { * * @param resultList */ - private void purgeAdasRecognizedData( List< ADASRecognizedListResult > resultList ) { + private void purgeAdasRecognizedData( List< ADASRecognizedResult > resultList ) { if ( resultList == null || resultList.isEmpty() ) { return; } @@ -141,7 +141,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { return; } Map< String, IMogoMarker > existMarker = new HashMap<>(); - for ( ADASRecognizedListResult recognizedListResult : resultList ) { + for ( ADASRecognizedResult recognizedListResult : resultList ) { if ( recognizedListResult == null ) { continue; } @@ -165,7 +165,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } } - private IMogoMarker drawAdasRecognizedDataMarker( ADASRecognizedListResult recognizedListResult, + private IMogoMarker drawAdasRecognizedDataMarker( ADASRecognizedResult recognizedListResult, boolean machineVision, double curSpeed ) { if ( recognizedListResult == null ) { diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRecognizedDataCallback.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRecognizedDataCallback.java index 301b94d0fc..ff92b13160 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRecognizedDataCallback.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRecognizedDataCallback.java @@ -1,6 +1,5 @@ package com.mogo.service.adas; -import com.mogo.service.adas.entity.ADASRecognizedListResult; import com.mogo.service.adas.entity.ADASRecognizedResult; import java.util.List; @@ -16,5 +15,5 @@ public interface IMogoAdasRecognizedDataCallback { * * @param resultList 具体识别的物体数据 */ - void onAdasDataCallback( List< ADASRecognizedListResult > resultList ); + void onAdasDataCallback( List< ADASRecognizedResult > resultList ); } \ No newline at end of file diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedListResult.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedListResult.java deleted file mode 100644 index 7c5d8e06b4..0000000000 --- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedListResult.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.mogo.service.adas.entity; - -import java.util.List; - -public -/** - * @author congtaowang - * @since 2020/10/25 - * - * adas 识别物体参数 - */ -class ADASRecognizedListResult { - - /** - * 识别物体类型 - */ - public int type; - - /** - * 识别物体唯一标识 - */ - public String uuid; - /** - * 方向 - */ - public double heading; - /** - * 速度 - */ - public double speed; - /** - * x 轴距离 - */ - public double distanceX; - - /** - * y 轴距离 - */ - public double distanceY; - - /** - * 同一个uuid 1帧内所对应的坐标 - */ - public double lon; - public double lat; - - public long systemTime; -} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedResult.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedResult.java index 774eff545a..6c019b0877 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedResult.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASRecognizedResult.java @@ -69,4 +69,14 @@ class ADASRecognizedResult { */ public long mortonCode; + /** + * x 轴距离 + */ + public double distanceX; + + /** + * y 轴距离 + */ + public double distanceY; + } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/AdasObjectUtils.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/AdasObjectUtils.java index 1329234417..f1ee19d867 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/AdasObjectUtils.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/AdasObjectUtils.java @@ -1,19 +1,14 @@ package com.mogo.service.impl.adas; -import android.text.TextUtils; - import com.mogo.commons.utils.MortonCode; -import com.mogo.service.adas.entity.ADASRecognizedListResult; import com.mogo.service.adas.entity.ADASRecognizedResult; import com.mogo.service.adas.entity.ADASWarnMessage; import com.mogo.utils.CoordinateUtils; -import com.zhidao.support.adas.high.bean.RectInfo; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; import com.zhidao.support.adas.high.bean.WarnMessageInfo; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public /** @@ -40,89 +35,47 @@ class AdasObjectUtils { return warnMessage; } - public static List< ADASRecognizedResult > fromAdasObject( RectInfo rectInfo ) { - if ( rectInfo == null - || rectInfo.getModels() == null - || rectInfo.getModels().isEmpty() ) { - return null; - } - - List< ADASRecognizedResult > recognizedResults = new ArrayList<>(); - for ( RectInfo.RectBean model : rectInfo.getModels() ) { - try { - ADASRecognizedResult result = fromAdasObject( model ); - if ( result != null ) { - recognizedResults.add( result ); - } - } catch ( Exception e ) { - - } - } - return recognizedResults; - } - - public static ADASRecognizedResult fromAdasObject( RectInfo.RectBean rectBean ) { - if ( rectBean == null ) { - return null; - } - if ( rectBean.getLat() < 1 ) { - return null; - } - ADASRecognizedResult result = new ADASRecognizedResult(); - result.uuid = rectBean.getUuid(); - - - double amapCoord[] = CoordinateUtils.transformWgsToGcj( rectBean.getLat(), rectBean.getLon() ); - if ( amapCoord != null ) { - result.lat = amapCoord[1]; - result.lon = amapCoord[0]; - } else { - result.lat = rectBean.getLat(); - result.lon = rectBean.getLon(); - } - result.type = Integer.valueOf( rectBean.getType() ); - result.heading = rectBean.getHeading(); - result.systemTime = Long.valueOf( rectBean.getSystemTime() ); - result.satelliteTime = Long.valueOf( rectBean.getSatelliteTime() ); - result.alt = rectBean.getAlt(); - result.color = rectBean.getColor(); - result.speed = rectBean.getSpeed(); - result.carId = rectBean.getCarId(); - result.mortonCode = MortonCode.wrapEncodeMorton( result.lon, result.lat ); - return result; - } - - public static List< ADASRecognizedListResult > regroupData( List< RectInfo > datums ) { + public static List< ADASRecognizedResult > regroupData( List< AdasAIDLOwnerCarRectModel > datums ) { if ( datums == null || datums.isEmpty() ) { return null; } - List< ADASRecognizedListResult > recognizedListResults = new ArrayList<>(); - for ( RectInfo rectInfo : datums ) { - if ( rectInfo == null || rectInfo.getModels() == null || rectInfo.getModels().isEmpty() ) { + List< ADASRecognizedResult > recognizedListResults = new ArrayList<>(); + for ( AdasAIDLOwnerCarRectModel model : datums ) { + if ( model == null ) { continue; } - for ( RectInfo.RectBean model : rectInfo.getModels() ) { - if ( model == null || TextUtils.isEmpty( model.getUuid() ) ) { - continue; - } - ADASRecognizedListResult recognizedListResult = new ADASRecognizedListResult(); - recognizedListResult.heading = model.getHeading(); - recognizedListResult.speed = model.getSpeed(); - recognizedListResult.type = Integer.valueOf( model.getType() ); - recognizedListResult.uuid = model.getUuid(); - recognizedListResult.distanceX = model.getDistance_x(); - recognizedListResult.distanceY = model.getDistance_y(); - double amapCoord[] = CoordinateUtils.transformWgsToGcj( model.getLat(), model.getLon() ); - recognizedListResult.lat = amapCoord[1]; - recognizedListResult.lon = amapCoord[0]; - try { - recognizedListResult.systemTime = Long.valueOf( model.getSystemTime() ); - } catch ( Exception e ) { - recognizedListResult.systemTime = System.currentTimeMillis(); - } + ADASRecognizedResult recognizedListResult = fromAdasObject( model ); + if ( recognizedListResult != null ) { recognizedListResults.add( recognizedListResult ); } } return recognizedListResults; } + + public static ADASRecognizedResult fromAdasObject( AdasAIDLOwnerCarRectModel model ) { + if ( model == null ) { + return null; + } + ADASRecognizedResult result = new ADASRecognizedResult(); + result.uuid = model.getUuid(); + + double amapCoord[] = CoordinateUtils.transformWgsToGcj( model.getLat(), model.getLon() ); + if ( amapCoord != null ) { + result.lat = amapCoord[1]; + result.lon = amapCoord[0]; + } else { + result.lat = model.getLat(); + result.lon = model.getLon(); + } + result.type = Integer.valueOf( model.getType() ); + result.heading = model.getHeading(); + result.systemTime = Long.valueOf( model.getSystemTime() ); + result.satelliteTime = Long.valueOf( model.getSatelliteTime() ); + result.alt = model.getAlt(); + result.color = model.getColor(); + result.speed = model.getSpeed(); + result.carId = model.getCarId(); + result.mortonCode = MortonCode.wrapEncodeMorton( result.lon, result.lat ); + return result; + } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index b0c61315a2..d2c77fdd0f 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -8,14 +8,11 @@ import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.context.ContextHolderUtil; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.SubscribeImpl; import com.mogo.commons.network.Utils; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.MogoModule; -import com.mogo.module.common.MogoModulePaths; import com.mogo.module.common.map.MyLocationUtil; import com.mogo.module.common.utils.CarSeries; import com.mogo.service.MogoServicePaths; @@ -26,7 +23,6 @@ import com.mogo.service.adas.IMogoAdasRecognizedDataCallback; import com.mogo.service.adas.IMogoAdasWarnMessageCallback; import com.mogo.service.adas.RemoteControlAutoPilotParameters; import com.mogo.service.adas.entity.ADASCarStateInfo; -import com.mogo.service.adas.entity.ADASRecognizedListResult; import com.mogo.service.adas.entity.ADASRecognizedResult; import com.mogo.service.adas.entity.ADASWarnMessage; import com.mogo.service.impl.singleton.SingletonsHolder; @@ -46,9 +42,9 @@ import com.zhidao.autopilot.support.api.IAutopilotServiceStatusListener; import com.zhidao.autopilot.support.api.IAutopolitDataCallBack; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel; import com.zhidao.support.adas.high.OnAdasListener; -import com.zhidao.support.adas.high.bean.CarStateInfo; import com.zhidao.support.adas.high.bean.RectInfo; import com.zhidao.support.adas.high.bean.WarnMessageInfo; import com.zhidao.support.adas.high.msg.MyMessageFactory; @@ -56,19 +52,15 @@ import com.zhidao.support.adas.high.msg.MyMessageFactory; import org.json.JSONException; import org.json.JSONObject; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import io.reactivex.schedulers.Schedulers; -import java.util.concurrent.CopyOnWriteArrayList; - import static com.mogo.module.common.utils.SPConst.getSpGuide; /** @@ -116,33 +108,12 @@ public class MogoADASController implements IMogoADASController { private IMogoAdasCarDataCallback mMogoAdasCarDataCallback; - private RectInfo mLastFrameData; + private List< AdasAIDLOwnerCarRectModel > mLastFrameData; private OnAdasListener mOnAdasListener = new OnAdasListenerAdapter() { - LogWriter logWriter = null; - @Override public void onRectData( RectInfo rectInfo ) { - // 物体识别返回 - Logger.d( TAG, "onRectData = %s", rectInfo.toString() ); - if ( logWriter == null ) { - SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddhhmmss" ); - String date = sdf.format( new Date() ); - String path = context.getExternalCacheDir().getAbsolutePath() + "/adaslog/" + date + "/log.txt"; - Logger.d( TAG, path ); - logWriter = new LogWriter( path ); - } - mLastFrameData = rectInfo; - logWriter.write( GsonUtil.jsonFromObject( rectInfo ) ); - // 仅在 vr 模式下显示 adas 识别车辆 - if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { - return; - } - if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) { - return; - } - handleAdasRecognizedData( rectInfo ); } @Override @@ -175,21 +146,20 @@ public class MogoADASController implements IMogoADASController { * 处理数据,将识别到的物体分组,然后每1s进行一次回调 * 时间:系统时间 * - * @param rectInfo + * @param models */ - private void handleAdasRecognizedData( RectInfo rectInfo ) { - if ( rectInfo == null - || rectInfo.getModels() == null - || rectInfo.getModels().isEmpty() ) { + private void handleAdasRecognizedData( List< AdasAIDLOwnerCarRectModel > models ) { + if ( models == null + || models.isEmpty() ) { invokeCallbackPerSecond( null ); return; } - invokeCallbackPerSecond( Arrays.asList( rectInfo ) ); + invokeCallbackPerSecond( models ); } - private void invokeCallbackPerSecond( List< RectInfo > data ) { - List< RectInfo > newRef = data; - List< ADASRecognizedListResult > recognizedListResults = AdasObjectUtils.regroupData( newRef ); + private void invokeCallbackPerSecond( List< AdasAIDLOwnerCarRectModel > models ) { + List< AdasAIDLOwnerCarRectModel > newRef = models; + List< ADASRecognizedResult > recognizedListResults = AdasObjectUtils.regroupData( newRef ); if ( !mMogoAdasRecognizedDataCallbacks.isEmpty() ) { for ( IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks ) { if ( callback == null ) { @@ -316,22 +286,9 @@ public class MogoADASController implements IMogoADASController { } -// LogWriter logWriter; - @Override + @Deprecated public void ownerCarStateInfo( String ownerCarStateInfo ) { -// if ( logWriter == null ) { -// SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddhhmmss" ); -// String date = sdf.format( new Date() ); -// String path = context.getExternalCacheDir().getAbsolutePath() + "/adaslog/" + date + "/ownerCarStateInfo.txt"; -// Logger.d( TAG, path ); -// logWriter = new LogWriter( path ); -// } -// logWriter.write( ownerCarStateInfo ); -// ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ownerCarStateInfo, ADASCarStateInfo.class ); -// if ( mMogoAdasCarDataCallback != null ) { -// mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInfo ); -// } } @Override @@ -359,6 +316,21 @@ public class MogoADASController implements IMogoADASController { mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInf ); } } + + @Override + public void notifyOwnerCarRect( List< AdasAIDLOwnerCarRectModel > ownerCarStateRectList ) { + // 物体识别返回 + Logger.d( TAG, "onRectData = %s", ownerCarStateRectList.toString() ); + mLastFrameData = ownerCarStateRectList; + // 仅在 vr 模式下显示 adas 识别车辆 + if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + return; + } + if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) { + return; + } + handleAdasRecognizedData( ownerCarStateRectList ); + } }; AutopilotServiceManage.getInstance().registerAutopilotDataListener( mAutopolitDataCallBack ); } @@ -611,10 +583,10 @@ public class MogoADASController implements IMogoADASController { @Override public List< ADASRecognizedResult > getLastADASRecognizedResult() { - RectInfo rectInfo = mLastFrameData; + List< AdasAIDLOwnerCarRectModel > data = mLastFrameData; List< ADASRecognizedResult > recognizedResultList = null; try { - recognizedResultList = AdasObjectUtils.fromAdasObject( rectInfo ); + recognizedResultList = AdasObjectUtils.regroupData( data ); return recognizedResultList; } catch ( Exception e ) { return null; diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java index 9e878c3d5d..a59b38b850 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java @@ -30,6 +30,7 @@ abstract class OnAdasListenerAdapter implements OnAdasListener { } @Override + @Deprecated public void onRectData( RectInfo rectInfo ) { }