zoukankan      html  css  js  c++  java
  • ROS 可视化(一): 发布PointCloud2点云数据到Rviz

    1. 相关依赖
    package.xml 需要添加对 pcl_ros 包的依赖

    2. CMakeLists.txt

    find_package(PCL REQUIRED)
    include_directories(include${PCL_INCLUDE_DIRS})
    link_directories(${PCL_LIBRARY_DIRS})
    add_executable(pcl_create src/pcl_create.cpp)
    target_link_libraries(pcl_create ${catkin_LIBRARIES} ${PCL_LIBRARIES}) 
    

     2. 测试代码

    #include <ros/ros.h>
    #include <pcl/point_cloud.h>
    #include <pcl_conversions/pcl_conversions.h>
    #include <sensor_msgs/PointCloud2.h>
    
    main (int argc, char **argv)
    {
        ros::init (argc, argv, "pcl_create");
    
        ros::NodeHandle nh;
        ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1);
        pcl::PointCloud<pcl::PointXYZ> cloud;
        sensor_msgs::PointCloud2 output;
    
        // Fill in the cloud data
        cloud.width  = 100;
        cloud.height = 1;
        cloud.points.resize(cloud.width * cloud.height);
    
        for (size_t i = 0; i < cloud.points.size (); ++i)
        {
            cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
            cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
            cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
        }
    
        //Convert the cloud to ROS message
        pcl::toROSMsg(cloud, output);
        output.header.frame_id = "odom";
    
        ros::Rate loop_rate(1);
        while (ros::ok())
        {
            pcl_pub.publish(output);
            ros::spinOnce();
            loop_rate.sleep();
        }
    
        return 0;
    }
    
  • 相关阅读:
    基于ADO的远程Oracle连接
    oracle中的定时任务
    关于C++ const 变量
    堆排序和选择排序
    插入排序
    多线程的两种启动方式
    多尺度变换去噪的阈值选择
    jstree
    JS中call、apply、bind使用指南,带部分原理。
    六. JavaScript时间日期格式化
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/9961112.html
Copyright © 2011-2022 走看看