本文内容转载自《电子技术应用》2019年第10期,版权归《电子技术应用》编辑部所有。
段清明,王凡,徐琳琳,全文俊
吉林大学仪器科学与电气工程学院
摘要:利用2D激光雷达配合云台装置,设计了一种3D激光扫描仪作为三维数据获取装置。根据扫描仪的硬件特性和传输特性,进行PC端的扫描控制系统以及数据处理系统的设计。扫描控制系统实现了对扫描范围以及扫描精度的控制和设定,数据处理系统针对采集到的原始数据,经过坐标的映射将相对坐标转换到全局坐标,并进行点云滤波,利用最小二乘进行曲面光滑,最终进行三角网格重建。经过多次实验结果证明,该系统可以对一般几何复杂度的三维场景进行较好的重建。
关键词:2D激光雷达;三维重建;点云处理;控制系统
0 引言
近年来,随着计算机图形和计算机视觉学的发展,三维扫描重建技术在多个领域(如工业测量、地形地貌的测绘、自动导航、无人机航拍、采空区调查等)逐渐展现其优势。
传统的三维场景重建方式包括主动建模和被动建模。主动建模是通过设备一次采集场景信息,进行点云成像。被动建模是根据单张或多张图像,直接利用图像进行三维建模。后者相对于前者不需要进行全局坐标的标定,避免了真实场景下的几何复杂性,但计算复杂度高,同时在还原几何准确性及获得三维信息的完整性方面存在着较大的缺陷。因此,为弥补被动建模的缺陷,在激光雷达扫描技术的迅速发展下,主动建模的应用越来越多。激光雷达具有测量速度快、精度高、非接触测量的特点,且应用成本大幅度降低,通过激光雷达进行主动建模的使用越来越广泛。
激光雷达是通过舵机的转动配合红外激光器的单点测距,实现单个平面的测量,其通信接口返回的数据同时包含测量距离和测量方位,运行状态下受外界环境影响程度较小。但是单个二维激光雷达仅能获得一个截面的信息,为了获取三维的数据进行建模,采用同等精度和测量范围的三维激光雷达时,成本将高出二维激光雷达十几倍,因此限制了在一般场景下的应用。
为节约经济成本,大量研究人员着手研究改造二维激光雷达或采用在二维激光雷达的基础上增加机械结构,以进行3D 扫描。但多数的机械结构复杂,导致全局坐标的标定变得困难,或测量范围有限,同时缺少针对三维激光扫描系统的整体设计方案。这些问题的存在,也为后来设计利用二维激光雷达实现三维重建的研究指明了方向。
本文依据二维激光雷达,搭配一维的旋转云台,设计三维激光扫描仪作为采集装置。同时设计上位机的机械控制和数据处理系统,最终实现扫描场景的三维重建。
1 坐标采集系统设计
1.1 扫描方案
由于2D激光雷达采用点状激光进行扫描,因此在扫描一周的情况下,仅能采集获得单个截面内的极坐标下的距离信息。如果需要扩展为三维扫描仪,一般有两种方式:(1)“变点为线”,将点状激光改为线性激光,一次性获得一个角度下截面的距离信息;(2)增加额外的机械结构(如旋转装置)作为扩展轴来获得第三个维度的信息。
应用第一种方式,不影响扫描的速率,但激光的亮度随着距离的增加,衰减速度加快,测量距离有限,并且对原本的激光雷达的结构改造较大,对摄像头的使用要求较高,工作量增多且复杂。应用第二种方式,需要控制额外自由度的转轴,扫描速度降低,但测量距离远,额外机械机构造成的误差可通过数学补偿,对原本的雷达的改造减少,只需要设计旋转装置即可。因此实验中选用增加转轴的方式设计3D扫描仪。
通过使用HLS-LFCD2型号2D激光雷达和RDS3115数码舵机,搭建3D激光扫描仪。设计机械结构如图1所示。
图1 机械结构
舵机带动机械关节的转动,其中2D雷达固定在关节处,雷达的几何中心与转轴的中心的连线垂直于雷达底部所在平面。扫描时,激光雷达不间断扫描激光器所在平面。以上述舵机转轴几何中心的O点为原点,建立空间直角坐标系,如图2所示。
图2中,O′为雷达几何中心,平面O′QP为雷达扫描平面,XOY平面与参考水准面平行。根据2D激光雷达的当前测量角度α、机械关节的偏转角θ 和被测量点P到雷达中心的距离ρ可知,测量点P 的全局坐标(x ,y ,z)可通过下式计算得出:
图2 坐标系示意图
其中,方位角α和距离ρ通过激光雷达串口输出的数据进行解码获得,偏转角θ根据控制器输出的PWM 和舵机物理偏转量之间关系得到。
1.2 机械控制
如图1所示,机械控制部分主要是对舵机的操作,舵机的精度决定了偏转角θ的精度。通过ARM公司的STM32ZET6作为控制器,输出PWM波进行控制RDS3115数码舵机,舵机主要控制特性如表1所示。
利用控制器产生一个20 ms的时基脉冲,该脉冲的高电平部分为0.5~2.5 ms范围,最大间隔为2 ms。根据表1和舵机的数据手册,在该范围内,输出的角度值与高电平的宽度成线性关系,舵机输出角度值θ值计算方式如下:
其中,θ的单位为度;Nset通过控制器进行设置,范围在500~2 500之间,从而实现舵机角度在0 ~ 180°范围内偏转。
由于舵机控制时存在死区,死区时间在3 μs,控制最小精度可达1 μs,小于死区时间,因此,在控制过程中,相邻两次偏转角θ的最小间隔△θ为:
因此,在控制过程中,设定的步进间距均为0.27°的整数倍,舵机的死区一定程度决定了扫描的精度。
2 控制系统及数据采集
上位机控制系统是基于PC 的Windows 10开发平台下,以Visual Studio 2015中的MFC为开发环境,通过编写主界面控件的消息响应函数,来实现扫描仪控制和采集数据存储。MFC 中包含大量Windows 句柄封装类,以及多种Windows 的内建控件和组件的封装类,丰富的内建控件为设计可视化界面提供便利。系统设计框图如图3 所示。
图3 控制系统结构图
上位机PC的任务包括同2D激光雷达的通信以及通过下位机控制器STM32对舵机的操作。激光雷达的数据传输接口为UART格式,在上位机和雷达处采用蓝牙模块进行通信,以避免传输线对扫描进程中的干扰。通信内容包括雷达的启动和关闭,以及获取雷达扫描平面内的ρ和θ。针对雷达发送的每一帧数据进行解码,保留每帧数据中的角度和距离信息。
在上位机界面,通过对相对坐标系下的起始扫描位置、扫描间隔和终止扫描位置进行选择,进行扫描路程设定。在控制关节旋转的同时,采用询问-应答的形式,以便保证在舵机完成转动任务后再进行扫描。在上位机界面通过进度条的形式显示整体扫描进度,方便用户进行监测。上位机控制系统流程如图4所示。
图4 控制系统流程图
根据项目要求,在MFC设计中采用多线程的方式,其中主线程用于响应用户的操作,将用户需求指令(如打开串口、打开文件、保存文件等)转换为程序指令进行执行、判断,并反馈执行结果。
MFC界面如图5 所示。界面中接收框和发送框均是对舵机进行操作,发送框显示已设置命令或进行手动编辑命令,接收框显示下位机的回复情况。
图5 控制系统主界面
扫描同时,上位机通过串口线与STM32通信,控制舵机实现关节的转动。STM32 控制器功能主要是与上位机进行通信,接收命令数据以便设置舵机的起始角度、步进间隔和终止角度,根据上位机的驱动命令步进舵机并回复执行结果。系统将从雷达处将接收到的数据经解码后得到方位角α、距离ρ和舵机的偏转角θ,按照(θ ,α,ρ)的格式存储到用户设置的txt文件中,作为后续数据处理系统的原始文件。
3 数据处理
为了提高数据处理的速度,简化点云处理的计算过程,以及进行离散的点云数据的可视化,基于MATLAB的GUI平台,建立专用的集坐标转换、点云数据处理以及数据成像的数据处理系统。点云处理系统组成如图6所示。
图6 数据处理系统框图
数据处理过程,导入上一阶段以(α,θ ,ρ)形式存储的txt文本文件,按照式(1)进行运算,转换为三维数据坐标(x ,y ,z)的形式,并以pcd的形式输出保存。此时pcd存储的即为原始的标准点云数据。
3.1 点云数据滤波
通过扫描仪得到的点云数量极其庞大,测量数据将达到数万个甚至数十万个点,庞大的数据量中包含有无法预料到噪声点。噪声点的来源主要是激光扫描硬件本身造成的误差,此外还与采集实际情况有关,如扫描区域中存在烟雾、颗粒、棱角等,这些对于点云匹配等后期的工作显然是不利的,因此,需要对数据点进行一系列的数据去噪,筛除噪声点。
为了去除数据中存在的噪声点,针对每个点的邻域进行了统计分析。针对点云中的每一个点,认为该点与其附近k 个邻近点之间的距离分布符合高斯分布规律,根据极限误差和置信概率来决定该点是否为离群点。
3.2 点云平滑及重建
在消除原始数据中的不规则点时,为了建立光滑完整的模型必须对物体表面进行平滑处理和漏洞修复。因此,针对滤波后的点云,建立KD-tree加快逐个点云数据的邻近数据搜寻,进而通过MLS(移动最小二乘法)进行重采样,进行光滑处理。
利用贪婪算法,动态设置三角网格的最大半径,进行三角网格重建点云轮廓。为了使用户能够进一步全面地观察最终成像,在该界面加入了3个滑块。当移动滑块时,获得当前滑块的位置,并转换成角度值,根据旋转轴和角度值创建4×4的转移矩阵,同时获取当前的点云位置,调用MATLAB 函数pctransform()得到旋转后的新的点云数据,从而实现点云数据在X、Y、Z方向旋转并刷新显示。
系统主界面如图7所示,“文件处理”按钮的回调函数实现转换数据格式并按pcd格式文件存储,“数据处理”中包含了主要的处理算法,“滤波”针对标准格式的点云进行滤波,并保存滤波结果。下拉栏可以对左侧图像区域进行操作,包含“清除”、“显示原始三维点图”等,对右侧图像区域进行“显示点云包络图”。包络图是最终渲染成像的结果,因此单独在右侧栏进行显示,与其他成像图进行直观对比。
图7 数据处理系统主界面
4 实验结果
在一个固定的50 cm×45 cm×28 cm的长方体中进行测试,先是对固定偏转角α为90°进行2D激光雷达测试,扫描截面为50 cm×45 cm。获得三维点数据成像结果如图8所示。
图8 2D激光雷达扫描测试图
计算求得的长度为Ly=495.88 mm,Lx=457.19 mm。根据实验结果可知,2D激光雷达的测量准确度较高,雷达的采样率高达5 000 次/s,测量速度快,有效测量半径为0.15~8 m。雷达的良好性能确保了后续的三维建模。
设计3D激光扫描仪实物图如图9所示,云台顶端搭载2D激光雷达,云台后半部分为基于STM32的控制器,包括无线传输设备、舵机控制部分;上位机在PC 端上实现对扫描仪的控制,并进行数据处理。
针对一中空的长方体作为扫描实例进行验证。设置扫描范围为x>0部分,扫描示意图如图10所示。
原始扫描点云数据如图10所示,扫描物体外围存在一圈噪声点。经统计滤波器滤波之后,距离较远的离散数据点被滤除,实际扫描物体被较为完整地保存,如图11所示。滤波结图7数据处理系统主界面果显示,点云数据从34113个减少到33900个。图12为滤波数据通过移动最小二乘法进行光滑之后,采用贪婪三角网格算法进行重建的示意图。比较图12的重建结果和图9的实物图,可知扫描物体重建效果良好。
图10 原始离散点云图
图11 滤波后离散点云图
图12 点云重建图
上述实验结果表明,本文设计的三维扫描仪能够对一般的三维场景选定范围进行重建分析;数据处理系统可以针对采集到的数据进行一系列的离散滤波、平滑处理,最终实现对扫描场景的重建。
5 结论
本文基于2D激光雷达和云台装置,设计了一种三维扫描仪。结合基于MFC设计的控制系统,实现对指定区域内的数据采集,通过推导的坐标变换关系,将坐标转换到全局坐标系下,实现对三维数据的采集和存储。同时,基于MATLAB软件中的GUI工具设计的数据处理系统对采集到的原始数据进行了预处理,利用滤波器剔除点云中的离群点来实现降噪,针对扫描中的漏洞采用最小二乘法进行拟合平滑处理,利用贪婪网格法进行三角网格重建,绘制点云轮廓,根据预处理后的数据进行了三维重建,最终显示在数据处较低的环境,能够较好地进行三维重建。
推荐培训:
《激光雷达核心技术培训课程》将于10月25日至27日在无锡举行,本课程邀请优秀讲师,传授核心技术,主要包括八项内容:(1)激光雷达技术综述;(2)机械式激光雷达和OPA激光雷达核心技术;(3)MEMS激光雷达核心技术;(4)面阵(Flash)激光雷达核心技术;(5)FMCW激光雷达核心技术;(6)激光雷达核心元器件之驱动芯片:脉冲式激光雷达接收与发射驱动芯片;(7)激光雷达核心元器件之光源:高功率EEL/VCSEL和1550nm光纤激光器;(8)激光雷达核心元器件之光电探测器:PIN/APD/SPAD。如果您有兴趣,请联系:
麦姆斯咨询
联系人:彭琳
电话:17368357393
邮箱:PENGLin@MEMSConsulting.com