#include #include #include #include #include #include #include #include #include typedef message_filters::sync_policies::ApproximateTime ApproxSyncPolicy; typedef pcl::PointXYZI PointT; class hdl_backend { private: ros::NodeHandle nh; // ros 的节点句柄 ros::Publisher map_points_pub; // 话题通常包含了所有之前扫描过的点云,随着机器人在环境中移动,新的点云数据会被不断添加到这个地图中,从而提供一个逐步完善的环境表示 // std::string published_odom_topic; std::string map_frame_id; // std::string odom_frame_id; std::string map_cloud_resolution; // 地图分辨率 Eigen::Matrix4f trans_odom2map; // 表示从 里程计坐标系(odom frame)到地图坐标系(map frame)的变换矩阵 这个变换矩阵是跟机械臂变换矩阵类似的 齐次变换矩阵 int max_keyframes_per_update; // 限制每次更新中可以处理的最大关键帧数量 std::string points_topic; // 点云数据的ROS话题名称,SLAM系统将订阅这个话题来获取点云数据 std::unique_ptr> odom_sub; std::unique_ptr> cloud_sub; std::unique_ptr> sync; void cloud_callback(const nav_msgs::OdometryConstPtr& odom_msg, const sensor_msgs::PointCloud2::ConstPtr& cloud_msg){}; public: hdl_backend(){}; // 构造函数 ~hdl_backend(){}; // 析构函数 void init(); // 初始化函数 std::string base_frame_id; };