[650][adas] 新增FSM2024接口;新增FSM2024超时接口,FSM数据接入新增检测能否启动自驾440兼容版本;

This commit is contained in:
xinfengkun
2024-06-14 15:15:40 +08:00
parent 75d18a6ea7
commit 39f6f085fc
15 changed files with 377 additions and 24 deletions

View File

@@ -30,6 +30,7 @@ public enum MessageType {
TYPE_RECEIVE_M1_STITCHED_VIDEO(MessagePad.MessageType.MsgTypeM1StitchedVideo, "M1拼接视频"),
TYPE_RECEIVE_SSM(MessagePad.MessageType.MsgTypeSSMState, "SSM系统状态"),
TYPE_RECEIVE_FM_STATE(MessagePad.MessageType.MsgTypeFMState, "FM状态"),
TYPE_RECEIVE_FSM2024_STATE(MessagePad.MessageType.MsgTypeFSM2024State, "FSM状态"),
TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"),
TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"),

View File

@@ -11,6 +11,7 @@ import org.json.JSONObject;
import chassis.Chassis;
import chassis.ChassisStatesOuterClass;
import fsm.Fsm2024;
import function_state_management.FSMStatusReasonQueryOuterClass;
import system_master.SsmInfo;
import system_master.SystemStatusInfo;
@@ -45,14 +46,19 @@ public class LaunchConditionData {
*/
public final SsmInfo.SsmStatusInf ssmInfo;
public final FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond;//FSM数据
public final Fsm2024.FSMStateMsg fsmState;//FSM数据
public final long createTime;
public LaunchConditionData(String abilityVersion, Fsm2024.FSMStateMsg fsmState) {
this(abilityVersion, null, Float.MAX_VALUE, null, null, null, null, fsmState);
}
public LaunchConditionData(String abilityVersion,
SystemStatusInfo.StatusInfo statusInfo,
SsmInfo.SsmStatusInf ssmInfo,
FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond) {
this(abilityVersion, null, Float.MAX_VALUE, null, statusInfo, ssmInfo, fsmStatusReasonRespond);
this(abilityVersion, null, Float.MAX_VALUE, null, statusInfo, ssmInfo, fsmStatusReasonRespond, null);
}
public LaunchConditionData(String abilityVersion,
@@ -62,6 +68,17 @@ public class LaunchConditionData {
SystemStatusInfo.StatusInfo statusInfo,
SsmInfo.SsmStatusInf ssmInfo,
FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond) {
this(abilityVersion, chassisStates, oldSteering, light, statusInfo, ssmInfo, fsmStatusReasonRespond, null);
}
public LaunchConditionData(String abilityVersion,
ChassisStatesOuterClass.ChassisStates chassisStates,
float oldSteering,
Chassis.LightSwitch light,
SystemStatusInfo.StatusInfo statusInfo,
SsmInfo.SsmStatusInf ssmInfo,
FSMStatusReasonQueryOuterClass.FSMStatusReasonRespond fsmStatusReasonRespond,
Fsm2024.FSMStateMsg fsmState) {
this.abilityVersion = abilityVersion;
this.chassisStates = chassisStates;
this.oldSteering = oldSteering;
@@ -69,6 +86,7 @@ public class LaunchConditionData {
this.statusInfo = statusInfo;
this.ssmInfo = ssmInfo;
this.fsmStatusReasonRespond = fsmStatusReasonRespond;
this.fsmState = fsmState;
createTime = System.currentTimeMillis();
}
@@ -78,9 +96,10 @@ public class LaunchConditionData {
jsonObject.put("ability_version", abilityVersion);
jsonObject.put("create_object_time", createTime);
JSONArray array = new JSONArray();
JSONObject chassisStatesObject = new JSONObject();
chassisStatesObject.put("name", "ChassisStates");
JSONObject chassisStatesObject = null;
if (chassisStates != null) {
chassisStatesObject = new JSONObject();
chassisStatesObject.put("name", "ChassisStates");
if (chassisStates.hasHeader()) {
chassisStatesObject.put("data_header", TextFormat.printer().escapingNonAscii(false).printToString(chassisStates.getHeader()));
}
@@ -120,18 +139,27 @@ public class LaunchConditionData {
}
//车灯
if (light != null) {
if (chassisStatesObject == null) {
chassisStatesObject = new JSONObject();
chassisStatesObject.put("name", "ChassisStates");
}
chassisStatesObject.put("light", light.name());
}
array.put(chassisStatesObject);
if (chassisStatesObject != null) {
array.put(chassisStatesObject);
}
if (statusInfo != null) {
arrayPut(array, statusInfo.getClass().getName(), statusInfo.getAutoPilotReady(), statusInfo.getAutoPilotUnreadyReason());
arrayPut(array, statusInfo);
}
if (ssmInfo != null) {
arrayPut(array, ssmInfo.getClass().getName(), ssmInfo.getAutoPilotReady(), ssmInfo.getAutoPilotUnreadyReason());
arrayPut(array, ssmInfo);
}
if (fsmStatusReasonRespond != null) {
arrayPut(array, fsmStatusReasonRespond);
}
if (fsmState != null) {
arrayPut(array, fsmState);
}
if (array.length() > 0) {
jsonObject.put("data", array);
}

View File

@@ -14,6 +14,7 @@ public class UnableLaunchReason {
CHASSIS,//底盤
SSM,
FSM,
FSM2024,
}
/**
@@ -31,7 +32,9 @@ public class UnableLaunchReason {
CHASSIS_HAZARD_LIGHTS,//危险报警灯
SSM_OFFER,//SSM提供的原因
FSM_OFFER,//FSM提供的原因
SSM_TIMEOUT//SSM超时
FSM2024_OFFER,//FSM2024提供的原因
SSM_TIMEOUT,//SSM超时
FSM2024_TIMEOUT//FSM2024超时
}
/**

View File

@@ -0,0 +1,53 @@
syntax = "proto2";
package fsm;
import "header.proto";
enum State {
OFF = 0;
STANDBY = 1; //Standby 未来会弃用, 并入OFF
ACTIVATING = 2;
PILOT_DRIVING_ACTIVE = 3; //未来会被弃用所有激活状态统一在Active状态下作为子状态管理
PARALLEL_DRIVING_ACTIVE = 4; //未来会被弃用所有激活状态统一在Active状态下作为子状态管理
SAFETY_STOP = 5;
ACTIVE = 6;
}
enum SafetyStopMode {
NOT_NEEDED = 0;
PLANNER_STOP = 1;
CONTROLLER_COMFORT_STOP = 2;
CONTROLLER_EMERGENCY_STOP = 3;
}
enum ActiveMode {
NOT_ACTIVE= 0;
PILOT_ACTIVE= 1;
PARALLEL_ACTIVE= 2;
SIMULATOR_ACTIVE= 3; //模拟器驾驶, M1上专用
}
message FSMStateMsg {
required common.Header header = 1;
required State function_state = 2;
required SafetyStopMode fsm_safety_stop_mode = 4; //FSM如果进入safety stop是planning 进行停车还是control进行舒适停车还是control进行紧急停车
required ActiveMode active_mode = 6;
required bool new_msg_flag = 10;
required bool pilot_standby_flag = 11;
required bool parallel_standby_flag = 12;
required bool simulator_standby_flag = 13;
optional string pilot_not_standby_reason= 21; //FSM 无法自驾无法就绪的原因。
optional string parallel_not_standby_reason= 22; //FSM 无法平行即使就绪原因
optional string simulator_not_standby_reason= 23; //FSM 无法模拟器驾驶原因
optional uint64 fail_to_pilot_session_id= 36;
optional uint64 fail_to_parallel_session_id= 37;
optional uint64 fail_to_simulator_session_id= 38;
optional string abnormal_state_trans_reason= 41; //FSM 异常退出ACTIVATING/自驾/平行驾驶/模拟器驾驶原因 (包括接管)
}

View File

@@ -35,6 +35,7 @@ enum MessageType
MsgTypeM1StitchedVideo = 0x1000e; //m1拼接视频 定频10hz
MsgTypeSSMState = 0x1000f; //ssm 系统状态 定频1hz hq m1 MAP350开始支持其他车型MAP360开始支持
MsgTypeFMState = 0x10010; //FM状态 定频1hz bus和清扫车是MAP370开始支持其他车型MAP360开始支持
MsgTypeFSM2024State = 0x10011; //20240531 FSM状态 定频10hz telematics做状态变化判断无变化10hz上报有变化立即上报 BUS MAP440开始支持其他车型暂未支持
//### 以下消息全部不定频 ###
MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求
@@ -755,3 +756,6 @@ message SessionInfo
//message definition for MsgTypeFMState
//refer to fm_info.proto for details
//message definition for MsgTypeFSM2024State
//refer to fsm2024.proto