欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ubuntu18.04下安装ROS并用rviz读取ply文件并彩色显示

程序员文章站 2022-04-18 19:55:33
...

每个ubuntu都有对应的ROS版本,为避免不同版本的问题,每一步骤我尽量用官方教程,不同版本找对应教程做。

一、ros版本

ros版本用的是melodic,官方安装教程地址:http://wiki.ros.org/melodic/Installation/Ubuntu

安装时在Initialize rosdep遇到了无法下载的问题,可以先跳过该步骤。

接下来配置worspace和环境变量并测试:

http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment

二、读取ply并显示

首先,需要建立ROS的工程,这里直接使用ROS的pcl例程:http://wiki.ros.org/pcl/Tutorials/

然后,为了读取ply修改example.cpp的代码:

#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>


main (int argc, char **argv)
{
    ros::init (argc, argv, "pcl_example");
    ros::NodeHandle nh;
    ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1);
    pcl::PointCloud<pcl::PointXYZ> cloud;
    if (pcl::io::loadPLYFile<pcl::PointXYZ>("/home/xxx/catkin_ws/src/my_pcl_tutorial/example0.ply", cloud) == -1)
	{
		PCL_ERROR("Couldn't read file1 \n");
		return (-1);
	}
    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;
}

/home/xxx/catkin_ws是我的workspace。

写完example后,在workspace里面开terminal执行:

catkin_make

编译过后,执行:

roscore

再开第二个terminal运行:

rosrun my_pcl_tutorial example

如果报错“ package 'my_pcl_tutorial' not found”,运行:

source devel/setup.bash

这一步后,按照教程直接运行报错,提示在my_pcl_tutorial目录下找不到可执行的example,发现生成的example在build里,于是把example拷贝到了my_pcl_tutorial目录下,运行就没报错了。

最后,开第三个terminal,运行:

rosrun rviz rviz

打开rviz,显示彩色点云,如图

ubuntu18.04下安装ROS并用rviz读取ply文件并彩色显示

 

相关标签: 3D SLAM