diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java index 5373985147..9421872e3f 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java @@ -11,9 +11,9 @@ import com.zhidao.adas.client.bean.ErrorData; import com.zhidao.adas.client.bean.GlobalPathResp; import com.zhidao.adas.client.bean.GnssInfo; import com.zhidao.adas.client.bean.MogoReportMessage; -import com.zhidao.adas.client.bean.MyPointCloud; import com.zhidao.adas.client.bean.OriginalPointCloudData; import com.zhidao.adas.client.bean.PerceptionTrafficLight; +import com.zhidao.adas.client.bean.PlanningDecisionState; import com.zhidao.adas.client.bean.PlanningObjects; import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; import com.zhidao.adas.client.bean.RecordDataConfig; @@ -116,6 +116,7 @@ public class DataDistribution { public final List listErrorData = new ArrayList<>(); public final List listOriginalPointCloud = new ArrayList<>(); public final List listPlanningObjects = new ArrayList<>(); + public final List listPlanningDecisionState = new ArrayList<>(); public String cutDown(String str) { if (isCutDown && str.length() > 650) { @@ -159,6 +160,14 @@ public class DataDistribution { if (listener != null && Constants.TITLE.RECEIVE_PLANNING_OBJECTS.equals(listener.first)) { listener.second.onRefresh(); } + } else if (data instanceof PlanningDecisionState) { + listPlanningDecisionState.add(0, time + str); + if (listPlanningDecisionState.size() > LIST_SIZE) { + listPlanningDecisionState.remove(listPlanningDecisionState.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(listener.first)) { + listener.second.onRefresh(); + } } else if (data instanceof GnssInfo) { listGnssInfo.add(0, time + str); if (listGnssInfo.size() > LIST_SIZE) { diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PlanningDecisionState.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PlanningDecisionState.java new file mode 100644 index 0000000000..c443774c36 --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/PlanningDecisionState.java @@ -0,0 +1,23 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; + +import java.text.SimpleDateFormat; + +import mogo.telematics.pad.MessagePad; + +public class PlanningDecisionState extends BaseInfo { + public final MessagePad.PlanningActionMsg bean; + + public PlanningDecisionState(MessagePad.Header header, MessagePad.PlanningActionMsg bean, SimpleDateFormat sdf) { + super("接收", bean.getSerializedSize(), header, sdf); + this.bean = bean; + } + + + @Override + public String toString() { + return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean); + } + +} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java index 74e3c77965..7cf79e26e6 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java @@ -133,6 +133,8 @@ public class InfoFragment extends BaseFragment { adapter.setData(DataDistribution.getInstance().listOriginalPointCloud); } else if (Constants.TITLE.RECEIVE_PLANNING_OBJECTS.equals(title)) { adapter.setData(DataDistribution.getInstance().listPlanningObjects); + } else if (Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE.equals(title)) { + adapter.setData(DataDistribution.getInstance().listPlanningDecisionState); } else { adapter.setData(DataDistribution.getInstance().listErrorData); } diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 17a6c15a60..1781acfc42 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -65,6 +65,7 @@ import com.zhidao.adas.client.bean.IPCConnectState; import com.zhidao.adas.client.bean.MogoReportMessage; import com.zhidao.adas.client.bean.OriginalPointCloudData; import com.zhidao.adas.client.bean.PerceptionTrafficLight; +import com.zhidao.adas.client.bean.PlanningDecisionState; import com.zhidao.adas.client.bean.PlanningObjects; import com.zhidao.adas.client.bean.PredictionObstacleTrajectory; import com.zhidao.adas.client.bean.RecordDataConfig; @@ -615,6 +616,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas titleFragmentData.add(Constants.TITLE.RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY); titleFragmentData.add(Constants.TITLE.RECEIVE_POINT_CLOUD_ORIGINAL); titleFragmentData.add(Constants.TITLE.RECEIVE_PLANNING_OBJECTS); + titleFragmentData.add(Constants.TITLE.RECEIVE_PLANNING_DECISION_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_CAR_CONFIG_RESP); titleFragmentData.add(Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP); titleFragmentData.add(Constants.TITLE.RECEIVE_RECORD_RESULT); @@ -929,6 +931,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas DataDistribution.getInstance().addData(base); } + @Override + public void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg) { + PlanningDecisionState base = new PlanningDecisionState(header, planningActionMsg, sdf); + DataDistribution.getInstance().addData(base); + } + private void initAdas() { CupidLogUtils.e(TAG, "--->初始化"); diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java index 17988a7f0d..520893fde8 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java @@ -157,6 +157,7 @@ public class Constants { String RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY = MessageType.TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.desc; String RECEIVE_POINT_CLOUD_ORIGINAL = MessageType.TYPE_RECEIVE_POINT_CLOUD.desc; String RECEIVE_PLANNING_OBJECTS = MessageType.TYPE_RECEIVE_PLANNING_OBJECTS.desc; + String RECEIVE_PLANNING_DECISION_STATE = MessageType.TYPE_RECEIVE_PLANNING_DECISION_STATE.desc; // String RECEIVE_BASIC_INFO_REQ = "自动驾驶设备基础信息请求"; String TITLE_CAR_CONFIG_RESP = "工控机版本\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t配置"; diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index 17f73750c8..f290fc1951 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -1,6 +1,5 @@ package com.mogo.eagle.core.function.autopilot.adapter -import android.util.* import chassis.VehicleStateOuterClass import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HdMapBuildConfig @@ -45,7 +44,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPointCloudList import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager.invokeAutopilotRecordResult import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager -import com.mogo.eagle.core.network.utils.* import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener import com.zhidao.support.adas.high.common.ProtocolStatus @@ -57,7 +55,6 @@ import mogo_msg.MogoReportMsg import perception.TrafficLightOuterClass import prediction.Prediction import record_cache.RecordPanelOuterClass -import rule_segement.MogoPointCloudOuterClass import system_master.SystemStatusInfo /** @@ -401,6 +398,15 @@ class MoGoAdasListenerImpl : OnAdasListener { } + /** + * planning决策状态, 透传 + */ + override fun onPlanningActionMsg( + header: MessagePad.Header?, + planningActionMsg: MessagePad.PlanningActionMsg? + ) { + } + override fun onError(status: ProtocolStatus, bytes: ByteArray) { diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 34dc7e52b4..4dc8d18d1c 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -3,13 +3,15 @@ package mogo.telematics.pad; enum ProtocolVersion{ Defaultver = 0; - CurrentVersion = 6; //每次修改proto文件增加1 + CurrentVersion = 7; //每次修改proto文件增加1 } enum MessageType { MsgTypeDefault = 0; + MsgTypePlanningDecisionState = 0x00001; //planning决策状态, 透传 + MsgTypeTrajectory = 0x10000; //局部轨迹,车前引导线 MsgTypeTrackedObjects = 0x10001; //障碍物信息 MsgTypeGnssInfo = 0x10002; //惯导信息 @@ -403,5 +405,38 @@ message OperatorCmdReq //OPERATOR_CMD_SET_HORN: 1: honk 2: stop honking } +//message definition for MsgTypePlanningDecisionState +enum DrivingState{ + NO_AUTODRIVING = 0; //不在自动驾驶状态 + LANKE_KEEP = 1; //车道保持状态 + TRAFFIC_LIGHT = 2; //红绿灯通行状态: driving_action:1 表示停止动作;driving_action:2 表示通行动作 + FOLLOW_LANE_CHANGE_LEFT = 3; //follow全局择机向左变道状态: driving_action:1 表示触发变道;driving_action:2 表示择机保持;driving_action:3 表示变道完成 + FOLLOW_LANE_CHANGE_RIGHT = 4; //follow全局择机向右变道状态: driving_action:1 表示触发变道;driving_action:2 表示择机保持;driving_action:3 表示变道完成 + AUTO_LANE_CHANGE_LEFT = 5; //主动向左变道状态: driving_action:1 表示触发变道;driving_action:2 表示执行变道;driving_action:3 表示变道取消;driving_action:4 表示变道完成 + AUTO_LANE_CHANGE_RIGHT = 6; //主动向左变道状态: driving_action:1 表示触发变道;driving_action:2 表示执行变道;driving_action:3 表示变道取消;driving_action:4 表示变道完成 + LANE_AVOID_LEFT = 7; //主动向左绕行状态: driving_action:1 表示触发绕行;driving_action:2 表示执行绕行;driving_action:3 表示绕行取消;driving_action:4 表示绕行完成 + LANE_AVOID_RIGHT = 8; //主动向右绕行状态: driving_action:1 表示触发绕行;driving_action:2 表示执行绕行;driving_action:3 表示绕行取消;driving_action:4 表示绕行完成 + START_UP = 9; //起步状态: driving_action:1 表示正常启动;driving_action:2 表示择机起步; + PULL_OVER = 10; //靠边停车状态: driving_action:1 表示正常靠边停车;driving_action:2 表示择机靠边停车; + UN_PROTECTED_INTERSECTION = 11; //路口预测响应状态: driving_action:1 表示触发了预测响应; +} +enum DrivingAction{ + DRIVING_Action_STATE_NONE = 0; + DRIVING_ACTION_STATE_ONE = 1; + DRIVING_ACTION_STATE_TWO = 2; + DRIVING_ACTION_STATE_THREE = 3; + DRIVING_ACTION_STATE_FOUR = 4; +} +message DrivingActionMsg +{ + DrivingState driving_state = 1; + DrivingAction driving_action = 2; +} + +message PlanningActionMsg +{ + DrivingActionMsg action_msg = 1; + double destination_acc = 2; //驾驶的意图(规划期望的加速或者减速值) +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index abfd655396..b40ce186dc 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -170,6 +170,14 @@ public interface OnAdasListener { */ void onRecordDataConfigResp(MessagePad.Header header, MessagePad.RecordDataConfig config); + /** + * planning决策状态, 透传 + * + * @param header 头 + * @param planningActionMsg 数据 + */ + void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg); + /** * 数据错误 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index a7ccda63c2..56fa249ae2 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -47,7 +47,10 @@ public enum MessageType { TYPE_SEND_SET_RAIN_MODE_REQ(MessagePad.MessageType.MsgTypeSetRainModeReq, "设置雨天模式"), TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), - TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"); + TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), + //透传 原始pb文件中不存在以下type。由于Java中无法强转所以在ADAS_DATA message_pad.proto中放开注释 + TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"); + /** * 消息action code diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java index f9e372deb9..97f7de500e 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java @@ -29,6 +29,7 @@ public class MyMessageFactory implements IMyMessageFactory { private IMsg arrivalNotificationMessage;//到站提醒 private IMsg statusQueryRespMessage;//状态查询应答 private IMsg recordDataConfigRespMessage;//数据采集配置应答 + private IMsg planningDecisionStateMessage;//planning决策状态 @Override @@ -135,6 +136,12 @@ public class MyMessageFactory implements IMyMessageFactory { recordDataConfigRespMessage = new RecordDataConfigRespMessage(); } return recordDataConfigRespMessage; + } else if (messageType == MessageType.TYPE_RECEIVE_PLANNING_DECISION_STATE.typeCode) { + //planning决策状态 + if (planningDecisionStateMessage == null) { + planningDecisionStateMessage = new PlanningDecisionStateMessage(); + } + return planningDecisionStateMessage; } else { //MessageType.TYPE_DEFAULT.typeCode return null; diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java new file mode 100644 index 0000000000..c04815d910 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningDecisionStateMessage.java @@ -0,0 +1,23 @@ +package com.zhidao.support.adas.high.msg; + +import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasManager; +import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; +import com.zhidao.support.adas.high.protocol.RawData; + +import mogo.telematics.pad.MessagePad; + +/** + * planning决策状态, 透传 + */ +public class PlanningDecisionStateMessage extends MyAbstractMessageHandler { + + @Override + public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { + MessagePad.PlanningActionMsg planningActionMsg = MessagePad.PlanningActionMsg.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + if (adasListener != null) { + adasListener.onPlanningActionMsg(raw.getHeader(), planningActionMsg); + } + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java index 2c03509065..5ad742be4f 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterface.java @@ -143,24 +143,6 @@ public class SubscribeInterface { } } } -// subscribedInterface.put(MessageType.TYPE_RECEIVE_TRAJECTORY, MessageType.TYPE_RECEIVE_TRAJECTORY.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_TRACKED_OBJECTS, MessageType.TYPE_RECEIVE_TRACKED_OBJECTS.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_GNSS_INFO, MessageType.TYPE_RECEIVE_GNSS_INFO.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_VEHICLE_STATE, MessageType.TYPE_RECEIVE_VEHICLE_STATE.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_AUTOPILOT_STATE, MessageType.TYPE_RECEIVE_AUTOPILOT_STATE.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_REPORT_MESSAGE, MessageType.TYPE_RECEIVE_REPORT_MESSAGE.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT, MessageType.TYPE_RECEIVE_PERCEPTION_TRAFFIC_LIGHT.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY, MessageType.TYPE_RECEIVE_PREDICTION_OBSTACLE_TRAJECTORY.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_POINT_CLOUD, MessageType.TYPE_RECEIVE_POINT_CLOUD.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_PLANNING_OBJECTS, MessageType.TYPE_RECEIVE_PLANNING_OBJECTS.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_BASIC_INFO_REQ, MessageType.TYPE_RECEIVE_BASIC_INFO_REQ.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_CAR_CONFIG_RESP, MessageType.TYPE_RECEIVE_CAR_CONFIG_RESP.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_RECORD_RESULT, MessageType.TYPE_RECEIVE_RECORD_RESULT.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_GLOBAL_PATH_RESP, MessageType.TYPE_RECEIVE_GLOBAL_PATH_RESP.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_WARN, MessageType.TYPE_RECEIVE_WARN.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_ARRIVAL_NOTIFICATION, MessageType.TYPE_RECEIVE_ARRIVAL_NOTIFICATION.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_STATUS_QUERY_RESP, MessageType.TYPE_RECEIVE_STATUS_QUERY_RESP.typeCode.getNumber()); -// subscribedInterface.put(MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP, MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP.typeCode.getNumber()); } }