ROS中加载PLY文件并rviz显示

2023-05-16

1、上代码(关键部分):

#include <ros/ros.h>
#include <pcl/point_cloud.h>
#include <pcl_conversions/pcl_conversions.h>
#include <sensor_msgs/PointCloud2.h>
#include <pcl/io/ply_io.h>
#include "parameters.h"


using namespace std;
using namespace cv;
 
// ros::Publisher pub_ply_map;

int main (int argc, char **argv)
{
    ros::init (argc, argv, "pcl_example");
    ros::NodeHandle nh("~");
    readParameters(nh);
    ros::Publisher pub_ply_map;
    pcl::PointCloud<pcl::PointXYZRGBA> cloud;
    //pcl::PointCloud<pcl::PointXYZ> cloud;
    // std::cout << "address :" << addressfile << std::endl;
    ROS_INFO_STREAM ("address " << addressfile);
    if (pcl::io::loadPLYFile<pcl::PointXYZRGBA>(addressfile, cloud) == -1)
	{
		PCL_ERROR("Couldn't read file1 \n");
		return (-1);
	}

    sensor_msgs::PointCloud2 output;
    //Convert the cloud to ROS message
    pcl::toROSMsg(cloud, output);
    output.header.frame_id = "odom";
 
    pub_ply_map = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1);

    //循环每秒发送一次
    ros::Rate loop_rate(1);
    while (ros::ok())
    {
        // ROS_INFO_STREAM ("address " << addressfile);
        pub_ply_map.publish(output);
        ros::spinOnce();
        loop_rate.sleep();
    }
    return 0;
}

以上代码将addressfile修改为待加载的PLY文件的地址即可使用,或者写个参数读取的cpp,读入addressfile。

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.3)
project(load_ply)

#SET(CMAKE_CXX_COMPILER "g++")
SET( CMAKE_BUILD_TYPE Release )
SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")

#set(cv_bridge_DIR /usr/local/cv_bridge341/share/cv_bridge/cmake)
find_package(PCL 1.8 REQUIRED)
find_package(catkin REQUIRED COMPONENTS
    pcl_conversions
    pcl_ros
    roscpp
    std_msgs
    tf
    cv_bridge
    message_filters
    )

catkin_package()

include_directories(include 
        ${PCL_INCLUDE_DIRS}
        ${catkin_INCLUDE_DIRS} 
        )
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(example Load_ply.cpp
                       parameters.cpp)
target_link_libraries(example ${PCL_INCLUDE_DIRS}
                              ${catkin_LIBRARIES}                               
) 

2、rviz配置及运行效果如下图:(使用以上code,按照下图修改即可)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS中加载PLY文件并rviz显示 的相关文章

随机推荐