123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- //laser_task_command,是雷达任务指令的相关功能
- //功能:用作应用层向laser模块传输任务,的指令消息
- //用法:应用层直接调用laser的接口函数,并将Laser_task类作为参数传递
- //CLaser类则按照Laser_task的功能码和指定的参数,执行相应的功能
- //并将结果填充到Laser_task,返回给应用层
- #ifndef __LASER_TASK_COMMAND__HH__
- #define __LASER_TASK_COMMAND__HH__
- #include "Point2D.h"
- #include "Point3D.h"
- #include <pcl/point_types.h>
- #include <pcl/common/common.h>
- #include "../error_code/error_code.h"
- #include <vector>
- #include <mutex>
- #include "../task/task_command_manager.h"
- //任务点云的采集帧数最大值,默认值1000
- #define TASK_FRAME_MAXNUM_DEFAULT 1000
- //雷达模块的任务指令,从Task_Base继承,
- //补充了雷达专属的数据输入和输出
- class Laser_task:public 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<pcl::PointXYZ>::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<pcl::PointXYZ>::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();
- //获取采集的点云保存文件的使能标志位
- bool get_task_save_flag();
- //获取采集的点云保存路径
- std::string get_task_save_path();
- //获取 三维点云容器的智能指针
- std::mutex* get_task_cloud_lock();
- //获取 三维点云容器的智能指针
- pcl::PointCloud<pcl::PointXYZ>::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<pcl::PointXYZ>::Ptr p_task_point_cloud);
- //设置 错误码
- void set_task_error_manager(Error_manager & error_manager);
- protected:
- //点云的采集帧数最大值,任务输入
- unsigned int m_task_frame_maxnum;
- //雷达保存文件的使能标志位,//默认不保存,false
- bool m_task_save_flag;
- //点云保存文件的路径,任务输入
- std::string m_task_save_path;
- //三维点云的数据保护锁,任务输入
- std::mutex* mp_task_cloud_lock;
- //采集结果,三维点云容器的智能指针,任务输出
- //这里只是智能指针,实际内存由任务发送方管理管理,初始化时必须保证内存有效。
- pcl::PointCloud<pcl::PointXYZ>::Ptr mp_task_point_cloud;
- };
- #endif //__LASER_TASK_COMMAND__HH__
|