1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > ROS-PCL读取pcd点云数据并在rviz中进行显示

ROS-PCL读取pcd点云数据并在rviz中进行显示

时间:2019-09-27 04:45:14

相关推荐

ROS-PCL读取pcd点云数据并在rviz中进行显示

环境:

Ubuntu18.04

ROS melodic

C++

创建工作空间和功能包

cd Downloads/ROSmkdir -p pcdreadshow_ws/srccd srccatkin_init_workspacecatkin_create_pkg read_pcd pcl_conversions pcl_ros roscpp sensor_msgs

进入到功能包的src文件夹下面新建.cpp文件read_pcd.cpp

#include<ros/ros.h>#include<pcl/point_cloud.h>#include<pcl_conversions/pcl_conversions.h>#include<sensor_msgs/PointCloud2.h>#include<pcl/io/pcd_io.h>//which contains the required definitions to load and store point clouds to PCD and other file formats.int main(int argc,char **argv){ros::init(argc,argv,"UandBdetect");ros::NodeHandle nh;ros::Publisher pcl_pub=nh.advertise<sensor_msgs::PointCloud2> ("pcl_output",1);pcl::PointCloud<pcl::PointXYZ> cloud;sensor_msgs::PointCloud2 output;pcl::io::loadPCDFile("/home/wyh/Downloads/ROS/pcdreadshow_ws/src/read_pcd/src/data/pcd/data_1/0000000001.pcd",cloud);//修改自己pcd文件所在路径//Convert the cloud to ROS messagepcl::toROSMsg(cloud,output);output.header.frame_id="odom";//this has been done in order to be able to visualize our PointCloud2 message on the RViz visualizer//!!!这一步需要注意,是后面rviz的 fixed_frame !!!敲黑板,画重点。ros::Rate loop_rate(1);while (ros::ok()){/* code for loop body */pcl_pub.publish(output);ros::spinOnce();loop_rate.sleep();}return 0;}

将下面的编译规则写入功能包下面的CMAKE.list文件中

add_executable(read_pcd src/read_pcd.cpp)target_link_libraries(read_pcd ${catkin_LIBRARIES})

回到工作空间路径下在终端中输入catkin_make进行编译.

分别依次打开多个终端分别输入下面的命令:

roscorerosrun read_pcd read_pcdrviz

打开rviz后add一个pointcloud2,topic话题选择pcl_outputm,然后FixedFrame填入odom即可看到图像

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。