[change] 更新清扫车PB以及接口

This commit is contained in:
xinfengkun
2022-08-23 16:08:46 +08:00
parent 690521a043
commit 26ad09fce2
7 changed files with 161 additions and 22 deletions

View File

@@ -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";

View File

@@ -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;
}

View File

@@ -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; // 开沃小巴业务指令
}

View File

@@ -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; // 福田清扫车上装状态信息
}

View File

@@ -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());
}
}

View File

@@ -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);
}
/**

View File

@@ -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();