# Efficient Online Segmentation of Ground&Wall Points
## Update 20220625(中文)
1. 所有参数已支持通过`yaml`文件配置!
2. 在提取**墙面点**时,引入了**法向量**信息,支持大入射角时墙面点的准确提取。
3. 支持**任意线数的旋转式机械激光雷达**,已用**16线**和**32线**激光雷达数据充分测试(32线所用测试数据集 [UrbanLoco](https://github.com/weisongwen/UrbanLoco)/HK-Data20190117)。`yaml`文件已预置了`VLP-16`和`HDL-32e`两型激光雷达的参数,可直接使用。
4. 支持激光雷达**以任意姿态安装**,而不仅仅是水平姿态,只需要在`yaml`文件中配置好`kExtrinsicRot`和`kExtrinsicTrans`即可。
5. 添加了外参**旋转矩阵的单位正交属性检查**,如果非单位正交阵,程序报错并退出。
6. 新版的测试视频即将发布。
## Update 20220625 (English)
1. Now you can configure all the parameters simply through a `segmentation_params.yaml` file!
2. Take **normal info** into consideration when **identifying wall points**, which has proven to be very usefull especially with large incident angle!
3. **Support Multi-Line Spinning LiDAR with any lines**! Just modify LiDAR related parameters in `yaml` file. For now, 16-line and 32-line LiDARs, taking `VLP-16` and `HDL-32` as examples respectively, have been fully tested with home-made dataset and [UrbanLoco dataset](https://github.com/weisongwen/UrbanLoco)(HK-Data20190117).
4. You can **mount your LiDAR in any pose**, not just horizentally. All you need to do is re-write `kExtrinsicRot` and `kExtrinsicTrans` in `yaml` file.
5. Check whether the **input rotation matrix** is a special orthogonal matrix(SO3 group), if not, the program report error and return.
6. New test vedio coming soon.
**UrbanLoco测试截图(Here is a screenshot of test on UrbanLoco dataset):**
![UrbanLoco test](pics/2022-06-15_19-35-32屏幕截图.png)
## 1. Introduction
This is a **light-weight & efficient** online segmentation algorithm for segmenting **ground points and wall points** out of an LiDAR point cloud.
This algorithm is inspired by *"M. Himmelsbach, F. v. Hundelshausen and H. -. Wuensche, **Fast segmentation of 3D point clouds for ground vehicles**, 2010 IEEE Intelligent Vehicles Symposium, 2010"*, an original implementation can be accessed here [linefit_ground_segmentation](https://github.com/lorenwel/linefit_ground_segmentation).
However, **I have extended the original idea to extract wall points**, not only the ground ones. Also, considering the elevation angle distribution is fixed for multi-line spinning LiDARs, we can use this info to set the size of bins within each segment exactly equal with the size of LiDAR lines (or, rings). By this way, **the total size of bins for line fitting search is impressively reduced, thus making my implementation way faster**.
See the picture below for a first look, where yellow lines(also magenta points) indicate ground points, and green lines(also green points) indicate wall points.
![result](pics/result04.png)
## 2. Results & Videos
`coming soon ...`
A test video can be seen on my personal Zhihu homepage, click [here](https://zhuanlan.zhihu.com/p/508961457).
## 3. Algorithm Detail & Implementation
`coming soon ...`
A chinese version can be seen on my personal Zhihu homepage, click [here](https://zhuanlan.zhihu.com/p/508961457).
## 4. Dependencies
This project is light-weight in dependencies, only **PCL & OpenCV** are required, you can easily install these two by `apt-get install`. Note that PCL is essential while OpenCV is only for visualization of range image. A developer should take no trouble to remove OpenCV dependency with just a little bit modification on original codes.
## 5. Compile & Run
Once you have solved the dependencies problem, just execute `catkin_make` and `roslaunch efficient_online_segmentation efficient_online_segmentation.launch`. See the *.launch* file for detail.
By default, **VLP-16 LiDAR and HDL-32 LiDAR** are supported. If you want to see how **64/128-line LiDAR scanner** work, just modify LiDAR related parameters in `yaml` file.
## 6. Future TODOs
Not any more after I took the normal info into consideration for wall points extraction. I would be grateful if you happen to have some ideas and willing to share them with me.
没有合适的资源?快使用搜索试试~ 我知道了~
点云分割-使用C++实现在线分割激光点云中的地面点+墙面点-优质项目实战.zip
共31个文件
png:15个
cpp:5个
h:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 84 浏览量
2024-02-18
07:43:52
上传
评论
收藏 11.45MB ZIP 举报
温馨提示
点云分割_使用C++实现在线分割激光点云中的地面点+墙面点_优质项目实战
资源推荐
资源详情
资源评论
收起资源包目录
点云分割_使用C++实现在线分割激光点云中的地面点+墙面点_优质项目实战.zip (31个子文件)
点云分割_使用C++实现在线分割激光点云中的地面点+墙面点_优质项目实战
CMakeLists.txt 1KB
ros_interface
efficient_online_segmentation_node.cpp 13KB
package.xml 549B
core
efficient_online_segmentation.cpp 12KB
efficient_online_segmentation.h 2KB
segmentation_utility.h 4KB
smart_sector.h 6KB
smart_sector.cpp 18KB
segmentation_utility.cpp 8KB
adaptive_ground_plane_estimator.cpp 399B
adaptive_ground_plane_estimator.h 1KB
launch
efficient_online_segmentation.launch 808B
segmentation_params.yaml 2KB
efficient_online_segmentation.rviz 7KB
pics
result04.png 478KB
2022-06-15_19-35-32屏幕截图.png 370KB
2022-06-15 20-02-20屏幕截图.png 545KB
result02.png 483KB
HK-Data20190117.png 473KB
2022-06-15 20-02-05屏幕截图.png 304KB
2022-06-15 19-36-09屏幕截图.png 358KB
2022-06-20_wall_after_opti.png 355KB
hongkong_sensor.png 455KB
runtime_15ms.png 186KB
kWallSameLineTolerance=0.0350.png 350KB
kWallSameLineTolerance=0.1051.png 351KB
UrbanLoco_A Full Sensor Suite Dataset for Mapping and Localization in Urban Scenes.pdf 5.9MB
result01.png 396KB
2022-06-20_wall_before_opti.png 347KB
2022-06-15 19-34-40屏幕截图.png 362KB
README.md 4KB
共 31 条
- 1
资源评论
- 庞闲森2024-05-21资源很实用,内容详细,值得借鉴的内容很多,感谢分享。
极智视界
- 粉丝: 2w+
- 资源: 1586
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Serial Peripheral Interface (SPI)
- 中风预测数据集中风预测数据集中风预测数据集中风预测数据集中风预测数据集
- 计算机网络基础案例涵盖了众多实际应用场景
- 机器学习_20240610_094403.m4a
- 华为OD机试C卷- 最大时间(Java & JS & Python).md-私信看全套OD代码及解析
- 华为OD机试C卷- 最大社交距离(Java & JS & Python & C).md-私信看全套OD代码及解析
- 华为OD机试C卷- 最大括号深度(Java & JS & Python).md-私信看全套OD代码及解析
- 华为OD机试C卷- 最大矩阵和(Java & JS & Python & C).md-私信看全套OD代码及解析
- 信号与系统-研究信号的时域和频域特性以及信号通过线性系统后的变换规律
- tensorflow安装 - 搭建深度学习环境
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功