前言
最近闲下来了,更更博。研究生方向是机器人控制,但还是对激光雷达点云处理这些更感兴趣一些。刚好最近在清华这边实习也是做点云处理的,记录一下自己的学习历程,本文仅仅是对相关概念进行介绍,帮助想入门的同学建立大致的了解,本人菜狗勿喷。
一、为什么选用点云处理而不是opencv?
1.目前在做移动机器人在非结构化地形的自主导航,传统的相机在应用场景中容易受到干扰,激光雷达在获取周边环境信息时数据还是更为可靠和直观一些。
二、点云基本知识
1.什么是点云?
我的理解为点云顾名思义就是一个一个点组成的数据集。主要通过激光雷达,Tof相机等进行采集。一般每个点会有xyz三维信息,i反射强度,有的还会有色彩信息,当你通过上述的传感器获得这些数据之后,便可以通过算法实现很多功能。可以用于构建地图,自主导航,识别物体等等。
2.怎么获得点云数据?
当你购买激光雷达等可以获得点云信息的传感器时,厂家一般都会发给你和主流开发平台适配的驱动等,之后你可以通过串口等方式将数据导入进自己的电脑里进行后续分析工作。如果你没有钱买相关设备的话也可以从网上下载别人的数据包,我记得pcl官方也提供一些点云数据包。
3.怎么处理点云数据?
点云数据处理说到底还是老一套信息处理的方法,我见过用MATLAB处理的,也有用深度学习搞识别的,毕竟说到底就是数据,不管用什么方法只要能得到你想要的结果就可以。
下面我主要介绍和ROS结合较好的PCL,这个在基于ROS系统的机器人开发中用的较多。
4.PCL基础功能
PCL(Point Cloud Library),里面提供了大量的数据类型和结构方便我们使用,同时其也是开源的,十分适合我这种刚入门的使用,编程语言主要为C++。
它提供了非常多的采样方法以及数据处理方法(各种滤波器,模型估计等)。同时ROS也提供了相应的接口使得PCL点云可以通过这些接口转换为ROS消息进行通信和处理。它也可以和rviz联合以实现点云数据的可视化。
5.点云数据格式
点云数据格式有很多种,大部分之间可以互相转换,我贴一个链接,这位介绍的还是比较全的。
https://blog.csdn.net/guo___ke/article/details/90045851
总结
以上就是一些基础介绍,后续会慢慢写一些技术上的学习笔记,大家共同学习进步。