123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // Created by huli on 2021/3/2.
- //
- #ifndef NNXX_TESTS_CATCHER_BASE_H
- #define NNXX_TESTS_CATCHER_BASE_H
- #include "../dispatch/catcher_task.h"
- #include "../dispatch/dispatch_device_base.h"
- //机器人的基类, 普爱项目就是机器手(长度单位mm)
- class Catcher:public Dispatch_device_base
- {
- public:
- Catcher();
- Catcher(const Catcher& other)= default;
- Catcher& operator =(const Catcher& other)= default;
- ~Catcher();
- public://API functions
- //检查任务类型, 子类必须重载, 用来检查输入的任务是否为子类所需的.
- Error_manager check_task_type(std::shared_ptr<Task_Base> p_task);
- public://get or set member variable
- //获取硬件设备的状态, 必须子类继承
- Hardware_device_status get_actual_device_status();
- protected://member functions
- //把任务单写入到内存中, 子类必须重载
- Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);
- //更新设备底层通信数据, 子类必须重载
- Error_manager update_device_communication();
- //从内存中读数据到任务单, 子类必须重载
- Error_manager check_and_read_memory_to_task(std::shared_ptr<Task_Base> p_task);
- //取消下发的指令, 子类必须重载, 用来向下发送命令取消任务.
- Error_manager cancel_command();
- //更新真实 空间位置的id.
- Error_manager update_actual_coordinates_id();
- protected://member variable
- public:
- //调度下发到plc
- std::string m_request_key; //请求唯一码, 用作识别
- //请求的目标坐标和动作
- float m_request_x; //机器人坐标x轴,
- float m_request_y; //机器人坐标y轴,
- float m_request_b; //机器人坐标b轴, 旋转范围80~280
- float m_request_z; //机器人坐标z轴,
- Clamp_motion m_request_clamp_motion; //机器人夹车杆. 0=无动作,1=夹紧,2=松开
- float m_request_wheelbase; //机器人抓车杆前后轮距.
- float m_request_d1; //机器人坐标d1轴, 机器人抓车杆纵向移动(前轮抓杆)
- float m_request_d2; //机器人坐标d2轴, 机器人抓车杆纵向移动(后轮抓杆)
- int m_request_space_id; //机器人空间位置的id.
- //plc反馈给调度
- std::string m_respons_key; //应答的唯一码, 用作识别
- Respons_status m_respons_status; //指令完成状态, 机器人答复指令, 返回任务完成的情况
- //答复的实际坐标和动作
- float m_respons_x; //机器人坐标x轴,
- float m_respons_y; //机器人坐标y轴,
- float m_respons_b; //机器人坐标b轴, 旋转范围80~280
- float m_respons_z; //机器人坐标z轴,
- Clamp_motion m_respons_clamp_motion; //机器人夹车杆. 0=无动作,1=夹紧,2=松开
- float m_respons_wheelbase; //机器人抓车杆前后轮距.
- float m_respons_d1; //机器人坐标d1轴, 机器人抓车杆纵向移动(前轮抓杆)
- float m_respons_d2; //机器人坐标d2轴, 机器人抓车杆纵向移动(后轮抓杆)
- int m_respons_space_id; //机器人空间位置的id.
- //硬件状态, 目前只做显示判断
- std::chrono::system_clock::time_point m_status_updata_time; //状态更新时间点
- unsigned char m_last_heartbeat; //上一次的心跳
- //机器人的设备状态数据,
- Hardware_device_status m_actual_device_status; //机器人的硬件设备状态
- Load_status m_actual_load_status; //机器人的负载状态, 机器人上面是否有车.
- //机器人的真实状态, 可能是路径中间的坐标
- float m_actual_x; //机器人坐标x轴,
- float m_actual_y; //机器人坐标y轴,
- float m_actual_b; //机器人坐标b轴, 旋转范围80~280
- float m_actual_z; //机器人坐标z轴,
- float m_actual_d1; //机器人坐标d1轴, 机器人抓车杆纵向移动(前轮抓杆)
- float m_actual_d2; //机器人坐标d2轴, 机器人抓车杆纵向移动(后轮抓杆)
- Clamp_motion m_actual_clamp_motion1; //机器人夹车杆. 0=无动作,1=夹紧,2=松开
- Clamp_motion m_actual_clamp_motion2; //机器人夹车杆. 0=无动作,1=夹紧,2=松开
- Clamp_motion m_actual_clamp_motion3; //机器人夹车杆. 0=无动作,1=夹紧,2=松开
- Clamp_motion m_actual_clamp_motion4; //机器人夹车杆. 0=无动作,1=夹紧,2=松开
- //机器人设备的错误码
- unsigned char m_actual_error_code[50]; //机器人设备的故障信息位
- unsigned char m_actual_warning_code[50]; //机器人设备的警告信息位
- std::string m_actual_error_description;//机器人设备的错误描述
- Catcher_direction m_catcher_direction; //机器手的朝向, true:90度 false:270度
- int m_actual_coordinates_id; //机器人真实 空间位置的id.
- private:
- };
- #endif //NNXX_TESTS_CATCHER_BASE_H
|