ROS下使用PCL库教程
ros下使用PCL教程
- ROS下使用PCL步骤
- 1. 创建工作空间
- 2. 创建ROS包
- 3. 创建代码ROS代码框架
- 4. 配置CMakeLists.txt文件
- 5. 从PCL教程中下载pcl处理代码,放到ROS代码框架中(放在回调函数中)。
最近打算做一点点云数据处理相关的工作,所以就用到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包]。
1 #include <ros/ros.h>2 // PCL specific includes3 #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 int24 main (int argc, char** argv)25 {26 // Initialize ROS27 ros::init (argc, argv, "my_pcl_tutorial");28 ros::NodeHandle nh;29 30 // Create a ROS subscriber for the input point cloud31 ros::Subscriber sub = nh.subscribe ("input", 1, cloud_cb);32 33 // Create a ROS publisher for the output point cloud34 pub = nh.advertise<sensor_msgs::PointCloud2> ("output", 1);35 36 // Spin37 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 data9 pcl::PCLPointCloud2* cloud = new pcl::PCLPointCloud2; 10 pcl::PCLPointCloud2ConstPtr cloudPtr(cloud);11 pcl::PCLPointCloud2 cloud_filtered;12 13 // Convert to PCL data type14 pcl_conversions::toPCL(*cloud_msg, *cloud);15 16 // Perform the actual filtering17 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 type23 sensor_msgs::PointCloud2 output;24 pcl_conversions::fromPCL(cloud_filtered, output);25 26 // Publish the data27 pub.publish (output);28 }
ROS下使用PCL库教程相关推荐
- ROS下运行ORB-SLAM实例教程
实验环境ubuntu 14.04+ros indigo Step1: 配置环境变量 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src 在'src'目录中可 ...
- ROS初学笔记 - C++11与PCL库冲突问题
作者: zhch_pan 原文链接:https://www.cnblogs.com/zhchp-blog/p/7249487.html/ 出处: 博客园 转载说明:如有侵权,请联系我删除,谢谢! RO ...
- PCL库官方教程01
PCL 库概览 介绍 PCL 库的组件,简短说明各个模块的功能及其之间的交互. 概述 PCL 被拆分为多个模块化库.主要模块如下图所示: Filters 滤波器 下图给出了一个去除噪声的例子.由于测量 ...
- Ubuntu下Qt中使用pcl库
pcl依赖及安装 1.一般不用到qt或vtk显示点云 ###pcl通过ppa安装步骤 //这样安装,目前默认安装的是pcl1.7.2 sudo add-apt-repository ppa:v-lau ...
- python安装第三方库win10_音频处理 windows10下python三方库librosa安装教程
librosa是处理音频库里的opencv,使用python脚本研究音频,先安装三方库librosa. 如下通过清华镜像源安装librosa: pip install -i https://pypi. ...
- python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程
大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaconda我们可以很方便的随时调用这里面的库. 原先我自己在Py ...
- python安装第三方库re_音频处理 windows10下python三方库librosa安装教程
librosa是处理音频库里的opencv,使用python脚本研究音频,先安装三方库librosa. 如下通过清华镜像源安装librosa: pip install -i https://pypi. ...
- pythonidle安装第三方库_在Python IDLE 下调用anaconda中的库教程
在Python IDLE 下调用anaconda中的库教程 大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaco ...
- 运动控制卡的函数库与Linux,运动控制卡应用开发教程之ROS(下)
在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618.这两款产品分别是4轴,6轴运动控制卡. ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2A ...
最新文章
- 无法连接共享打印机处理办法
- 如何求解单边z变换_的单边Z变换。.ppt
- hdu1285 拓扑排序(裸)
- js 根据公历日期 算出农历_一招教会你公历换算成农历,要不要试试看
- python 小说爬虫_Python实现的爬取小说爬虫功能示例
- 获取并编译linux源码,linux – 从源代码编译软件:如何收集依赖项列表?
- 五一档票房超8.8亿元!张艺谋新片仅第二
- 正确中断java线程
- IE8 Beta2 已经放出来了
- Python Imaging Library: ImageColor Module(图像颜色模块)
- Linux 下 4 种实时监控日志文件的方法,你都会用吗?
- RT-Thread学习笔记|74HC595驱动数码管详解
- CSS 代码语法 代码注释
- 台式机电源选购资料调研+为什么50%的时候负载功率最大+80PLUS的解释
- j2sdk_5_0.exe的使用
- 机器学习笔记 - 什么是先验算法(Apriori Algorithm)?
- 四苯基卟啉(TPP);硝基卟啉(TPP-NOz);锌卟啉(TPP-Zn)的合成路线/实物图/结构式-齐岳供应
- VMware克隆虚拟机后修改UUID、MAC地址、IP和主机名
- 分布式电商项目十四:Vue前端框架简介及使用
- pictures for my GitHub -- Convenient Pic's URL offering