diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java index f911f61830..63db092b72 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/SpecialVehicleBean.java @@ -180,18 +180,20 @@ public class SpecialVehicleBean { value[1] = "1-Start"; value[2] = "2-Stop"; optionsF.add(new SpecialVehicleOption("清扫作业", tag++, value, 0)); - value = new String[5]; + value = new String[6]; value[0] = "0-No Req"; value[1] = "1-Sweeping"; value[2] = "2-Wash Sweeper"; value[3] = "3-Pure Wash"; value[4] = "4-Pure Draw"; + value[5] = "5-Close Clean"; optionsF.add(new SpecialVehicleOption("清扫模式", tag++, value, 0)); - value = new String[4]; + value = new String[5]; value[0] = "0-No Req"; value[1] = "1-Both"; value[2] = "2-Left"; value[3] = "3-Right"; + value[4] = "4-Close Side"; optionsF.add(new SpecialVehicleOption("清扫方向", tag++, value, 0)); value = new String[3]; value[0] = "0-No Req"; diff --git a/libraries/mogo-adas-data/src/main/proto/chassis.proto b/libraries/mogo-adas-data/src/main/proto/chassis.proto index 52e3dfe9eb..be6cada7fb 100644 --- a/libraries/mogo-adas-data/src/main/proto/chassis.proto +++ b/libraries/mogo-adas-data/src/main/proto/chassis.proto @@ -39,3 +39,61 @@ enum EPSSteeringMode { ManualFromEPSFailure = 3; TemporaryInhibited = 4; } + +enum EPBWorkStatus { + EPBSTATUS_NONE = 0; + EPBSTATUS_LOCKED = 1; + EPBSTATUS_RELEASED = 2; + EPBSTATUS_LOCKED_FAIL = 3; + EPBSTATUS_RELEASE_FAIL = 4; + EPBSTATUS_FAULT = 5; +} + +enum VehicleTakeOverStatus { + None_TakeOver = 0; + Vehicle_TakeOver = 1; + Longitude_TakeOver = 2; + Latteral_TakeOver = 3; +} + +enum VehicleFaultLevel { + None_Fault = 0; + General_Fault = 1; + Serious_Fault = 2; + Critical_Fault = 3; +} + +enum VehicleControlMode { + VehicleControl_Manual = 0; + VehicleControl_Nonemanualdefault = 1; + VehicleControl_Autostandby = 2; + VehicleControl_Autoactive = 3; + VehicleControl_Remotestandby = 4; + VehicleControl_Remoteactive = 5; + VehicleControl_Telecontrolstandby = 6; + VehicleControl_Telecontrolactive = 7; + VehicleControl_Fault = 8; +} + +enum VehicleWireControlModeRequest { + NoneWireControl = 0; + WireControl = 1; +} + +enum CleanSystemControlMode { + Clean_Off_Line = 0; + Clean_Ready = 1; + Clean_Work_Standby = 2; + Clean_Sweeping_Standby = 3; + Clean_Sweeping_Both_Side_Work = 4; + Clean_Sweeping_Left_Work = 5; + Clean_Sweeping_Right_Work = 6; + Clean_WashSweep_Standby = 7; + Clean_WashSweep_Both_Side_Work = 8; + Clean_WashSweep_Left_Work = 9; + Clean_WashSweep_Right_Wrok = 10; + Clean_PureWash_Standby = 11; + Clean_PureWash_Both_Side_Work = 12; + Clean_PureWash_Left_Work = 13; + Clean_PureWash_Right_Work = 14; +} \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/proto/special_vehicle_task_cmd.proto b/libraries/mogo-adas-data/src/main/proto/special_vehicle_task_cmd.proto index 69a2d6fc3d..87d2f9619f 100644 --- a/libraries/mogo-adas-data/src/main/proto/special_vehicle_task_cmd.proto +++ b/libraries/mogo-adas-data/src/main/proto/special_vehicle_task_cmd.proto @@ -1,10 +1,12 @@ syntax = "proto2"; package chassis; +import "header.proto"; + message RoboSweeperFuTianCleanCmd { optional uint32 clean_open_requirement = 1 [default = 0]; // 清扫作业开启需求 0--no req 1--Req_clean_work, 2--No_clean_work - optional uint32 clean_mode_requirement = 2 [default = 0]; // 清扫作业模式需求 0--no req, 1--Sweeping mode, 2--Wash sweeper mode, 3--Pure wash mode, 4--Pure draw mode - optional uint32 clean_direction_requirement = 3 [default = 0]; // 清扫方向需求指 0--no req, 1--both side work, 2--left side work, 3--right side work + optional uint32 clean_mode_requirement = 2 [default = 0]; // 清扫作业模式需求 0--no req, 1--Sweeping mode, 2--Wash sweeper mode, 3--Pure wash mode, 4--Pure draw mode, 5--close clean mode + optional uint32 clean_direction_requirement = 3 [default = 0]; // 清扫方向需求指 0--no req, 1--both side work, 2--left side work, 3--right side work, 4--close side work optional uint32 clean_intensity_requirement = 4 [default = 0]; // 作业强度需求 0--no req, 1--stand clean work, 2--strong clean work optional uint32 dusk_close_requirement = 5 [default = 0]; // 降尘关闭需求 0--no req, 1--close dusk, 2--open dusk optional uint32 suction_nozzlefle_open_requirement = 6 [default = 0]; // 吸嘴挡板需求 0--no req, 1--open, 2--close @@ -22,6 +24,7 @@ message RoboVanSkywellTaskCmd { } message SpecialVehicleTaskCmd { - optional RoboSweeperFuTianTaskCmd robo_sweeper_futian_task_cmd = 1; // 福田清扫车业务指令 - optional RoboVanSkywellTaskCmd robo_van_skywell_task_cmd = 2; // 开沃小巴业务指令 + optional common.Header header = 1; + optional RoboSweeperFuTianTaskCmd robo_sweeper_futian_task_cmd = 2; // 福田清扫车业务指令 + optional RoboVanSkywellTaskCmd robo_van_skywell_task_cmd = 3; // 开沃小巴业务指令 } diff --git a/libraries/mogo-adas-data/src/main/proto/vehicle_state.proto b/libraries/mogo-adas-data/src/main/proto/vehicle_state.proto index 8bce80eb61..b0046c2df6 100644 --- a/libraries/mogo-adas-data/src/main/proto/vehicle_state.proto +++ b/libraries/mogo-adas-data/src/main/proto/vehicle_state.proto @@ -4,6 +4,51 @@ package chassis; import "header.proto"; import "chassis.proto"; +message SweeperFuTianCleanSystemState { + optional bool secu_rem_ctrl_sts = 1 [default = false]; // 远程控制使能信号 + optional bool secu_mot_work_sts = 2 [default = false]; // 电机启停控制状态信号 + optional bool secu_dup_tail_door_open_sts = 3 [default = false]; // 垃圾箱尾门开状态信号 + optional bool secu_dup_tail_door_close_sts = 4 [default = false]; // 垃圾箱尾门关状态信号 + optional bool secu_auto_dup_tail_tip_sts = 5 [default = false]; // 垃圾箱倾翻状态信号 + optional bool secu_dup_tail_ret_sts = 6 [default = false]; // 垃圾箱回位状态信号 + optional bool secu_work_stand_sts = 7 [default = false]; // 标准作业状态信号 + optional bool secu_work_strong_sts = 8 [default = false]; // 强力作业状态信号 + optional bool secu_suctionnozzlebaffle_sts = 9 [default = false]; // 吸嘴挡板开状态信号 + optional bool secu_dusk_close_sts = 10 [default = false]; // 降尘关闭状态信号 + optional bool secu_work_left_sts = 11 [default = false]; // 左侧作业状态信号 + optional bool secu_work_on_bothsides_sts = 12 [default = false]; // 两侧作业状态信号 + optional bool secu_work_right_sts = 13 [default = false]; // 右侧作业状态信号 + optional bool secu_work_ton_sts = 14 [default = false]; // 纯吸作业状态信号 + optional bool secu_work_spray_gun_sts = 15 [default = false]; // 喷雾喷枪作业状态信号 + optional bool secu_work_enc_des_sts = 16 [default = false]; // 箱体清淤作业状态信号 + optional bool secu_mod_wash_sweep_sts = 17 [default = false]; // 洗扫模式状态信号 + optional bool secu_mod_wash_sts = 18 [default = false]; // 纯洗模式状态信号 + optional bool secu_sweepdisk_red_sts = 19 [default = false]; // 扫盘减速开关状态信号 + optional bool secu_sweepdisk_acc_sts = 20 [default = false]; // 扫盘加速开关状态信号 + optional bool secu_arrowlight_sts = 21 [default = false]; // 箭头灯开关状态信号 + optional bool secu_floodlight_sts = 22 [default = false]; // 照明灯开关状态信号 + optional bool secu_work_cleaning_sts = 23 [default = false]; // 保洁作业状态信号 + optional bool secu_clean_music_sts = 24 [default = false]; // 音乐开关状态信号 + + optional bool secu_motor_oil_com_fail = 25 [default = false]; // 油泵电机通讯失败报警 + optional bool secu_motor_water_com_fail = 26 [default = false]; // 水泵电机通讯失败报警 + optional bool secu_motor_air_com_fail = 27 [default = false]; // 风机电机通讯失败报警 + optional bool secu_fan_fault = 28 [default = false]; // 散热风扇故障报警 + optional bool secu_chassis_com_fail = 29 [default = false]; // 底盘通讯失败报警 + optional bool secu_panel_com_fail = 30 [default = false]; // 操作面板通讯失败报警 + optional bool secu_oillevel_check = 31 [default = false]; // 液压油位低请停机检查报警信号 + optional bool secu_oilstmjam_check = 32 [default = false]; // 液压油滤堵塞请停机检查报警信号 + optional bool secu_water_valve_close = 33 [default = false]; // 出水阀门关闭不能清洗作业报警信号 + optional bool secu_clean_water_tank_low = 34 [default = false]; // 清水箱水位低不能清洗作业报警信号 + optional bool secu_sewage_water_tank_full = 35 [default = false]; // 污水箱满请停止作业报警信号 + optional bool secu_coolwatertemp_high = 36 [default = false]; // 水温过高请停机检查报警信号 + optional bool secu_coolwater_less = 37 [default = false]; // 冷却液位低报警信号 + optional bool secu_tail_gate_open = 38 [default = false]; // 尾门打开接近开关 + optional bool secu_manual_intervention_sts = 39 [default = false]; // 提示是否有人为介入 + optional bool secu_ready_finish_sts = 40 [default = false]; // 上装ready完成 + optional float secu_sweepdisk_speed = 41 [default = 0]; // 扫盘转速 +} + message VehicleState { optional common.Header header = 1; optional chassis.PilotMode pilot_mode = 2 [default = MODE_MANUAL]; @@ -38,4 +83,19 @@ message VehicleState { optional bool chassis_status_missing = 29 [default = false]; //未收到车辆底盘反馈信息 optional bool brake_light_status = 30 [default = false]; //自驾模式下制动灯状态 optional bool pilot_mode_condition_met = 31 [default = false]; + + optional float steeringSpd = 32 [default = 0]; // steering angle speed in degrees/s + + optional float leftFrontWheelAngle = 33 [default = 0];//左前轮角度(deg),左负右正 + optional float rightFrontWheelAngle = 34 [default = 0]; //右前轮角度(deg),左负右正 + + optional chassis.EPBWorkStatus epb = 35 [default = EPBSTATUS_NONE]; // EPB工作状态 + + optional chassis.VehicleTakeOverStatus vehicletakeoverstatus = 36 [default = None_TakeOver]; // 车辆人工接管状态 + optional bool Emergency_Stop_Switch = 37 [default = false]; // 急停开关状态 + optional chassis.VehicleFaultLevel vehiclefaultlevel = 38 [default = None_Fault]; // 整车故障状态 + + reserved 39 to 199; + + optional SweeperFuTianCleanSystemState sweeper_futian_clean_system_state = 200; // 福田清扫车上装状态信息 } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index d32b42b539..1664c19ab9 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -49,6 +49,7 @@ import java.util.TimerTask; import java.util.concurrent.atomic.AtomicInteger; import chassis.SpecialVehicleTaskCmdOuterClass; +import common.HeaderOuterClass; import mogo.telematics.pad.MessagePad; import okio.ByteString; @@ -74,6 +75,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec private DispatchHandler dispatchHandler;//分发 private DispatchHandler dispatchHandlerPointCloud;//原始的点云数据分发 private Timer checkCompatibilityTimer;//检查版本兼容性定时器 连接成功后5秒内等待工控机发送配置信息 + private int seqSpecialVehicle = 0;//特种车辆命令发送次数 /** * 与工控机链接状态 */ @@ -407,6 +409,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec ipcConnectedIp = ipAddress; ipcConnectedPort = port; subscribeInterface = new SubscribeInterface(this); + seqSpecialVehicle = 0; updateConnectStatus(Constants.IPC_CONNECTION_STATUS.CONNECTED, "已连接"); //根据连接配置 进行接口订阅或取消订阅配置 if (adasOptions != null) { @@ -1047,11 +1050,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec */ @Override public boolean sendRoboSweeperFuTianTaskCmd(SpecialVehicleTaskCmdOuterClass.RoboSweeperFuTianTaskCmd fuTianTaskCmd) { - SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd cmd = SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd + SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd.Builder cmdBuild = SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd .newBuilder() - .setRoboSweeperFutianTaskCmd(fuTianTaskCmd) - .build(); - return sendSpecialVehicleTaskCmd(cmd); + .setRoboSweeperFutianTaskCmd(fuTianTaskCmd); + return sendSpecialVehicleTaskCmd(cmdBuild); } /** @@ -1062,22 +1064,36 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec */ @Override public boolean sendRoboVanSkywellTaskCmd(SpecialVehicleTaskCmdOuterClass.RoboVanSkywellTaskCmd vanSkywellTaskCmd) { - SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd cmd = SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd + SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd.Builder cmdBuild = SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd .newBuilder() - .setRoboVanSkywellTaskCmd(vanSkywellTaskCmd) - .build(); - return sendSpecialVehicleTaskCmd(cmd); + .setRoboVanSkywellTaskCmd(vanSkywellTaskCmd); + return sendSpecialVehicleTaskCmd(cmdBuild); } /** * 特种车辆命令下发 * - * @param cmd 命令 + * @param cmdBuild 命令 * @return boolean */ @Override - public boolean sendSpecialVehicleTaskCmd(SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd cmd) { - return sendPBMessage(MessageType.TYPE_SEND_SPECIAL_VEHICLE_TASK_CMD.typeCode, cmd.toByteArray()); + public boolean sendSpecialVehicleTaskCmd(SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd.Builder cmdBuild) { + long t = System.currentTimeMillis(); + int sec = (int) (t / 1000); + int nsec = (int) (t % 1000 * 1000000); + HeaderOuterClass.Time time = HeaderOuterClass.Time + .newBuilder() + .setSec(sec) + .setNsec(nsec) + .build(); + HeaderOuterClass.Header header = HeaderOuterClass.Header.newBuilder() + .setSeq(++seqSpecialVehicle) + .setStamp(time) + .setFrameId("special_vehicle_task_cmd") + .setModuleName("EagleEye") + .build(); + cmdBuild.setHeader(header); + return sendPBMessage(MessageType.TYPE_SEND_SPECIAL_VEHICLE_TASK_CMD.typeCode, cmdBuild.build().toByteArray()); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 3da971ec3a..7878fa089f 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -572,12 +572,12 @@ public class AdasManager implements IAdasNetCommApi { /** * 特种车辆命令下发 * - * @param cmd 命令 + * @param cmdBuild 命令 * @return boolean */ @Override - public boolean sendSpecialVehicleTaskCmd(SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd cmd) { - return mChannel != null && mChannel.sendSpecialVehicleTaskCmd(cmd); + public boolean sendSpecialVehicleTaskCmd(SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd.Builder cmdBuild) { + return mChannel != null && mChannel.sendSpecialVehicleTaskCmd(cmdBuild); } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index d34700d1ab..593231b7e5 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -295,10 +295,10 @@ public interface IAdasNetCommApi { /** * 特种车辆命令下发 * - * @param cmd 命令 + * @param cmdBuild 命令 * @return boolean */ - boolean sendSpecialVehicleTaskCmd(SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd cmd); + boolean sendSpecialVehicleTaskCmd(SpecialVehicleTaskCmdOuterClass.SpecialVehicleTaskCmd.Builder cmdBuild); // TODO 需求暂停 待讨论 // boolean getRoutes();