ROS加载PCD文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录一下利用ROS加载PCD文件并在rviz中查看

一、创建ROS功能包

在工作空间下的src目录下使用功能包创建命令,命令如下所示

//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");  //初始化节点,创建节点名称
  ros::NodeHandle nh;	//节点处理句柄
  ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1); //发布名称为pcl_out的话题,消息队列长度为1,消息类型为sensor_msgs::PointCloud2
  pcl::PointCloud<pcl::PointXYZ> cloud;
  sensor_msgs::PointCloud2 output;
  pcl::io::loadPCDFile ("pcd文件所在路径", cloud); //修改自己pcd文件所在路径
  //Convert the cloud to ROS message
  pcl::toROSMsg(cloud, output); //转换为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);  //控制发布的信息的快慢,即循环内sleep的间隔
  while (ros::ok())
  {
    pcl_pub.publish(output);
    ros::spinOnce();  //监听反馈函数
    loop_rate.sleep();
  }
  return 0;
}

编辑CMakeList和package.xml

编辑好代码后,还需修改CMakeList以及package.xml使得编译可以顺利进行

1、CMakeList需要更改的地方

需要在find_package中添加所需的依赖包

find_package(catkin REQUIRED COMPONENTS
	pcl_ros
	pcl_conversions
	pcl_msgs
	sensor_msgs
	//以上为新添加
	roscpp
	rospy
)

需在include_directories和link_directories中包含pcl库

include_directories(
	${catkin_INCLUDE_DIRS}
	${PCL_INCLUDE_DIRS}
)

link_directories(
	${PCL_LIBRARY_DIRS}
)

添加执行程序

add_executable(check_pcd src/pcl_load.cpp)

将程序与依赖库链接起来

target_link_libraries(check_pcd ${catkin_LIBRARIES} ${PCL_LIBRARIES})

至此,CMakeList修改完毕

package.xml修改

package.xml修改增加新增的依赖包对应的代码即可,代码如下

<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命令对功能包的代码进行编译

运行

先利用roscore运行起master节点,再利用如下命令把功能包中的程序运行起来

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

查看pcl数据

相应的设置如图中所示
按上图设置即可看到pcd中的点云数据

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值