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

每个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 
#include 
#include 
#include 
#include 


main (int argc, char **argv)
{
    ros::init (argc, argv, "pcl_example");
    ros::NodeHandle nh;
    ros::Publisher pcl_pub = nh.advertise ("pcl_output", 1);
    pcl::PointCloud cloud;
    if (pcl::io::loadPLYFile("/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,显示彩色点云,如图,参数“odom”和“pcl_output”是在代码中指定的。

ubuntu18.04下安装ROS并用rviz读取ply文件并彩色显示_第1张图片

 

你可能感兴趣的:(3D,SLAM,ROS)