ROS下使用PCL库教程

这篇具有很好参考价值的文章主要介绍了ROS下使用PCL库教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近打算做一点点云数据处理相关的工作,所以就用到PCL(点云库),ubantu已经自己带了PCL库,我用的是uantu20.04.4+Ros noetic+pcl 1.10+vscode。PCL官网提供的教程是单独PCL在cmke编译的,要在ros框架下使用则需要将PCL官方教程与ROS匹配。ROS官方提供教程。以下是在ROS下跑通第一个PCL程序整理:

ROS下使用PCL步骤

1. 创建工作空间

mkdir -p ~/PCL_ws/src
cd ~/PCL_ws
catkin_make
code .#(在vscode中打开)

2. 创建ROS包

打开vscode后直接创建ROS包。
查看vscode中创建ROS包
也可以使用命令行创建

catkin_creat_pkg my_PCL_tutorial PCL_conversions PCL_ros roscpp sensor_msgs

配置package.xml文件

  <build_depend>libpcl-all-dev</build_depend>
  <exec_depend>libpcl-all</exec_depend>

3. 创建代码ROS代码框架

src文件夹下创建cpp文件src/pcl_text.cpp,不会参考上一个链接[查看vscode中创建ROS包]。文章来源地址https://www.toymoban.com/news/detail-494117.html

   1 #include <ros/ros.h>
   2 // PCL specific includes
   3 #include <sensor_msgs/PointCloud2.h>
   4 #include <pcl_conversions/pcl_conversions.h>
   5 #include <pcl/point_cloud.h>
   6 #include <pcl/point_types.h>
   7 
   8 ros::Publisher pub;
   9 
  10 void 
  11 cloud_cb (const sensor_msgs::PointCloud2ConstPtr& input)
  12 {
  13   // Create a container for the data.
  14   sensor_msgs::PointCloud2 output;
  15 
  16   // Do data processing here...
  17   output = *input;
  18 
  19   // Publish the data.
  20   pub.publish (output);
  21 }
  22 
  23 int
  24 main (int argc, char** argv)
  25 {
  26   // Initialize ROS
  27   ros::init (argc, argv, "my_pcl_tutorial");
  28   ros::NodeHandle nh;
  29 
  30   // Create a ROS subscriber for the input point cloud
  31   ros::Subscriber sub = nh.subscribe ("input", 1, cloud_cb);
  32 
  33   // Create a ROS publisher for the output point cloud
  34   pub = nh.advertise<sensor_msgs::PointCloud2> ("output", 1);
  35 
  36   // Spin
  37   ros::spin ();
  38 }

4. 配置CMakeLists.txt文件

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

5. 从PCL教程中下载pcl处理代码,放到ROS代码框架中(放在回调函数中)。

   5 void cloud_cb (const sensor_msgs::PointCloud2ConstPtr& cloud_msg)
   7 {
   8   // Container for original & filtered data
   9   pcl::PCLPointCloud2* cloud = new pcl::PCLPointCloud2; 
  10   pcl::PCLPointCloud2ConstPtr cloudPtr(cloud);
  11   pcl::PCLPointCloud2 cloud_filtered;
  12 
  13   // Convert to PCL data type
  14   pcl_conversions::toPCL(*cloud_msg, *cloud);
  15 
  16   // Perform the actual filtering
  17   pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
  18   sor.setInputCloud (cloudPtr);
  19   sor.setLeafSize (0.1, 0.1, 0.1);
  20   sor.filter (cloud_filtered);
  21 
  22   // Convert to ROS data type
  23   sensor_msgs::PointCloud2 output;
  24   pcl_conversions::fromPCL(cloud_filtered, output);
  25 
  26   // Publish the data
  27   pub.publish (output);
  28 }

到了这里,关于ROS下使用PCL库教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言编程实现,计算每天进步一点点一年后的效果

    本来的基数为1,如果好好学习时能力值相比前一天提高1%,当放任时相比前一天下降1%。1年(365天)后的效果相差多少呢? 原基数为1,努力一天进步1%,效果1*(1+0.01),努力两天是在前一天的基础上进步1%,结果是1*(1+0.01)*(1+0.01),一年后天天向上的力量是(1+0.01)的365次方。

    2024年02月11日
    浏览(39)
  • pygame里实现导弹追踪效果,同时对python的指针机制有一点点思考

           最近,儿子一直缠着让我把之前给他编写的游戏重做一下,要加一些功能.但是因为之前写代码的时候刚学会python,当时的想法就是能跑就行,现在回头看来,代码的可维护性几乎为零.所以没办法只能冲头再来,重构了几乎所有代码.在编写的时候遇到了一个有意思的问题,儿子

    2024年01月21日
    浏览(162)
  • TypeError: Cannot read properties of undefined (reading ‘dispatch‘)以及一点点的nprogress的错误

    在开发项目中遇到这个bug,记录一下解决办法 在入口文件main.js看注册的store有无大小写错误 版本太高 vue2安装3版本的vuex,默认安装的4版本给vue3用 nprogress 在查看完代码无错误后去翻了一下nprogress的使用教程 发现进度条关闭的方法居然是done()不是end()!!!

    2024年02月14日
    浏览(32)
  • 6.6---每天一点点--- Java基础之==和equals区别并举例说明(总复习+深入版)---详细+举例(小白也能看懂)

    1.== 为运算符,equal 为String数据类型的比较方法 相同内容的对象地址不一定相同,但相相同地址的对象内容一定相同;== 比较的是值是否相等,equal比较的是是否是同一个对象 2.把对象想象成一个房子,而引用则是门牌号。如果两个引用指向同一个房子,那么它们就是相等的

    2024年02月08日
    浏览(32)
  • 【每天学习一点点 day04】工程化 npm create 脚手架 create-vue, vue-cli 执行原理① - npm cli

    希望我们每个人都能找到属于自己的花期,不急不躁,静等风来。 今天打算用 Docusaurus 开始搭建自己的知识库,之前早已有此想法,遗憾的是没有坚持下来。 这次借助这个机会,也计划将自己【每天学习一点点】系列整理在自己的知识库中,方便大家查找。 在使用脚手架命

    2024年02月22日
    浏览(43)
  • ROS下使用PCL库教程

    最近打算做一点点云数据处理相关的工作,所以就用到PCL(点云库),ubantu已经自己带了PCL库,我用的是uantu20.04.4+Ros noetic+pcl 1.10+vscode。PCL官网提供的教程是单独PCL在cmke编译的,要在ros框架下使用则需要将PCL官方教程与ROS匹配。ROS官方提供教程。以下是在ROS下跑通第一个PCL程序

    2024年02月09日
    浏览(31)
  • pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云

    先添加一个带有ui的QT应用程序。 先拖出来一个QOpenGLWidget控件 修改布局如下: 然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件,步骤如下: 右击QOpenGLWidget窗口,选择【提示为...】  输入提升的类名称为QVTKOpenGLNativeWidget  此时需要把自动生成的qvtkopenglnativewidget.h修改为QV

    2024年01月25日
    浏览(26)
  • ros2 基础教程-使用ROS 2进行相机标定

    相机(摄像头)是一种非常精密的光学仪器,对外界环境的感知非常敏感。由于摄像头内部和外部的一些原因,摄像头采集的图像常常会发生一定的畸变。如果直接将采集到的图像拿来进行图像处理,会产生很大的问题。为了避免图像数据源造成的误差,需要对摄像头的相关

    2024年01月21日
    浏览(41)
  • Mikrotik ros 软路由中文版使用图文教程

    MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业路由器,新云软件园小编在本文详细介绍了Mikrotik ros 软路由设置教程提供给大家参考。 MikroTik RouterOS 脚本生成器 V2.8 中文综合版 类型: 系统其它 大小: 6.74MB 语言: 简体中文 时间: 2018-06-14 查看详情

    2024年02月06日
    浏览(40)
  • [carla入门教程]-5 使用ROS与carla通信

    本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 本小节的主要内容是介绍carla中的如何使用ros进行通信. 章节内容介绍: 第1,2小节介绍了ROS和carla_r

    2023年04月17日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包