完成新架构的域控制器的监听及数据改造

Signed-off-by: 董宏宇 <martindhy@gmail.com>
This commit is contained in:
董宏宇
2021-10-18 19:16:41 +08:00
parent a4650ca514
commit 8a3e122518
76 changed files with 1895 additions and 1516 deletions

View File

@@ -12,6 +12,8 @@ import android.location.Location;
import android.os.Handler;
import android.os.Message;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
@@ -129,12 +131,12 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<DispatchAdas
}
@Override
public void notifyAutopilotState(AutopilotStatus autopilotStatus) {
public void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) {
AdasServiceModel.getInstance().uploadAutopilotStatus(autopilotStatus);
}
@Override
public void autopilotRoute(AutopilotRoute autopilotRoute) {
public void autopilotRoute(AutopilotRouteInfo autopilotRoute) {
// if (autopilotRoute == null || autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
// return;
// }
@@ -226,12 +228,10 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<DispatchAdas
}
public void testNotifyAutopilotState() {
AutopilotStatus autopilotStatus = new AutopilotStatus();
AutopilotStatus.ValuesBean valuesBean = new AutopilotStatus.ValuesBean();
valuesBean.setReason("123");
valuesBean.setSpeed(123);
valuesBean.setState(0);
autopilotStatus.setValues(valuesBean);
AutopilotStatusInfo autopilotStatus = new AutopilotStatusInfo();
autopilotStatus.setReason("123");
autopilotStatus.setSpeed(123);
autopilotStatus.setState(0);
AdasServiceModel.getInstance().uploadAutopilotStatus(autopilotStatus);
}

View File

@@ -1,29 +1,28 @@
package com.mogo.module.adas;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.mogo.eagle.core.data.autopilot.AutoPilotStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
import com.mogo.eagle.core.data.traffic.TrafficData;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.module.adas.model.AdasServiceModel;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.OnAdasMsgConnectStatusListener;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.zhidao.support.adas.high.bean.AutopilotWayArrive;
import com.zhidao.support.adas.high.bean.CarLaneInfo;
import com.zhidao.support.adas.high.bean.CarStateInfo;
import com.zhidao.support.adas.high.bean.LightStatueInfo;
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
import com.zhidao.support.obu.ami.AmiClientManager;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Flowable;
@@ -33,7 +32,7 @@ import io.reactivex.schedulers.Schedulers;
/**
* Created by XuYong on 2021/4/25 14:43
*/
public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener {
public class AdasEventManager implements OnAdasMsgConnectStatusListener, IMoGoAutopilotStatusListener {
private final String TAG = "AdasEventManager";
@@ -48,12 +47,13 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
//自动驾驶车速度
private float mCurrentAutopilotSpeed = 0;
//自动驾驶状态
private AutopilotStatus.ValuesBean mAutopilotValuesStatus = null;
private AutopilotStatusInfo mAutopilotValuesStatus = null;
private IAdasProviderBizListener providerBizListener;
private AdasEventManager() {
gson = GsonUtil.getGson();
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
}
public static AdasEventManager getInstance() {
@@ -98,157 +98,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
iAdasStatusListeners.clear();
}
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
Logger.d(TAG, "onWarnMessage " + warnMessageInfo);
//报警model
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.onWarnMessage(warnMessageInfo);
}
}
}
@Override
public void onVideoSize(int width, int height) {
Logger.d(TAG, "onVideoSize");
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
}
}
}
@Override
public void onRectData(RectInfo rectInfo) {
Logger.d(TAG, "onRectData " + rectInfo);
try {
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.onRectData(rectInfo);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCarStateData(CarStateInfo carStateInfo) {
//Logger.d(TAG, "onCarStateData " + carStateInfo);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.ownerCarStateInfo(gson.toJson(carStateInfo));
}
}
//can数据转发
CarStateInfo.ValuesBean bean = carStateInfo.getValues();
if (bean != null) {
int turn_light = bean.getTurn_light(); //转向灯状态 0是正常 1是左转 2是右转
AmiClientManager.getInstance().setTurnLightState(turn_light);
}
}
@Override
public void onLightStateData(LightStatueInfo lightStatueInfo) {
Logger.d(TAG, "onLightStateData " + lightStatueInfo);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
}
}
}
@Override
public void onObstaclesInfo(ObstaclesInfo obstaclesInfo) {
Logger.d(TAG, "onObstaclesInfo " + obstaclesInfo);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
}
}
}
@Override
public void onCarLaneInfo(CarLaneInfo carLaneInfo) {
Logger.d(TAG, "onCarLaneInfo " + carLaneInfo);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
}
}
}
@Override
public void autopilotStatus(AutopilotStatus autopilotStatus) {
Logger.d(TAG, "autopilotStatus " + autopilotStatus);
AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues();
if (autopilotStatusValues != null) {
// 初始化自动驾驶状态信息
AutoPilotStatusInfo autopilotStatusInfo = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo();
autopilotStatusInfo.setAutopilotStatus(autopilotStatusValues.getState());
autopilotStatusInfo.setAutoDriveStatus(autopilotStatusValues.getPilotmode());
autopilotStatusInfo.setErrorReason(autopilotStatusValues.getReason());
autopilotStatusInfo.setCamera(autopilotStatusValues.getCamera());
autopilotStatusInfo.setRtk(autopilotStatusValues.getRtk());
autopilotStatusInfo.setRadar(autopilotStatusValues.getRadar());
autopilotStatusInfo.setSpeed(autopilotStatusValues.getSpeed());
// 初始化自动驾驶状态信息
autopilotStatusInfo.setVersion(AdasManager.getInstance().getAdasConfig().getVersion());
autopilotStatusInfo.setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatusListener();
int state = autopilotStatusValues.getState();
float speed = autopilotStatusValues.getSpeed();
mCurrentAutopilotStatus = state;
mCurrentAutopilotSpeed = speed;
this.mAutopilotValuesStatus = autopilotStatus.getValues();
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.notifyAutopilotState(autopilotStatus);
}
}
}
}
@Override
public void autopilotArrive(AutopilotWayArrive autopilotWayArrive) {
Logger.d(TAG, "autopilotArrive " + autopilotWayArrive);
if (autopilotWayArrive != null) {
AutopilotWayArrive.ResultBean result = autopilotWayArrive.getResult();
if (result != null) {
AutopilotWayArrive.ResultBean.EndLatLonBean endLatLon = result.getEndLatLon();
if (endLatLon != null) {
AdasAIDLAutopilotArriveModel adasAIDLAutopilotArriveModel = new AdasAIDLAutopilotArriveModel();
adasAIDLAutopilotArriveModel.setCarType(result.getCarType());
double lon = endLatLon.getLon();
double lat = endLatLon.getLat();
adasAIDLAutopilotArriveModel.setLat(lat);
adasAIDLAutopilotArriveModel.setLon(lon);
Logger.d(TAG, "autopilotArrive reportSite");
reportSite(lon, lat);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.autopilotArrive(adasAIDLAutopilotArriveModel);
}
}
}
}
}
}
@Override
public void onAutopilotRoute(AutopilotRoute autopilotRoute) {
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
Logger.d(TAG, "onAutopilotRoute is null !");
return;
}
Logger.d(TAG, "onAutopilotRoute : " + autopilotRoute.toString());
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.autopilotRoute(autopilotRoute);
}
}
}
@Override
public void onAutopilotSNRequest() {
@@ -259,11 +108,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
}
}
@Override
public void onAutopilotGuardian(AutopilotGuardianInfo guardianInfo) {
}
@Override
public void onWebSocketConnectSuccess() {
Logger.d(TAG, "webSocket 连接成功");
@@ -271,7 +115,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectStatus(true);
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatusListener();
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatus();
for (IAdasStatusListener listener : iAdasStatusListeners) {
listener.onServiceConnected();
}
@@ -283,7 +127,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
Logger.d(TAG, "webSocket 连接失败 reason:" + reason);
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectStatus(false);
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatusListener();
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatus();
for (IAdasStatusListener listener : iAdasStatusListeners) {
listener.onServiceDisconnected();
}
@@ -319,4 +163,96 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
public void setProviderBizListener(IAdasProviderBizListener listener) {
providerBizListener = listener;
}
@Override
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
Logger.d(TAG, "autopilotStatus " + autoPilotStatusInfo);
int state = autoPilotStatusInfo.getState();
float speed = autoPilotStatusInfo.getSpeed();
mCurrentAutopilotStatus = state;
mCurrentAutopilotSpeed = speed;
this.mAutopilotValuesStatus = autoPilotStatusInfo;
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.notifyAutopilotState(autoPilotStatusInfo);
}
}
}
@Override
public void onAutopilotArriveAtStation(AutopilotStationInfo autopilotWayArrive) {
Logger.d(TAG, "autopilotArrive " + autopilotWayArrive);
if (autopilotWayArrive != null) {
double lon = autopilotWayArrive.getLon();
double lat = autopilotWayArrive.getLat();
Logger.d(TAG, "autopilotArrive reportSite");
reportSite(lon, lat);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.autopilotArrive(autopilotWayArrive);
}
}
}
}
@Override
public void onAutopilotCarStateData(@Nullable AutopilotCarStateInfo autoPilotCarStateInfo) {
Logger.d(TAG, "onCarStateData " + autoPilotCarStateInfo);
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.ownerCarStateInfo(gson.toJson(autoPilotCarStateInfo));
}
}
//can数据转发
AutopilotCarStateInfo.ValuesBean bean = autoPilotCarStateInfo.getValues();
if (bean != null) {
int turn_light = bean.getTurn_light(); //转向灯状态 0是正常 1是左转 2是右转
AmiClientManager.getInstance().setTurnLightState(turn_light);
}
}
@Override
public void onAutopilotRoute(@Nullable AutopilotRouteInfo autopilotRoute) {
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
Logger.d(TAG, "onAutopilotRoute is null !");
return;
}
Logger.d(TAG, "onAutopilotRoute : " + autopilotRoute.toString());
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.autopilotRoute(autopilotRoute);
}
}
}
@Override
public void onAutopilotGuardian(@Nullable AutopilotGuardianStatusInfo guardianInfo) {
}
@Override
public void onAutopilotIdentifyDataUpdate(@Nullable List<TrafficData> trafficData) {
Logger.d(TAG, "onRectData " + trafficData);
try {
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.onRectData(trafficData);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onAutopilotWarnMessage(@Nullable AutopilotWarnMessage autopilotWarnMessage) {
Logger.d(TAG, "onWarnMessage " + autopilotWarnMessage);
//报警model
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.onWarnMessage(autopilotWarnMessage);
}
}
}
}

View File

@@ -0,0 +1,110 @@
package com.mogo.module.adas
import android.util.Log
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.utils.network.utils.GsonUtil
import com.zhidao.support.adas.high.bean.AutopilotRoute
import com.zhidao.support.adas.high.bean.CarStateInfo
import com.zhidao.support.adas.high.bean.RectInfo.RectBean
import com.zhidao.support.adas.high.bean.WarnMessageInfo
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo
import java.util.*
import java.util.concurrent.TimeUnit
/**
* @author congtaowang
* @since 2020/10/25
*
* 对象转换类
*/
object AdasObjectUtils {
fun fromAutopilotGuardianInfo(autopilotGuardianInfo: AutopilotGuardianInfo): AutopilotGuardianStatusInfo? {
return GsonUtil.objectFromJson(
GsonUtil.jsonFromObject(autopilotGuardianInfo),
AutopilotGuardianStatusInfo::class.java
)
}
fun fromAdasAutopilotRoute(carStateInfo: AutopilotRoute): AutopilotRouteInfo? {
return GsonUtil.objectFromJson(
GsonUtil.jsonFromObject(carStateInfo),
AutopilotRouteInfo::class.java
)
}
fun fromAdasCarStateInfoObject(carStateInfo: CarStateInfo): AutopilotCarStateInfo? {
return GsonUtil.objectFromJson(
GsonUtil.jsonFromObject(carStateInfo),
AutopilotCarStateInfo::class.java
)
}
fun fromAdasObject(info: WarnMessageInfo?): AutopilotWarnMessage? {
if (info == null) {
return null
}
val warnMessage =
AutopilotWarnMessage()
warnMessage.content = info.content
warnMessage.level = info.level
try {
warnMessage.type = info.type.toInt()
} catch (e: NumberFormatException) {
return null
}
warnMessage.value = info.value
return warnMessage
}
fun regroupTrafficDataData(datums: List<RectBean?>?): List<TrafficData>? {
if (datums == null || datums.isEmpty()) {
return null
}
val recognizedListResults: MutableList<TrafficData> = ArrayList()
for (model in datums) {
if (model == null) {
continue
}
val recognizedListResult = fromAdasTrafficDataObject(model)
if (recognizedListResult != null) {
recognizedListResults.add(recognizedListResult)
}
}
return recognizedListResults
}
fun fromAdasTrafficDataObject(model: RectBean?): TrafficData? {
if (model == null) {
return null
}
val start = System.nanoTime()
val result = TrafficData()
result.uuid = model.uuid
result.lat = model.lat
result.lon = model.lon
result.type = TrafficTypeEnum.getType(model.type.toInt())
result.heading = model.heading
result.systemTime = model.systemTime.toLong()
result.satelliteTime = model.satelliteTime.toLong()
result.alt = model.alt
result.speed = model.speed
result.carId = model.carId
result.dataAccuracy = model.dataAccuracy
result.distance = model.distance
result.threatLevel = model.drawlevel
Log.d(
"ADAS数据延时", "fromAdasObject cost : " + TimeUnit.NANOSECONDS.toMillis(
System.nanoTime() - start
)
)
return result
}
}

View File

@@ -9,7 +9,9 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.utils.logger.Logger;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.BasicInfo;
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
/**
@@ -45,7 +47,7 @@ public class AdasProvider implements IProvider {
private void initAdas(Context context, AdasEventManager adasEventManager) {
AdasManager.getInstance().create(context);
AdasManager.getInstance().setOnAdasListener(adasEventManager);
AdasManager.getInstance().setOnAdasListener(new OnAdasListenerAdapter());
AdasManager.getInstance().setOnAdasConnectStatusListener(adasEventManager);
adasEventManager.setProviderBizListener(this::setBasicInfo);
}

View File

@@ -1,41 +0,0 @@
package com.mogo.module.adas;
/**
* Created by XuYong on 2021/5/28 16:12
*/
public class AutonomousDriveStatusBean {
private String sn;
private int status;
private float vehicleSpeed;
public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) {
this.sn = sn;
this.status = status;
this.vehicleSpeed = vehicleSpeed;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public float getVehicleSpeed() {
return vehicleSpeed;
}
public void setVehicleSpeed(float vehicleSpeed) {
this.vehicleSpeed = vehicleSpeed;
}
}

View File

@@ -1,11 +1,18 @@
package com.mogo.module.adas;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
import com.mogo.eagle.core.data.traffic.TrafficData;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import java.util.List;
public interface IAdasDataListener {
@@ -13,11 +20,11 @@ public interface IAdasDataListener {
}
default void onRectData(RectInfo rectInfo) {
default void onRectData(List<TrafficData> trafficData) {
}
default void onWarnMessage(WarnMessageInfo warnMessageInfo) {
default void onWarnMessage(AutopilotWarnMessage autopilotWarnMessage) {
}
@@ -25,17 +32,17 @@ public interface IAdasDataListener {
/**
* 自动驾驶到达站点回调接口
*
* @param autopilotArriveModel
* @param autopilotWayArrive
*/
default void autopilotArrive(AdasAIDLAutopilotArriveModel autopilotArriveModel) {
default void autopilotArrive(AutopilotStationInfo autopilotWayArrive) {
}
/**
* 自动驾驶路线回调
*
* @param autopilotRoute {@link AutopilotRoute}
* @param autopilotRoute {@link AutopilotRouteInfo}
*/
default void autopilotRoute(AutopilotRoute autopilotRoute) {
default void autopilotRoute(AutopilotRouteInfo autopilotRoute) {
}
@@ -50,9 +57,9 @@ public interface IAdasDataListener {
/**
* 自动驾驶状态信息
*
* @param autopilotStatus {@link AutopilotStatus}
* @param autopilotStatus {@link AutopilotStatusInfo}
*/
default void notifyAutopilotState(AutopilotStatus autopilotStatus) {
default void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) {
}
}

View File

@@ -0,0 +1,141 @@
package com.mogo.module.adas;
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
import com.mogo.eagle.core.data.traffic.TrafficData;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.utils.logger.Logger;
import com.zhidao.support.adas.high.AdasManager;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.zhidao.support.adas.high.bean.AutopilotWayArrive;
import com.zhidao.support.adas.high.bean.CarLaneInfo;
import com.zhidao.support.adas.high.bean.CarStateInfo;
import com.zhidao.support.adas.high.bean.LightStatueInfo;
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
import com.zhidao.support.obu.ami.AmiClientManager;
import java.util.List;
/**
* @author congtaowang
* @since 2020/10/22
* <p>
* 适配ADAS 回调监听分发
*/
public class OnAdasListenerAdapter implements OnAdasListener {
private final String TAG = "OnAdasListenerAdapter";
@Override
public void onRectData(RectInfo rectInfo) {
List<TrafficData> recognizedListResults = AdasObjectUtils.INSTANCE.regroupTrafficDataData(rectInfo.getModels());
CallerAutoPilotStatusListenerManager.INSTANCE.invokeIdentifyDataUpdate(recognizedListResults);
}
@Override
public void onCarStateData(CarStateInfo carStateInfo) {
AutopilotCarStateInfo autopilotCarStateInfo = AdasObjectUtils.INSTANCE.fromAdasCarStateInfoObject(carStateInfo);
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotCarStateData(autopilotCarStateInfo);
//can数据转发
CarStateInfo.ValuesBean bean = carStateInfo.getValues();
if (bean != null) {
int turn_light = bean.getTurn_light(); //转向灯状态 0是正常 1是左转 2是右转
AmiClientManager.getInstance().setTurnLightState(turn_light);
}
}
@Override
public void autopilotStatus(AutopilotStatus autopilotStatus) {
AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues();
if (autopilotStatusValues != null) {
// 初始化自动驾驶状态信息
AutopilotStatusInfo autopilotStatusInfo = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo();
autopilotStatusInfo.setState(autopilotStatusValues.getState());
autopilotStatusInfo.setPilotmode(autopilotStatusValues.getPilotmode());
autopilotStatusInfo.setReason(autopilotStatusValues.getReason());
autopilotStatusInfo.setCamera(autopilotStatusValues.getCamera());
autopilotStatusInfo.setRtk(autopilotStatusValues.getRtk());
autopilotStatusInfo.setRadar(autopilotStatusValues.getRadar());
autopilotStatusInfo.setSpeed(autopilotStatusValues.getSpeed());
// 初始化自动驾驶状态信息
autopilotStatusInfo.setVersion(AdasManager.getInstance().getAdasConfig().getVersion());
autopilotStatusInfo.setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatus();
}
}
@Override
public void autopilotArrive(AutopilotWayArrive autopilotWayArrive) {
if (autopilotWayArrive != null) {
AutopilotWayArrive.ResultBean result = autopilotWayArrive.getResult();
if (result != null) {
AutopilotWayArrive.ResultBean.EndLatLonBean endLatLon = result.getEndLatLon();
if (endLatLon != null) {
AutopilotStationInfo stationInfo = new AutopilotStationInfo(result.getCarType(), endLatLon.getLon(), endLatLon.getLat());
CallerAutoPilotStatusListenerManager.INSTANCE.invokeArriveAtStation(stationInfo);
}
}
}
}
@Override
public void onAutopilotRoute(AutopilotRoute route) {
Logger.d(TAG, "onAutopilotRoute : " + route.toString());
AutopilotRouteInfo autopilotRoute = AdasObjectUtils.INSTANCE.fromAdasAutopilotRoute(route);
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotRoute(autopilotRoute);
}
@Override
public void onAutopilotSNRequest() {
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotSNRequest();
}
@Override
public void onAutopilotGuardian(AutopilotGuardianInfo guardianInfo) {
AutopilotGuardianStatusInfo autopilotRoute = AdasObjectUtils.INSTANCE.fromAutopilotGuardianInfo(guardianInfo);
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotGuardian(autopilotRoute);
}
@Override
public void onLightStateData(LightStatueInfo lightStatueInfo) {
}
@Override
public void onObstaclesInfo(ObstaclesInfo obstaclesInfo) {
}
@Override
public void onCarLaneInfo(CarLaneInfo carLaneInfo) {
}
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
final AutopilotWarnMessage warnMessage = AdasObjectUtils.INSTANCE.fromAdasObject(warnMessageInfo);
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotWarnMessage(warnMessage);
}
@Override
public void onVideoSize(int width, int height) {
}
}

View File

@@ -1,40 +0,0 @@
package com.mogo.module.adas;
/**
* Created by XuYong on 2021/5/31 16:24
*/
public class ReportSiteBean {
private String sn;
private double lon;
private double lat;
public ReportSiteBean(String sn, double lon, double lat) {
this.sn = sn;
this.lon = lon;
this.lat = lat;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
}

View File

@@ -1,17 +1,17 @@
package com.mogo.module.adas.entity;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
/**
* 上报自动驾驶规划的路径
*/
public class ReportedRoute {
private String sn;
private AutopilotStatus.ValuesBean bean;
private AutopilotStatusInfo bean;
private String siteList;
public ReportedRoute(String sn, AutopilotStatus.ValuesBean bean) {
public ReportedRoute(String sn, AutopilotStatusInfo bean) {
this.sn = sn;
this.bean = bean;
}

View File

@@ -1,31 +0,0 @@
package com.mogo.module.adas.entity;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
/**
* @author nie yunlong
* @des
* @date 2020/10/22
*/
public class WarnMessageModel {
private String action;
private WarnMessageInfo values;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public WarnMessageInfo getValues() {
return values;
}
public void setValues(WarnMessageInfo values) {
this.values = values;
}
}

View File

@@ -3,6 +3,7 @@ package com.mogo.module.adas.model;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.module.adas.entity.AutonomousDriveStatusBean;
import com.mogo.module.adas.entity.ReportDispatchResult;
import com.mogo.module.adas.entity.ReportSiteBean;
@@ -59,9 +60,9 @@ public class AdasServiceModel {
*
* @param autopilotStatus {@link AutopilotStatus}
*/
public void uploadAutopilotStatus(AutopilotStatus autopilotStatus) {
public void uploadAutopilotStatus(AutopilotStatusInfo autopilotStatus) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus.getValues());
ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus);
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportedRoute));

View File

@@ -1,216 +0,0 @@
原数据
26.820175208327566,112.57748204198309
26.82009891465042,112.57735739748664
26.820022750763542,112.57723266155585
26.81994655656347,112.57710795477944
26.81987031666393,112.57698328267305
26.819793988171348,112.57685866945901
26.819717530408877,112.57673414980971
26.819635079638967,112.57661462149986
26.819532022659132,112.5765234581422
26.819488197195188,112.5764835085963
26.81947053563866,112.57645743645142
26.81945285740347,112.5764313389555
26.81941584428336,112.57637074918446
26.819355855639404,112.57626774620917
26.8193352833325,112.57623094969783
26.819315738575742,112.57619587959701
26.81929619389902,112.5761608096667
26.819276064037396,112.5761245744324
26.819221654527443,112.5760208132482
26.819153675938914,112.5758903945585
26.8190859083974,112.57576035026403
26.81904791926707,112.57568644394968
26.819047477540156,112.57568591545105
26.819047035811135,112.57568538694994
26.819046594080046,112.57568485844635
26.81902999052958,112.57568137976324
26.818966668056316,112.57572279587626
26.81896660310204,112.57572518130716
26.81896683258833,112.57572606581252
26.81896706207354,112.57572695031374
26.818971211272444,112.57573544393973
26.819027657144368,112.57584589447032
26.819095546341085,112.57597644303986
26.8191650468231,112.57610591408428
26.819236806047,112.5762338575302
26.819310184480436,112.57636063880027
26.819384451187933,112.5764867800095
26.819460642360763,112.57661149583805
26.819536878267925,112.57673619431976
26.819613220428206,112.57686079387894
26.819689146973122,112.57698570087358
26.819765257290772,112.57711047564952
26.81984156841068,112.57723510283108
26.819916608456698,112.57735767331373
26.819990868286688,112.57747918205983
26.82006704845146,112.57760363217366
26.820142688927376,112.57772676391022
26.820220480866162,112.57784947830805
26.82029609426984,112.57797111160743
26.820372540342063,112.57809575812311
26.820449035279513,112.57822036992494
26.82052479395364,112.5783432083879
26.820600741070034,112.57846626552721
26.820676451505513,112.57858892597905
26.820750627333855,112.57870908764811
26.820788099971104,112.57876896886103
26.82079340880141,112.57877600898784
26.82079871765643,112.57878304914836
26.820804096213536,112.57879017489086
26.820866626548845,112.5788587003478
26.820983640738305,112.57893123552938
26.82111632395692,112.57893777257203
26.82117204164965,112.57891747212024
26.821184743761496,112.57890962148315
26.821197445813166,112.57890177088103
26.821210607045213,112.57889357476125
26.821290516628242,112.57883467623317
26.82140278979742,112.57875048180252
26.821515292745254,112.57866667791178
26.821628395747688,112.5785838835907
26.82174189376551,112.57850175198458
26.82185566968843,112.57842010282002
26.82196987298559,112.57833919555353
26.822083935682734,112.5782580474171
26.822198178890964,112.57817722472228
26.82231299206679,112.5780973993899
26.822427661696032,112.57801732090307
26.82254293064344,112.57793832470455
26.822658717481524,112.57786026718888
26.822774624402133,112.57778243034805
26.82289066838358,112.57770484656757
26.823007036027615,112.57762787191734
26.823123797760537,112.57755163699323
26.82324089700492,112.57747604255579
26.823355874237176,112.57740187937155
26.823470001455,112.57732986163221
26.82358841433288,112.57725688653507
26.823706827172103,112.5771839112856
26.82382523997266,112.57711093588388
26.823943652734542,112.57703796032986
26.824062065457753,112.57696498462354
26.824180478142292,112.57689200876496
26.82429889078817,112.57681903275407
26.824416715403633,112.5767464980989
26.824533859020413,112.57667699873441
26.824651399274774,112.57660868246823
26.824762900762973,112.57658692553045
26.824968687097577,112.57656763804074
26.825104150528567,112.57650684107888
26.82522465989416,112.57643823074989
26.825345659446693,112.57637072881484
26.8255763298452,112.57624421893341
排序数据:
26.81896660310204,112.57568137976324
26.818966668056316,112.57568485844635
26.81896683258833,112.57568538694994
26.81896706207354,112.57568591545105
26.818971211272444,112.57568644394968
26.819027657144368,112.57572279587626
26.81902999052958,112.57572518130716
26.819046594080046,112.57572606581252
26.819047035811135,112.57572695031374
26.819047477540156,112.57573544393973
26.81904791926707,112.57576035026403
26.8190859083974,112.57584589447032
26.819095546341085,112.5758903945585
26.819153675938914,112.57597644303986
26.8191650468231,112.5760208132482
26.819221654527443,112.57610591408428
26.819236806047,112.5761245744324
26.819276064037396,112.5761608096667
26.81929619389902,112.57619587959701
26.819310184480436,112.57623094969783
26.819315738575742,112.5762338575302
26.8193352833325,112.57624421893341
26.819355855639404,112.57626774620917
26.819384451187933,112.57636063880027
26.81941584428336,112.57637072881484
26.81945285740347,112.57637074918446
26.819460642360763,112.5764313389555
26.81947053563866,112.57643823074989
26.819488197195188,112.57645743645142
26.819532022659132,112.5764835085963
26.819536878267925,112.5764867800095
26.819613220428206,112.57650684107888
26.819635079638967,112.5765234581422
26.819689146973122,112.57656763804074
26.819717530408877,112.57658692553045
26.819765257290772,112.57660868246823
26.819793988171348,112.57661149583805
26.81984156841068,112.57661462149986
26.81987031666393,112.57667699873441
26.819916608456698,112.57673414980971
26.81994655656347,112.57673619431976
26.819990868286688,112.5767464980989
26.820022750763542,112.57681903275407
26.82006704845146,112.57685866945901
26.82009891465042,112.57686079387894
26.820142688927376,112.57689200876496
26.820175208327566,112.57696498462354
26.820220480866162,112.57698328267305
26.82029609426984,112.57698570087358
26.820372540342063,112.57703796032986
26.820449035279513,112.57710795477944
26.82052479395364,112.57711047564952
26.820600741070034,112.57711093588388
26.820676451505513,112.5771839112856
26.820750627333855,112.57723266155585
26.820788099971104,112.57723510283108
26.82079340880141,112.57725688653507
26.82079871765643,112.57732986163221
26.820804096213536,112.57735739748664
26.820866626548845,112.57735767331373
26.820983640738305,112.57740187937155
26.82111632395692,112.57747604255579
26.82117204164965,112.57747918205983
26.821184743761496,112.57748204198309
26.821197445813166,112.57755163699323
26.821210607045213,112.57760363217366
26.821290516628242,112.57762787191734
26.82140278979742,112.57770484656757
26.821515292745254,112.57772676391022
26.821628395747688,112.57778243034805
26.82174189376551,112.57784947830805
26.82185566968843,112.57786026718888
26.82196987298559,112.57793832470455
26.822083935682734,112.57797111160743
26.822198178890964,112.57801732090307
26.82231299206679,112.57809575812311
26.822427661696032,112.5780973993899
26.82254293064344,112.57817722472228
26.822658717481524,112.57822036992494
26.822774624402133,112.5782580474171
26.82289066838358,112.57833919555353
26.823007036027615,112.5783432083879
26.823123797760537,112.57842010282002
26.82324089700492,112.57846626552721
26.823355874237176,112.57850175198458
26.823470001455,112.5785838835907
26.82358841433288,112.57858892597905
26.823706827172103,112.57866667791178
26.82382523997266,112.57870908764811
26.823943652734542,112.57875048180252
26.824062065457753,112.57876896886103
26.824180478142292,112.57877600898784
26.82429889078817,112.57878304914836
26.824416715403633,112.57879017489086
26.824533859020413,112.57883467623317
26.824651399274774,112.5788587003478
26.824762900762973,112.57889357476125
26.824968687097577,112.57890177088103
26.825104150528567,112.57890962148315
26.82522465989416,112.57891747212024
26.825345659446693,112.57893123552938
26.8255763298452,112.57893777257203