• 解析sensor_msgs::PointCloud2 ROS点云数据


    1.一个仿真的点云数据
    header: 
      seq: 2116
      stamp: 
        secs: 1586919439
        nsecs: 448866652
      frame_id: "LidarSensor1"
    height: 1
     3
    fields: 
      - 
        name: "x"
        offset: 0
        datatype: 7
        count: 1
      - 
        name: "y"
        offset: 4
        datatype: 7
        count: 1
      - 
        name: "z"
        offset: 8
        datatype: 7
        count: 1
    is_bigendian: False
    point_step: 12
    row_step: 36
    data: [143, 194, 117, 53, 10, 215, 163, 53, 222, 238, 165, 64, 143, 194, 117, 53, 10, 215, 163, 53, 222, 238, 165, 64, 143, 194, 117, 53, 10, 215, 163, 53, 222, 238, 165, 64]
    is_dense: True
    

    PointCloud2的data是序列化后的数据,直接看不到物理意义,可以转到PointCloud处理

    #include <sensor_msgs/PointCloud2.h>
    #include <sensor_msgs/PointCloud.h>
    #include <sensor_msgs/point_cloud_conversion.h>
    
    sensor_msgs::PointCloud clouddata;
    sensor_msgs::convertPointCloud2ToPointCloud(msg, clouddata);
    sensor_msgs::PointCloud cloud;
    cloud.header.stamp = ros::Time::now();
    cloud.header.frame_id = "PERCEPTION2020"; //帧id
    cloud.points.resize(clouddata.points.size());
    cloud.channels.resize(1);             //设置增加通道数
    cloud.channels[0].name = "intensity"; //增加反射强度信道,并设置其大小,使与点云数量相匹配
    cloud.channels[0].values.resize(clouddata.points.size());
    
    for (int i = 0; i < clouddata.points.size(); i++)
    {
        cloud.points[i].x = clouddata.points[i].x;
        cloud.points[i].y = clouddata.points[i].y;
        cloud.points[i].z = clouddata.points[i].z;
        cloud.channels[0].values[i] = clouddata.channels[0].values[i];    //设置反射强度
    }
    pub->publish(cloud);
    

    也可以直接用pcl转

    pcl::PointCloud<pcl::PointXYZ> cloud;
    pcl::fromROSMsg(msg, cloud);
    
  • 相关阅读:
    区间覆盖(线段树)
    差分约束
    二维数组
    P1195 口袋的天空
    dp的刷表法和填表法
    P1284 三角形牧场
    数据库课程设计
    具体解释VB中连接access数据库的几种方法
    android之PackageManager简单介绍
    Oracle fga审计有这几个特性
  • 原文地址:https://www.cnblogs.com/penuel/p/16396655.html
Copyright © 2020-2023  润新知