PCL点云
文章平均质量分 55
在PCL库基础上对点云的一些使用
橘子皮一下
某不知名的大学研究生
展开
-
针对2021.3以来gazebo中Lidar点云数据不能正常使用的问题解决办法
问题的出现gazebo一直是一个重要的机器人领域的仿真软件,之前我写过一篇使用gazebo和LOAM算法进行联合运行的文章:在Ubuntu18.04中使用gazebo配合LOAM算法仿真在那时候gazebo还是可以正常使用的,但是今年三月之后,突然周围很多人反应gazebo和任何一个LOAM算法联合运行都会报错。我试了一下,果然是这样!经过控制变量分析,直到一定是gazebo出了问题(版本低了?)后来使用之前写过的一些点云处理的代码,发现pcl::fromROSMsg(*CloudMsg, *p原创 2021-04-06 10:06:40 · 1102 阅读 · 0 评论 -
使用LEGO-LAOM、ALOAM和自己录制的点云得到/tf消息
LGEO-LOAM存在的本质就是为了根据单纯的点云输入得到将点云转化到全局坐标系的/tf消息。下图反映了lego-loam的tf树:其中camera_init->map和base_link->camera都是在launch文件中直接发布的静态tf消息。所以其中最重要的部分是camera->camera_init,也就是从小车的当前时刻位置到最初始位置的坐标转换。然而我们录制的velodyne_points消息的坐标系一般都是velodyne,如果只使用上面这个tf树是得不到全局位置的原创 2021-03-26 22:36:48 · 2670 阅读 · 2 评论 -
ROS中点云学习(八):点云消息和/tf消息同步接收转化到全局坐标系
主要思想:对于给定的点云,可以根据/tf消息将点云转化到任意,给定的坐标系下面。比如点云的frame_id为base_link,在/tf消息中给出了base_link到/world的转换消息,那么就可以把点云转化到全局坐标系。主要使用了tf/message_filter这个库,它会把接收到的tf消息存储起来,直到接收到具有相同时间戳的点云,在去调用回调函数。回调函数中到全局点云的转化程序基本固定。主程序pcl_tf.cpp,具体为:#include <ros/ros.h>#include原创 2021-03-16 19:24:52 · 3639 阅读 · 6 评论 -
ROS中点云学习(七):激光点云和图像的融合
主要思想:把点云坐标系转化到相机坐标系,然后转化到图像。因为在gazebo中参数都是给出的,所以没有使用标定,直接写出了投影矩阵Rt和内参矩阵P。根据投影到的点的颜色修改点云的颜色,把识别到的点云发布出来。问题:现在标定没有成功,即点云和图像之间存在位置偏差,观察点云可以直到投影姿态正确,但是存在平行错位(颜色偏右上)。旋转矩阵也是凑出来的,平移矩阵也没有具体发现每个量的作用。头文件和之前一样myPointType.h#ifndef PCL_NO_PRECOMPILE#define PCL_NO_P原创 2021-02-24 21:21:24 · 10732 阅读 · 20 评论 -
ROS中点云学习(六):3D激光点云投影在2D环视图上,得到深度图和强度图
主要思想:使用的点云为16行,每行1800个点,点云每个点自带ring,再根据xy可以求出来点在哪一列。然后把点的深度和强度信息传输给Mat的矩阵即可。问题:可以得到Mat矩阵,但是不知道如何可视化,imshow总是黑白图。和上一篇类似,为了主程序的简洁,我们建立一个头文件myPointType.h,在这里面我们定义我们所需要的点云类型,具体代码如下:#ifndef PCL_NO_PRECOMPILE#define PCL_NO_PRECOMPILE#include <ros/ros.h原创 2021-02-22 20:10:59 · 2198 阅读 · 0 评论 -
ROS中点云学习(五):同时接收点云和图像
为了更好地理解场景,需要同时接收点云消息和图像消息。但是,目前我只能实现分别接收和显示,不知道怎么把两者结合起来(根据图像的颜色改变点云的颜色),难受啊。为了主程序的简洁,我们建立一个头文件myPointType.h,在这里面我们定义我们所需要的点云类型,具体代码如下:#ifndef PCL_NO_PRECOMPILE#define PCL_NO_PRECOMPILE#include <ros/ros.h>#include <pcl/point_types.h>#i原创 2021-02-20 16:02:06 · 1841 阅读 · 4 评论 -
ROS中点云学习(四):使用自己定义的PCL点云
在上一篇ROS中点云学习(三):使用PCL接收点云,给没有颜色的点云增加颜色变为彩色点云中我们说道,原本的/velodyne_points主题下除去XYZ信息,还有intensity(反射强度)和ring(第几圈)信息,但我们把它们舍弃了。如果现在我们需要这些信息,同时还需要颜色、标签等信息,这就需要自己定义一个点云类型了。为了主程序的简洁,我们建立一个头文件myPointType.h,在这里面我们定义我们所需要的点云类型,具体代码如下:#ifndef PCL_NO_PRECOMPILE#defin原创 2021-02-18 18:10:15 · 2601 阅读 · 3 评论 -
ROS中点云学习(三):使用PCL接收点云,给没有颜色的点云增加颜色变为彩色点云
在上一篇ROS中点云学习(二):使用PCL接收点云,操作之后重新发送中,我们接收了动态的彩色点云,并进行了颜色修改的操作。但是这是针对同意类型的点云而言的,如果原本接收到的点云就没有颜色,我们应该如何给它上色呢?所以就有了这一篇,点云上色。这里我使用的原始点云为Velodyne VLP-16采集到的数据,数据可以在这里下载。原始数据中,包含XYZ信息,intensity(反射强度)和ring(第几圈)信息。但是这里的intensity和ring对我们没有太大用途,所以直接舍弃。增加RGB的信息,变原创 2021-02-18 12:34:08 · 4530 阅读 · 5 评论 -
ROS中点云学习(二):使用PCL接收点云,操作之后重新发送
在上一篇ROS中点云学习(一):使用PCL生成动态随机彩色点云,并发布使用rviz查看中,我们生成了动态的彩色点云,并发布了出去。这次我们接收点云,并对它进行操作,然后发布一个新的点云。主程序为pcl_sub.cpp,这次写的规范了很多,使用了类。具体代码如下:#include <ros/ros.h>#include <pcl/point_types.h>#include <pcl_conversions/pcl_conversions.h>#include原创 2021-02-17 21:45:29 · 2600 阅读 · 3 评论 -
ROS中点云学习(一):使用PCL生成动态随机彩色点云,并发布使用rviz查看
最近在学习PointCloud,于是想尝试着自己创建一个动态的彩色点云。在网上找了一些,但都不是动态的,于是经过自己修改,做了一个项目。主程序main.cpp代码:#include <iostream>#include <pcl/point_types.h>#include <pcl_conversions/pcl_conversions.h>#include <ros/ros.h>#include <sensor_msgs/PointCl原创 2021-02-17 18:32:56 · 2714 阅读 · 11 评论
分享