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,显示彩色点云,如图