日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS加载PCD文件

發(fā)布時(shí)間:2023/12/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS加载PCD文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔

ROS記錄

  • 前言
  • 一、創(chuàng)建ROS功能包
  • 二、編寫加載pcl代碼
  • 編輯CMakeList和package.xml
    • 1、CMakeList需要更改的地方
    • package.xml修改
  • 編譯
  • 運(yùn)行
  • 查看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é)點(diǎn),創(chuàng)建節(jié)點(diǎn)名稱ros::NodeHandle nh; //節(jié)點(diǎn)處理句柄ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1); //發(fā)布名稱為pcl_out的話題,消息隊(duì)列長度為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 !!!敲黑板,畫重點(diǎn)。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修改增加新增的依賴包對(duì)應(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命令對(duì)功能包的代碼進(jìn)行編譯

運(yùn)行

先利用roscore運(yùn)行起master節(jié)點(diǎn),再利用如下命令把功能包中的程序運(yùn)行起來

// 功能包名稱 程序名稱 rosrun check_pcd check_pcd

查看pcl數(shù)據(jù)


按上圖設(shè)置即可看到pcd中的點(diǎn)云數(shù)據(jù)

總結(jié)

以上是生活随笔為你收集整理的ROS加载PCD文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。