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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

网上关于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激光雷达开发(项目练习)

7、其他

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

笔记:

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

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

版权声明:本文为博主费晓行原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/feixiaoxing/article/details/123411346

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年3月11日
下一篇 2022年3月11日

相关推荐