首页 > 其他分享 >3d激光雷达开发(项目练习)

3d激光雷达开发(项目练习)

时间:2022-11-23 23:01:16浏览次数:75  
标签:pcl 练习 add opencv grabber PCL openni 激光雷达 3d


        网上关于pcl的教程很多,大部分都是翻译过来的。但是怎么把pcl这些教程串在一起,做一个简单的项目,这方面的资料不多。今天,正好看到一个范例项目,很有代表性,值得一看。

1、代码地址

​https://github.com/veraposeidon/PointCloudVolumeMeasure​

2、项目目标主要就是测量中间突出的那部分体积大小

3d激光雷达开发(项目练习)_点云

3、查看CMakeLists.txt

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(openni_grabber)

find_package(PCL 1.8 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable (openni_grabber volDetectVisualizer.cpp)
target_link_libraries (openni_grabber ${PCL_LIBRARIES})

#add_executable (openni_grabber openni_grabber.cpp)
#target_link_libraries (openni_grabber ${PCL_LIBRARIES})

        从文件中发现,代码文件在volDetectVisualizer.cpp文件。

4、代码分析

        从整个算法流程来看,主要分了这么几个步骤。

        4.1 空间滤波,相当于roi裁剪

        4.2 下采样,减少计算的数据量

        4.3 统计滤波,去除异常点

        4.4 地面切割

        4.5 获取地面之外的点云信息

        4.6 再次切割平面

        4.7 利用得到的coefficients计算高度差

        4.8 平面投影

        4.9 为投影的点构建ConcaveHull

        4.10 根据ConcaveHull获取轮廓,为opencv所使用

        4.11 计算面积、体积

        4.12 添加画面字符打印

5、opencv部分

        算法中除了pcl,也使用到了opencv,主要是轮廓的处理这部分内容。

6、最终效果

3d激光雷达开发(项目练习)_点云_02

7、其他

        上面是pcl处理的基本流程,当然实际情况远不止这些。比如实际项目中还会构建模板,利用icp、ndt计算yaw、pitch、roll,这部分都可以活学活用,不用拘泥于形式。

注:

        关于多平面点云分割,这个链接讲的也挺好,中间也涉及到了opencv的使用。

        https://zhuanlan.zhihu.com/p/101476884

标签:pcl,练习,add,opencv,grabber,PCL,openni,激光雷达,3d
From: https://blog.51cto.com/feixiaoxing/5881893

相关文章

  • 3d激光雷达开发(平面分割)
        平面分割是点云数据经常需要处理的一个功能。在很多场景下面,平面数据都是没有用的。这个时候需要考虑的,就是怎么把平面数据从点云当中分割出去。鉴于此,pcl库给......
  • 3d激光雷达开发(圆柱分割)
        和平面分割一样,pcl也支持圆柱分割。使用的方法和平面分割也差不多,都是基于ransac的基本原理。在pcl官方库当中,也给出了参考代码,注意关联的pcd文件,https://pcl.r......
  • 3d激光雷达开发(ndt匹配)
        除了icp匹配之外,ndt匹配也是使用比较多的一种方法。相比较icp而言,ndt匹配花的时间要少一些。此外,ndt匹配还需要输入估计的yaw、pitch、roll、x、y、z,这个可以根......
  • 3d激光雷达开发(icp匹配)
        所谓匹配,其实就是看两个点云数据里面,哪些关键点是一样的。这样就可以把一个点云移动到另外合适的位置,组成一个新的点云。一般来说,单个机器人上面,3d激光扫描到的......
  • 算法练习:求24点
    小学三年级的儿子在玩四个数字求24的游戏,经常来考我。有些还真不是一下子就能想到。python写了个求解的算法,再也不用费脑了。defs6(lstnum):lst=lstnum[:]......
  • 算法练习1
     求n个整数里,连续m个整数乘积最大的一组。如:[1,2,4,5,3,4]m为2时,1,2  2,44,5 5,3 都是连续的两个数,其中4,5的乘积是最大的。下面是我用,列表推导、reduce、列表排序,实现......
  • P8830 [传智杯 #3 练习赛] 评委打分 ----- 简单模拟、使用O2以及printf优化时间
    题目描述小A参加一个综艺节目。一共有 n(3\len\le10^6)n(3≤n≤106) 名评委参与打分(分数范围是0到100的整数),每个评委依次亮出自己的得分。为了节目效果,要求......
  • ASW3642pin√pin替代TS3DV642无需更改电路
    TS3DV642是一种12通道1:2或2:1双向多路替代器/多路解复用器。TS3DV642接入2.6V至4.5V的电源供电,适用于电池供电。电阻(RON)最小和I/O电容较小,能够实现典型值高达7.5GHz的带宽......
  • 数据库系统概论练习2
    一、填空题(每空1分,共10分) 数据模型的三要素包括:数据结构、 数据操纵、完整性约束。数据库系统的三级模式和二级映像中外模式/模式映像概念模型是对信息世界的建模,其......
  • 数据库系统概论练习1
    一、填空题(每空1分,共10分) 数据库管理系统的主要功能有数据定义功能、 数据操作功能、数据库的运行管理和数据库的建立以及维护等 4 个方面。数据独立性又可分为 ......