ROS加载PCD文件
生活随笔
收集整理的這篇文章主要介紹了
ROS加载PCD文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
ROS記錄
- 前言
- 一、創(chuàng)建ROS功能包
- 二、編寫加載pcl代碼
- 編輯CMakeList和package.xml
- 1、CMakeList需要更改的地方
- package.xml修改
- 編譯
- 運行
- 查看pcl數(shù)據(jù)
前言
記錄一下利用ROS加載PCD文件并在rviz中查看
一、創(chuàng)建ROS功能包
在工作空間下的src目錄下使用功能包創(chuàng)建命令,命令如下所示
//catkin_create_pkg 包名 依賴包名 catkin_create_pkg check_pcd std_msgs rospy roscpp二、編寫加載pcl代碼
代碼如下(示例):
#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>main (int argc, char **argv) {ros::init (argc, argv, "pcl_load"); //初始化節(jié)點,創(chuàng)建節(jié)點名稱ros::NodeHandle nh; //節(jié)點處理句柄ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1); //發(fā)布名稱為pcl_out的話題,消息隊列長度為1,消息類型為sensor_msgs::PointCloud2pcl::PointCloud<pcl::PointXYZ> cloud;sensor_msgs::PointCloud2 output;pcl::io::loadPCDFile ("pcd文件所在路徑", cloud); //修改自己pcd文件所在路徑//Convert the cloud to ROS messagepcl::toROSMsg(cloud, output); //轉(zhuǎn)換為ROS的消息類型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); //控制發(fā)布的信息的快慢,即循環(huán)內(nèi)sleep的間隔while (ros::ok()){pcl_pub.publish(output);ros::spinOnce(); //監(jiān)聽反饋函數(shù)loop_rate.sleep();}return 0; }編輯CMakeList和package.xml
編輯好代碼后,還需修改CMakeList以及package.xml使得編譯可以順利進(jìn)行
1、CMakeList需要更改的地方
需要在find_package中添加所需的依賴包
find_package(catkin REQUIRED COMPONENTSpcl_rospcl_conversionspcl_msgssensor_msgs//以上為新添加roscpprospy )需在include_directories和link_directories中包含pcl庫
include_directories(${catkin_INCLUDE_DIRS}${PCL_INCLUDE_DIRS} )link_directories(${PCL_LIBRARY_DIRS} )添加執(zhí)行程序
add_executable(check_pcd src/pcl_load.cpp)將程序與依賴庫鏈接起來
target_link_libraries(check_pcd ${catkin_LIBRARIES} ${PCL_LIBRARIES})至此,CMakeList修改完畢
package.xml修改
package.xml修改增加新增的依賴包對應(yīng)的代碼即可,代碼如下
<build_depend>pcl_ros</build_depend> <build_depend>pcl_conversions</build_depend> <build_depend>pcl_msgs</build_depend> <build_depend>sensor_msgs</build_depend> <build_export_depend>pcl_ros</build_export_depend> <build_export_depend>pcl_conversions</build_export_depend> <build_export_depend>pcl_msgs</build_export_depend> <build_export_depend>sensor_msgs</build_export_depend> <exec_depend>pcl_ros</exec_depend> <exec_depend>pcl_conversions</exec_depend> <exec_depend>pcl_msgs</exec_depend> <exec_depend>sensor_msgs</exec_depend>編譯
回到catkin_workspace下面,使用catkin_make命令對功能包的代碼進(jìn)行編譯
運行
先利用roscore運行起master節(jié)點,再利用如下命令把功能包中的程序運行起來
// 功能包名稱 程序名稱 rosrun check_pcd check_pcd查看pcl數(shù)據(jù)
按上圖設(shè)置即可看到pcd中的點云數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的ROS加载PCD文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stay hungry, stay fo
- 下一篇: 什么是Java api