@startuml skinparam classAttributeIconSize 0 <<<<<<< HEAD title Laser_task 雷达模块的任务指令 ======= title binary_buf是二进制缓存 >>>>>>> origin/hl note left of Laser_task //laser_task_command,是雷达任务指令的相关功能 //功能:用作应用层向laser模块传输任务,的指令消息 //用法:应用层直接调用laser的接口函数,并将Laser_task类作为参数传递 //CLaser类则按照Laser_task的功能码和指定的参数,执行相应的功能 //并将结果填充到Laser_task,返回给应用层 end note class Laser_task { //雷达模块的任务指令,从Task_Base继承, //补充了雷达专属的数据输入和输出 ==public:== //构造函数,构造函数锁定任务类型为LASER_TASK,后续不允许更改 Laser_task(); //析构函数 ~Laser_task(); .. //初始化任务单,必须初始化之后才可以使用,(必选参数) // input:task_statu 任务状态 // output:p_task_point_cloud 三维点云容器的智能指针 // input:p_task_cloud_lock 三维点云的数据保护锁 //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT Error_manager task_init(Task_statu task_statu, pcl::PointCloud::Ptr p_task_point_cloud, std::mutex* p_task_cloud_lock); .. //初始化任务单,必须初始化之后才可以使用,(可选参数) // input:task_statu任务状态 // input:task_statu_information状态说明 // input:task_frame_maxnum点云的采集帧数最大值 // output:p_task_point_cloud 三维点云容器的智能指针 // input:p_task_cloud_lock 三维点云的数据保护锁 //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT Error_manager task_init(Task_statu task_statu, std::string & task_statu_information, unsigned int task_frame_maxnum, pcl::PointCloud::Ptr p_task_point_cloud, std::mutex* p_task_cloud_lock); .. //push点云,把 point_xyz 添加到 p_task_point_cloud 里面。 Error_manager task_push_point(pcl::PointXYZ point_xyz); ==public:== //获取 点云的采集帧数最大值 unsigned int get_task_frame_maxnum(); //获取采集的点云保存路径 std::string get_task_save_path(); //获取 三维点云容器的智能指针 pcl::PointCloud::Ptr get_task_point_cloud(); .. //设置 任务状态 void set_task_statu(Task_statu task_statu); //设置 任务状态说明 void set_task_statu_information(std::string & task_statu_information); //设置 点云的采集帧数最大值 void set_task_frame_maxnum(unsigned int task_frame_maxnum); //设置采集的点云保存路径 void set_task_save_path(std::string task_save_path); //设置 三维点云容器的智能指针 void set_task_point_cloud(pcl::PointCloud::Ptr p_task_point_cloud); //设置 错误码 void set_task_error_manager(Error_manager & error_manager); ==protected:== //点云的采集帧数最大值,任务输入 unsigned int m_task_frame_maxnum; //点云保存文件的路径,任务输入 std::string m_task_save_path; //三维点云的数据保护锁,任务输入 std::mutex* mp_task_cloud_lock; //采集结果,三维点云容器的智能指针,任务输出 //这里只是指针,实际内存由应用层管理,初始化时必须保证内存有效。 pcl::PointCloud::Ptr mp_task_point_cloud; } class Task_Base { //任务单基类 ==public:== //初始化任务单,初始任务单类型为 UNKONW_TASK virtual Error_manager init(); .. //更新任务单 Error_manager update_statu(Task_statu task_statu,std::string statu_information=""); .. //获取任务类型 Task_type get_task_type(); .. //获取任务单状态 Task_statu get_statu(); .. //获取状态说明 std::string get_statu_information(); ==protected:== Task_type m_task_type; //任务类型 Task_statu m_task_statu; //任务状态 std::string m_task_statu_information; //任务状态说明 Error_manager m_task_error_manager;//错误码,任务故障信息,任务输出 } Laser_task <-- Task_Base : inherit @enduml