PCL及ROS在实践中的应用
用以记录平时在做激光雷达点云感知任务遇到的实际问题
ywfwyht
这个作者很懒,什么都没留下…
展开
-
KdTree原理及实现
在左子矩形中,我们选择y坐标在中间的点(即第2个点,也就是坐标为(2, 3)的点)作为左子节点,并将左子矩形划分为两个子矩形:一个左子矩形(包含第1个数据点)和一个右子矩形(包含第2个数据点)。在右子矩形中,我们选择y坐标在中间的点(即第5个点,也就是坐标为(8, 2)的点)作为右子节点,并将右子矩形划分为两个子矩形:一个左子矩形(包含第4个数据点)和一个右子矩形(包含第6个数据点)。最后返回最近邻点即可。每个单元格根据其所属的维度选择一个坐标轴,将其划分为两个子单元格,并将数据点存储在相应的子单元格中。原创 2023-05-26 20:24:39 · 1871 阅读 · 0 评论 -
PCL应用及CMakeLists编译示例
【代码】PCL应用及CMakeLists编译示例。原创 2023-02-07 10:06:19 · 896 阅读 · 0 评论 -
PCL:自定义点云PointT数据类型及字段信息
【代码】PCL:自定义点云数据类型及字段信息。原创 2022-12-22 15:47:49 · 710 阅读 · 0 评论 -
python:常见读写点云pcd文件的方法总结
python常见读写点云pcd文件的方法总结原创 2022-09-28 11:28:54 · 8598 阅读 · 0 评论 -
python:激光点云生成BEV图像
python 实现点云BEV图像生成原创 2022-08-30 17:03:01 · 1247 阅读 · 2 评论 -
python:利用rospy实现Marker及XYZI/XYZRGB点云在rviz中的可视化
python利用rospy实现Marker及XYZI/XYZRGB点云在rviz中的可视化代码环境是基于ubuntu+ros的。需要安装rospy、numpy等。原创 2022-08-20 14:53:04 · 1770 阅读 · 0 评论 -
3D激光点云霍夫变换拟合直线
可以看到笛卡尔坐标系下的点A、B、M映射到参数空间中实际上是线,而笛卡尔坐标系中的直线AB、直线BM映射到参数空间中实际上是点E、F。但由于垂直于X轴的直线,其斜率k无穷大、不存在,所以会导致点M、Z在参数空间中对应的线是平行的,没有交点,即该参数空间下无法描述k不存在的直线。可以看到笛卡尔坐标系下的点A、B、M映射到极坐标系下的参数空间中实际上是线,而笛卡尔坐标系中的直线ABM映射到极坐标系下的参数空间中实际上是点F。且对于平行于X或Y轴的直线也可以很好映射到参数空间下,保证其有交点。原创 2022-08-20 14:32:12 · 1069 阅读 · 0 评论 -
ubuntu:常用命令记录
在工作中经常会遇到计算两个向量间夹角问题,由于水平有限,知识面浅,不知道有什么好用的函数可以直接调用,因此,总结以下两个计算夹角的代码,记录于此。原创 2022-07-28 14:05:13 · 619 阅读 · 0 评论 -
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
File "/opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge/core.py", line 91, in encoding_to_cvtype2 from cv_bridge.boost.cv_bridge_boost import getCvTypeImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)原创 2022-07-19 15:31:42 · 1895 阅读 · 9 评论 -
激光点云法向量估计原理及数学推导
激光点云法向量估计原理及数学推导转载 2022-05-12 09:32:27 · 745 阅读 · 0 评论 -
激光雷达检测车道线
lidar车道线检测转载 2022-04-27 13:45:13 · 700 阅读 · 0 评论 -
PCL:RANSAC算法拟合直线的两种实现方式
pcl利用ransac实现直线拟合的方法pcl::SampleConsensusModelLinepcl::SACSegmentationpcl::SampleConsensusModelLine#include <pcl/io/pcd_io.h>#include <pcl/sample_consensus/ransac.h>#include <pcl/sample_consensus/sac_model_line.h>#include <pcl/visu原创 2022-04-19 17:27:41 · 2597 阅读 · 0 评论 -
C++:利用PCL实现点云的水平校准
利用PCL实现点云的水平校准由于激光雷达在安装过程中,会出现安装误差,造成点云倾斜,这里假设激光点云只有俯仰的倾斜角度,所以我们需要通过水平校准来求得俯仰角,并将点云进行转换。过程1:对地面点云求地面拟合方程的法向量。过程2:根据地面的法向量及水平面的法向量(0,0,1)求夹角,即为激光雷达的安装俯仰角。过程3:跟据求得夹角,得到点云绕y轴的旋转矩阵(不考虑平移)。过程4:知道旋转矩阵,就可以对点云进行转换校准。1. RANSAC求地面拟合方程选取一帧地面比较平的点云pcd,然后用PCL封原创 2022-03-21 14:31:51 · 4635 阅读 · 7 评论 -
python: bag包解析pcd和图像
bag包解析pcd和图像:import glob, osimport rosbagimport cv2from cv_bridge import CvBridge, CvBridgeErrorimport sensor_msgs.point_cloud2 as pc2import numpy as np print(cv2.__version__)bridge = CvBridge()image_topic = "/usb_cam/image_raw/compressed"poin原创 2022-03-10 10:47:11 · 4438 阅读 · 0 评论 -
python:获取两个列表中数值最接近的元素(元素匹配算法)
获取两个列表中数值最接近的元素:在处理数据中,经常需要匹配两个数据集合,找到最接近的那两个元素。例如:在处理pcd点云数据和图像的时候,需要在点云和图像两个集合中找到时间戳相对应的那一帧数据以下为代码实例:(代码不够规范,请多见谅)def pcd_match_img(pcd_path, img_path): pcd_file = os.listdir(pcd_path) img_file = os.listdir(img_path) for pcd in pcd_file: pcd_p原创 2022-03-09 17:10:58 · 3749 阅读 · 0 评论 -
C++:基于激光雷达点云的ransac车道线多条拟合
如何通过ransac 多条曲线?原创 2022-02-16 11:13:42 · 2870 阅读 · 13 评论 -
激光雷达点云检测路沿/路边界探索
目前公开的检测算法多是基于机械式lidar,即可以获取lidar的ring信息,借助这个ring再去检测路沿。但我拿到的是lidar是速腾聚创的M1,这是一款半固态的激光雷达,在点云处理上有区别于机械雷达。经过多方尝试,目前用曲率的方法可以求得路沿点。...原创 2022-02-16 11:01:34 · 3245 阅读 · 0 评论 -
PCL:激光点云车道线检测及最小二乘法拟合
PCL:激光点云车道线检测及最小二乘法拟合原创 2021-12-22 15:35:04 · 2140 阅读 · 3 评论 -
python:bag包解析pcd和图像
import glob, osfrom math import truncfrom re import Timport rosbagimport cv2from cv_bridge import CvBridge, CvBridgeErrorimport sensor_msgs.point_cloud2 as pc2import numpy as np print(cv2.__version__)bridge = CvBridge()image_topic = "/usb_cam/.原创 2021-08-10 15:38:13 · 1219 阅读 · 0 评论 -
python:点云pcd与图像根据时间戳匹配
class FileMatch: def __init__(self, dir_path): file_dir = glob.glob(dir_path + "/*") self.filepath = [] for f in file_dir: if f.endswith(".bag"): pass else: self.filepath..原创 2021-08-10 15:32:58 · 1226 阅读 · 2 评论 -
libsqlite3.so: error adding symbols: File in wrong format
***/anaconda3/lib/libsqlite3.so: error adding symbols: File in wrong formatcollect2: error: ld returned 1 exit statusspace_ground/CMakeFiles/space_ground.dir/build.make:338: recipe for target '/home/yht/CLionProjects/ground_ws/devel/lib/space_ground/spa.原创 2021-03-25 14:27:56 · 3234 阅读 · 0 评论 -
C++实现利用PCL旋转pcd点云数据
C++:利用PCL实现点云的水平校准_ywfwyht的博客-CSDN博客利用PCL实现点云的水平校准由于激光雷达在安装过程中,会出现安装误差,造成点云倾斜,这里假设激光点云只有俯仰的倾斜角度,所以我们需要通过水平校准来求得俯仰角,并将点云进行转换。过程1:对地面点云求地面拟合方程的法向量。过程2:根据地面的法向量及水平面的法向量(0,0,1)求夹角,即为激光雷达的安装俯仰角。过程3:跟据求得夹角,得到点云绕y轴的旋转矩阵(不考虑平移)。过程4:知道旋转矩阵,就可以对点云进行转换校准。1. RANSAC求地面原创 2021-02-19 13:45:33 · 1018 阅读 · 0 评论