12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include <ros/ros.h>
- #include <string>
- #include <Eigen/Dense>
- #include <memory>
- #include <message_filters/subscriber.h>
- #include <nav_msgs/Odometry.h>
- #include <sensor_msgs/PointCloud2.h>
- #include <message_filters/sync_policies/approximate_time.h>
- #include <message_filters/synchronizer.h>
- typedef message_filters::sync_policies::ApproximateTime<nav_msgs::Odometry, sensor_msgs::PointCloud2> 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<message_filters::Subscriber<nav_msgs::Odometry>> odom_sub;
- std::unique_ptr<message_filters::Subscriber<sensor_msgs::PointCloud2>> cloud_sub;
- std::unique_ptr<message_filters::Synchronizer<ApproxSyncPolicy>> 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;
- };
|