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)
2、RSLidar、Velodyne激光雷达上位机(猛然一看,两者是不是很相似~)
3、Velodyne上位机
4、CloudCompareStereo 3D点云显示工具
5、MeshLab 3D点云显示工具
6、Geomagic studio 2015 3D点云显示工具
(介绍完显示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点云显示的工具我们暂且就介绍这么多吧,后面我们会介绍一些激光雷达等数据如何处理,以及如何开发上位机等。
评论(2)
您还未登录,请登录后发表或查看评论