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;
    }
    
  • 相关阅读:
    对象
    语句
    表达式和运算符
    类型、值和变量
    词法结构
    javac命令详解(下)
    javac命令详解(上)
    jar 查找多jar包中类的办法
    find -exec
    java编译相关问题总结
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/9961112.html
Copyright © 2011-2022 走看看