1、前言:

很长一段时间都在做3D激光雷达以及图像的数据处理这一块的工作,根据以往数据处理过程中遇到的问题,打算自己开发一套工具,用于提高开发效率。

在20年02月份便开始着手准备去做这件事,由于工作太多,导致进度一直断断续续,下面我们首先给大家介绍一下如何制作这样一款上位机。

1、我们使用PyQt5搭载的界面框架(如果喜欢Tkinter开发界面的话,也可以参考Tkinter教程链接

2、数据处理使用Python

3、3D点云的显示使用PyQtGraph(后面我们会着重介绍一下点云显示的常用工具有哪些)

4、图像数据的显示使用Opencv-python

5、串口数据读取、发送使用Pyserial

6、网口数据读取使用Socket

我们可以对比一下先对比一下不同版本的显示效果:

版本:V1.0

版本:V4.0

视频加速2.5倍

2、功能介绍:

2.1、3D点云:

1、加载单帧点云数据,主要为xxx.bin格式的点云(标准KITTI格式点云);

2、加载多帧点云,将点云和标签文件同时打开,可实现动态的点云显示效果(带有3D包围框);

3、加载激光雷达数据,目前使用Python的Socket接口读取的是速腾聚创的16线激光雷达数据;

4、手动提取点云平面(设定阈值,对点云中特定位置的平面进行提取);

5、点云格式转换,将bin格式转化为pcd格式(也可支持pcd转化为bin格式);

2.2、2D图像:

1、人脸信息录入以及识别功能。

TODO:

1、车道线检测功能。

2、YOLO目标检测功能。

2.3、串口:

1、IMU传感器数据检测。

2、12V10AH锂电池数据检测。

3、12V20AH锂电池数据检测。

4、机器人底盘控制。

3、3D点云

传统的3D点云数据处理可以使用PCL数据库,PCL数据库包含一些简单的点云滤波、去噪、降采样、聚类分割等预处理方法。PCL也有Python版本:python-pcl,只是功能没有PCL那么多。当然还有一些其他的处理点云的库,如pypcl等(如果你是一名Python开发者,不妨试试哦~)。

目前三维激光雷达采集3D点云进行环境感知比较热门,在无人驾驶领域得到了广泛应用。许多读者刚接触3D点云,对于3D点云的了解不是很多,不用捉急,下面我们开始对3D点云数据处理展开介绍。

我们首先介绍一下点云的显示工具有哪些,可能这也是读者比较关心的一个问题:

1、ROS操作系统下使用Rviz显示点云(根据古月居教程了解一下ROS,你会发现这些都很Easy)

ROS在ubuntu18.04下的安装教程

2、RSLidar、Velodyne激光雷达上位机(猛然一看,两者是不是很相似~)

RSLidar上位机下载链接

3、Velodyne上位机

4、CloudCompareStereo 3D点云显示工具

5、MeshLab 3D点云显示工具

6、Geomagic studio 2015 3D点云显示工具

Geomagic studio 2015下载链接

(介绍完显示3D点云显示工具之后,我们也介绍几款开源的点云显示插件)

7、PyQtGraph(Python)

优点:PyQtGraph可以打开包含上千万个点云的文件(大概是2千万吧,没有卡顿),并且可以嵌入到PyQt的上位机界面中。

缺点:目前没有找到在3D点云中显示文字的方法(类似于识别物体之后给他打上标签),目前只能用不同的3D包围框颜色区分不同物体。

8、Vispy(Python)

VisPy是一个新的基于OpenGL的2D / 3D可视化库,是PyQtGraph,VisVis,Galry和Glumpy的作者之间合作开发的。它目前处于早期开发阶段,其范围比PyQtGraph狭窄-它将专注于可视化,而无需PyQtGraph提供的GUI工具包功能。

9、matplotlib(Python)

matplotlib 的测试程序和数据可以直接点击上面的matplotlib进入链接

优点:matplotlib 显示插件丰富,基本上可以满足现有的所有显示要求(3D点云、标签、大小、颜色等等)

缺点:matplotlib的缺点也很明显,打开较大的点云文件出现明显的卡顿现象,实现动态显示比较困难(主要原因还是因为卡顿),适用于一些3D点云数量较少的显示。

10、Open3d(Python)

介绍:Open3D是一个开放源代码库,支持快速开发处理3D数据的软件。Open3D前端在C ++和Python中公开了一组经过精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D是从干净的开发板中开发出来的,它带有少量的经过仔细考虑的依赖项。它可以在不同的平台上设置,并且可以从源代码进行最小的编译。

11、Mayavi(Python)

优点:可以控制点云的大小、颜色、形状等,写论文需要用到点云显示的话,强烈推荐哦~

12、KITTI(Python)

因为现有的3D目标识别算法基本都是使用KITTI数据集进行验证算法的准确性和时间效率,因此,想要运行完算法之后直接显示KITTI的3D点云,可以使用github开源的kitti_object_vis工具(当然,也可以使用Mayavi等工具用于作图)。

3D点云显示的工具我们暂且就介绍这么多吧,后面我们会介绍一些激光雷达等数据如何处理,以及如何开发上位机等。