• ROS 机器人技术


    在图像和点云的融合节点中,做了一个点云格式的转换:

    • ROS 点云 sensor_msgs::PointCloud2 -> PCL 第一代点云 pcl::PointCloudpcl::PointXYZ

    这里记录下常用的 ROS 和 PCL 之间的转换。

    1. sensor_msgs::PCLPointCloud2 <=> pcl::PointCloudpcl::PointXYZ

    把 ROS PointCloud2 转为 PCL 第一代 PointCloud,方便用 PCL 库处理:

    void pcl::fromROSMsg(const sensor_msgs::PointCloud2 &, pcl::PointCloud<T> &);
    

    比如:

    // ROS 点云
    sensor_msgs::PointCloud2::ConstPtr& cloud_msg;
    
    // PCL 第一代点云
    pcl::PointCloud<pcl::PointXYZ>::Ptr pcl_cloud_msg(new pcl::PointCloud<pcl::PointXYZ>);
    
    // ROS 点云 -> PCL 第一代点云
    pcl::fromROSMsg(*cloud_msg, *pcl_cloud_msg);
    

    把 PCL 第一代 PointCloud 转为 ROS PointCloud2,用于发布 ROS 的点云主题:

    void pcl::toROSMsg(const pcl::PointCloud<T> &, sensor_msgs::PointCloud2 &);
    

    比如:

    // PCL 第一代点云
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr out_cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
    
    // ROS 点云
    sensor_msgs::PointCloud2 fusion_cloud;
    
    // PCL 第一代点云 -> ROS 点云
    pcl::toROSMsg(*out_cloud, fusion_cloud);
    

    2. sensor_msgs::PCLPointCloud2 <=> pcl::PCLPointCloud2

    所用的头文件:

    #include <pcl_conversions/pcl_conversions.h>
    

    把 ROS PointCloud2 转为 PCL 第二代 PointCloud2:

    void pcl_conversions::toPCL(const sensor_msgs::PointCloud2 &, pcl::PCLPointCloud2 &)
    

    比如:

    // ROS 点云 -> 第二代 PCL 点云
    // cloud_msg 和 pcl_cloud2 这里都定义为指针
    pcl_conversions::toPCL(*cloud_msg, *pcl_cloud2);
    

    把 PCL 第二代 PointCloud2 转为 ROS PointCloud2:

    void pcl_conversions::moveFromPCL(const pcl::PCLPointCloud2 &, const sensor_msgs::PointCloud2 &);
    

    比如:

    pcl::PCLPointCloud2 pcl2_cloud_filtered;
    sensor_msgs::PointCloud2 ros_cloud_filter;
    
    // 第二代 PCL 点云 -> ROS 点云
    pcl_conversions::fromPCL(pcl2_cloud_filtered, ros_cloud_filter);
    

    参考链接:

  • 相关阅读:
    计算机编程语言有哪些?
    JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串
    原生js弹力球
    js中的位置属性
    javascript中常见的表单验证项
    深入理解系统调用
    计一次后怕的排错经历
    Oracle 11G ASM新加磁盘无法init disk
    Oracle需要清理的日志
    openstack-neutron
  • 原文地址:https://www.cnblogs.com/dlonng/p/13394127.html
Copyright © 2020-2023  润新知