syntax = "proto2"; package message; //消息类型定义;每个在网络上传输的消息必须含有这个属性 enum Message_type { eBase_msg=0x00; eCommand_msg=0x01; //指令消息 eLocate_status_msg=0x11; //定位模块状态消息 eLocate_request_msg=0x12; //定位请求消息 eLocate_response_msg=0x13; //定位反馈消息 eLocate_sift_request_msg = 0x14; //预测算法请求消息 eLocate_sift_response_msg = 0x15; //预测算法反馈消息 eDispatch_status_msg=0x21; //调度模块硬件状态消息 eDispatch_request_msg=0x22; //请求调度消息 eDispatch_response_msg=0x23; //调度结果反馈消息 eParkspace_allocation_status_msg=0x31; //车位分配模块状态消息,包括车位信息 eParkspace_allocation_request_msg=0x32; //请求分配车位消息 eParkspace_allocation_response_msg=0x33;//分配车位结果反馈消息 eParkspace_search_request_msg = 0x34; //查询车位请求消息 eParkspace_search_response_msg = 0x35; //查询车位反馈消息 eParkspace_release_request_msg = 0x36; //释放车位请求消息 eParkspace_release_response_msg = 0x37; //释放车位反馈消息 eParkspace_force_update_request_msg = 0x38; //手动修改车位消息 eParkspace_force_update_response_msg = 0x39;//手动修改车位反馈消息 eParkspace_confirm_alloc_request_msg = 0x3A;//确认分配车位请求消息 eParkspace_confirm_alloc_response_msg = 0x3B;//确认分配车位反馈消息 eParkspace_allocation_data_msg = 0x3C; //车位分配模块车位数据消息 eParkspace_allocation_data_response_msg =0x3D;//车位数据反馈消息 eParkspace_manual_search_request_msg = 0x3E; //手动查询车位请求消息 eParkspace_manual_search_response_msg = 0x3F;//手动查询车位反馈消息 eStore_command_request_msg=0x41; //终端停车请求消息 eStore_command_response_msg=0x42; //停车请求反馈消息 ePickup_command_request_msg=0x43; //取车请求消息 ePickup_command_response_msg=0x44; //取车请求反馈消息 eTerminal_status_msg = 0x50; //终端状态消息 eStoring_process_statu_msg=0x90; //停车指令进度条消息 ePicking_process_statu_msg=0x91; //取车指令进度消息 eCentral_controller_statu_msg=0xa0; //中控系统状态消息 eEntrance_manual_operation_msg=0xb0; //针对出入口状态操作的手动消息 eProcess_manual_operation_msg=0xb1; //针对流程的手动消息 eNotify_request_msg=0xc0; //取车等候区通知请求 eNotify_response_msg=0xc1; //等候区反馈 eNotify_status_msg=0xc2; //等候区通知节点状态 eUnNormalized_module_statu_msg = 0xd0; //非标节点状态 eDispatch_plan_request_msg = 0xe0; //调度总规划的请求(用于启动整个调度算法)(调度管理->调度算法) eDispatch_plan_response_msg = 0xe1; //调度总规划的答复(调度算法->调度管理) eDispatch_control_request_msg = 0xe2; //调度控制的任务请求(调度算法->调度管理) eDispatch_control_response_msg = 0xe3; //调度控制的任务答复(调度管理->调度算法) eDispatch_manager_status_msg = 0xea; //调度管理的设备状态消息(调度底下所有硬件设备状态的汇总) eDispatch_manager_data_msg = 0xeb; //调度管理的设备详细的数据信息 eGround_detect_request_msg=0xf0; //地面雷达测量请求消息 eGround_detect_response_msg=0xf1; //地面雷达测量反馈消息 eGround_status_msg=0xf2; //地面雷达状态消息 } //通讯单元 enum Communicator { eEmpty=0x0000; eMain=0x0001; //主流程 eTerminor=0x0100; //车位表 eParkspace=0x0200; //测量单元 eMeasurer=0x0300; //测量单元的服务器 eMeasurer_sift_server=0x0301; //调度机构 eDispatch_manager=0x0400; //调度机构 eDispatch_control=0x0401; //... //取车等候区通知节点 eNotify=0x0501; //地面测量单元 eGround_measurer=0x0f00; } ////base message 用于解析未知类型的消息 message Base_info { required Message_type msg_type=1[default = eBase_msg]; optional int32 timeout_ms=2[default = 0]; required Communicator sender=3[default = eEmpty]; //发送者 required Communicator receiver=4[default = eEmpty]; //接收者 } // 事件,停车或者取车 enum Process_type { eStoring=1; ePicking=2; } message Base_msg { required Base_info base_info=1; } //错误等级,用来做故障处理 enum Error_level { NORMAL = 0; // 正常,没有错误,默认值0 NEGLIGIBLE_ERROR = 1; // 轻微故障;可忽略的故障,NEGLIGIBLE_ERROR MINOR_ERROR = 2; // 一般故障,MINOR_ERROR MAJOR_ERROR = 3; // 严重故障,MAJOR_ERROR CRITICAL_ERROR = 4; // 致命故障,CRITICAL_ERROR } message Error_manager { required int32 error_code = 1[default = 0]; optional Error_level error_level = 2[default = NORMAL]; optional string error_description = 3[default = ""]; } //测量结果结构体 message Locate_information { optional float locate_x = 1[default = 0]; //整车的中心点x值; 四轮的中心 optional float locate_y = 2[default = 0]; //整车的中心点y值; 四轮的中心 optional float locate_angle = 3[default = 0]; //整车的旋转角; 四轮的旋转角 optional float locate_length = 4[default = 0]; //整车的长度; 用于规避碰撞 optional float locate_width = 5[default = 0]; //整车的宽度; 用于规避碰撞 optional float locate_height = 6[default = 0]; //整车的高度; 用于规避碰撞 optional float locate_wheel_base = 7[default = 0]; //整车的轮距; 前后轮的距离; 用于机器人或agv的抓车 optional float locate_wheel_width = 8[default = 0]; //整车的轮距; 左右轮的距离; 用于机器人或agv的抓车 optional bool locate_correct = 9[default = false]; //整车的校准标记位 optional float locate_front_theta = 10[default = 0]; //整车的前轮的旋转角 optional float uniformed_car_x = 11; //转角复位后,车辆中心点x optional float uniformed_car_y = 12; //转角复位后,车辆中心点y } //车辆基本信息 message Car_info { optional float car_length=1[default = 0]; //车长 optional float car_width=2[default = 0]; //车宽 optional float car_height=3[default = 0]; //车高 optional string license=4[default = ""]; //车辆凭证号(车牌号+唯一码) optional string car_numberPlate = 5[default = ""]; //车牌号 optional float car_wheel_base = 6[default = 0]; //整车的轮距; 前后轮的距离; 用于机器人或agv的抓车 optional float car_wheel_width = 7[default = 0]; //整车的轮距; 左右轮的距离; 用于机器人或agv的抓车 } //车位状态枚举 enum Parkspace_status { eParkspace_status_unknow = 0; eParkspace_empty = 1; //空闲,可分配 eParkspace_occupied = 2; //被占用,不可分配 eParkspace_reserved = 3; //被预约,预约车辆可分配 eParkspace_locked = 4; //临时锁定,不可分配 eParkspace_error = 5; //车位机械结构或硬件故障 } //车位朝向, 0:未知, 1:小号朝前朝南, 也指入口, 2:大号朝后朝北, 也指出口, enum Direction { eDirection_unknow = 0; eForward = 1; //小号朝前朝南, 也指入口 eBackward = 2; //大号朝后朝北, 也指出口 } //车位分配路线(根据中跑车的路线来定) enum Parkspace_path { UNKNOW_PATH = 0; OPTIMAL_PATH = 1; LEFT_PATH = 2; RIGHT_PATH = 3; TEMPORARY_CACHE_PATH = 4; } //车位类型 enum Parkspace_type { UNKNOW_PARKSPACE_TYPE = 0; MIN_PARKINGSPACE = 1;//小车位 MID_PARKINGSPACE = 2;//中车位 BIG_PARKINGSPACE = 3;//大车位 } //汽车类型 enum Car_type { UNKNOW_CAR_TYPE = 0; MIN_CAR = 1;//小车 MID_CAR = 2;//中车 BIG_CAR = 3;//大车 } //单个车位基本信息与状态信息,车位信息以及车位上的车辆信息 message Parkspace_info { optional int32 parkingspace_index_id = 1; //车位ID optional Parkspace_type parkingspace_type = 2; //车位类型 optional int32 parkingspace_unit_id = 3; //车位单元号 optional int32 parkingspace_label_id = 4; //车位单元内部ID optional int32 parkingspace_room_id = 5; //同层编号 optional Direction parkingspace_direction = 6; //前后 optional int32 parkingspace_floor_id = 7; //楼层 optional float parkingspace_width = 8; //车位宽 optional float parkingspace_height = 9; //车位高 optional Parkspace_status parkingspace_status = 10; //车位当前状态 optional Car_info car_info = 11; //车辆信息 optional string entry_time = 12; //入场时间 optional string leave_time = 13; //离场时间 optional Parkspace_path parkspace_path = 14; // 车位分配路线 optional float path_estimate_time = 15; //车位分配路线 time(s) optional Parkspace_status parkspace_status_target = 16; //车位目标状态 optional Car_type car_type = 17; //车辆类型 } /* *流程中的步骤类型, 例如:停车流程包含5个步骤 , 分配车位-测量-检验结果-搬运-更新车位表 */ enum Step_type { eAlloc_step=0; eMeasure_step=1; eCompare_step=2; eDispatch_step=3; eConfirm_step=4; eSearch_step=5; //查询数据库 eWait_step=6; //等待车辆离开 eRelease_step=7; //释放车位 eComplete=8; //完成 eBackConfirm_step=9; eBack_compare_step=10; eBackMeasure_step=11; eBackAlloc_step=12; eBackWait_step=13; eBackDispatch_step=14; eBackSearch_step=15; eBackComplete=16; } //步骤状态,每个步骤有四中可能状态 ,等待中-执行中-完成或者错误 四个状态 enum Step_statu { eWaiting=0; //完成/空闲 eWorking=1; eError=2; eFinished=3; } //调度设备的类型 enum Dispatch_device_type { ROBOT_1 = 101; //一号出口的专用机器手(只能负责1号出口的取车)(目前没有安装,暂时不考虑) ROBOT_2 = 102; //中间的大型机器手 (可以负责1~6号出入口的停车和取车) CARRIER_1 = 200; //左侧0号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器) CARRIER_2 = 207; //右侧7号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器) CARRIER_3 = 203; //中间3楼的搬运器(中跑车 小跑车 二合一为搬运器)(没有电梯, 只能在3楼活动) PASSAGEWAY_0 = 300; //0号出口(在左侧电梯井, 只能取车)(暂时不存在) PASSAGEWAY_1 = 301; //1号出入口 PASSAGEWAY_2 = 302; //2号出入口 PASSAGEWAY_3 = 303; //3号出入口 PASSAGEWAY_4 = 304; //4号出入口 PASSAGEWAY_5 = 305; //5号出入口 PASSAGEWAY_6 = 306; //6号出入口 PASSAGEWAY_7 = 307; //7号出口(在右侧电梯井, 只能取车) } //id结构体 message Id_struct { optional int32 terminal_id = 1; //终端ID optional int32 unit_id = 2; //单元号 }