// // Created by huli on 2020/9/8. // #ifndef NNXX_TESTS_COMMON_DATA_H #define NNXX_TESTS_COMMON_DATA_H #include #include "../message/message_base.pb.h" class Common_data { public: //万集雷达扫描周期66ms, (频率15hz), 一般设置大一些 #define WANJI_716_SCAN_CYCLE_MS 70 //车位表 #define PARKSPACE_ID_BASE 0 #define PASSAGEWAY_ID_BASE 1100 //唯一码的默认长度 32byte #define COMMAND_KEY_DEFAULT_LENGTH 32 //整车的测量信息 struct Car_measure_information { float center_x = 0; //整车的中心点x值, 四轮的中心 float center_y = 0; //整车的中心点y值, 四轮的中心 float car_angle = 0; //整车的车身旋转角, float car_length = 0; //整车的长度, 用于规避碰撞 float car_width = 0; //整车的宽度, 用于规避碰撞 float car_height = 0; //整车的高度, 用于规避碰撞 float car_wheel_base = 0; //整车的轮距, 前后轮的距离, 用于机器人或agv的抓车 float car_wheel_width = 0; //整车的轮距, 左右轮的距离, 用于机器人或agv的抓车 float car_front_theta = 0; //整车的前轮的旋转角 bool correctness = false; //整车的校准标记位 }; //四轮的测量信息 struct Car_wheel_information { float center_x = 0; //整车的中心点x值, 四轮的中心 float center_y = 0; //整车的中心点y值, 四轮的中心 float car_angle = 0; //整车的车身旋转角, float car_wheel_base = 0; //整车的轮距, 前后轮的距离, 用于机器人或agv的抓车 float car_wheel_width = 0; //整车的轮距, 左右轮的距离, 用于机器人或agv的抓车 float car_front_theta = 0; //整车的前轮的旋转角 bool correctness = false; //整车的校准标记位 }; struct Car_information { std::string license; //车辆凭证号 float car_length=0; //车长 float car_width=0; //车宽 float car_height=0; //车高 float car_wheel_base = 0; //整车的轮距; 前后轮的距离; 用于机器人或agv的抓车 float car_wheel_width = 0; //整车的轮距; 左右轮的距离; 用于机器人或agv的抓车 }; //车位状态枚举 enum Parkspace_status { PARKSPACE_STATUS_UNKNOW = 0, PARKSPACE_EMPTY = 1, //空闲,可分配 PARKSPACE_OCCUPIED = 2, //被占用,不可分配 PARKSPACE_RESERVED = 3, //被预约,预约车辆可分配, 暂时不用 PARKSPACE_LOCKED = 4, //临时锁定,不可分配 PARKSPACE_ERROR = 5, //车位机械结构或硬件故障 }; enum Direction { DIRECTION_UNKNOW = 0, DIRECTION_FORWARD = 1, DIRECTION_BACKWARD = 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,//大车位 }; //单个车位基本信息与状态信息,车位信息以及车位上的车辆信息 struct Parkspace_information { int parkingspace_index_id=0; //车位编号 Parkspace_type parkingspace_type=UNKNOW_PARKSPACE_TYPE; //车位类型 int parkingspace_unit_id=0; //区块编号 int parkingspace_floor_id=0; //楼层 int parkingspace_room_id=0; //同层编号 Direction parkingspace_direction=DIRECTION_UNKNOW; //前后 float parkingspace_width=0; //车位宽 float parkingspace_height=0; //车位高 Parkspace_status parkingspace_status=PARKSPACE_EMPTY; //车位当前状态 Car_information car_information; //当前车位存入车辆的凭证号 std::string car_entry_time; //入场时间 std::string car_leave_time; //离场时间 Parkspace_path parkspace_path = UNKNOW_PATH; // 车位分配路线 float path_estimate_time = 0; //车位分配路线 time(s) Parkspace_status parkspace_status_target=PARKSPACE_EMPTY; //车位目标状态 }; static void copy_data(Car_measure_information& car_measure_information_out, const message::Locate_information& locate_information_in); static void copy_data(message::Locate_information& locate_information_out, const Car_measure_information& car_measure_information_in); static void copy_data(Car_information& car_information_out, const message::Car_info& car_info_in); static void copy_data(message::Car_info& car_info_out, const Car_information& car_information_in); static void copy_data(Parkspace_information& parkspace_information_out, const message::Parkspace_info& parkspace_info_in); static void copy_data(message::Parkspace_info& parkspace_info_out, const Parkspace_information& parkspace_information_in); static void transform_data(Car_information& car_information_out, const Car_measure_information& car_measure_information_in); static void transform_data(Car_measure_information& car_measure_information_out, const Car_information& car_informatio_in); static void transform_data(Car_wheel_information& car_wheel_information_out, const Car_measure_information& car_measure_information_in); static void transform_data(Car_measure_information& car_measure_information_out, const Car_wheel_information& car_wheel_information_in); static void scaling(Car_measure_information& car_measure_information, float rate); static void scaling(Car_information& car_information, float rate); static void scaling(Parkspace_information& parkspace_information, float rate); static bool approximate_rate(float a, float b, float rate); static bool approximate_difference(float a, float b, float difference); }; #endif //NNXX_TESTS_COMMON_DATA_H