基于激光扫描的体积测量系统①
2020-04-24卿粼波吴晓红何海波
张 巍,卿粼波,吴晓红,何海波
1(四川大学 电子信息学院,成都 610065)
2(成都西图科技有限公司,成都 610041)
随着国家经济的快速发展,各行各业对于体积测量的需求程度正在迅速增加.快速准确地测量物体的体积对于提高工作效率,促进行业发展甚至增加国民效益至关重要.例如矿产等大型仓储企业,需要对储存的物料资源进行准确快速地测量,以便合理地安排生产计划[1];货站等大型物流企业,需要对货物的重量和体积快速准确地测量,以便安排车辆或飞机的装载计划.采用传统方法进行人工测量,不仅效率低、精度差、测量不便,还会造成重复测量[2].因此采用机械化、自动化的测量方法对体积进行测量,既有利于简化生产流程,又有助于控制成本.
在众多对体积测量有需求的行业中,由于被测物体本身的特殊性,无法使用通用的测量方法或者通用的测量仪器,需要根据自身的行业特点改进或者设计适合于本行业的测量方法和测量设备.工程上常用的方法是通过采集被测物体的三维信息,利用微积分的数学思想对被测物体的体积进行计算.目前采集被测物体三维信息的方法主要有4 种:1)运用超声波对整个物体进行扫描[3,4];2)基于机器视觉实现待测物体的图像获取,通过图像处理算法得到物体的三维特征[5,6];3)基于三角测量原理,检测激光投射到被测物体表面产生变形的程度,计算被测物体的三维点云信息[7-9];4)运用激光扫描仪扫描物体表面,获得扫描区域的三维点云信息[1,10,11].其中因为激光具有速度快、方向性强等特点,运用激光扫描仪在环境条件较为恶略的情况下依然能够以较小的误差完成对被测物体的测量.
综上所述,推广基于激光测量的体积测量系统有利于提高相关行业的工作效率和发展水平.因此本文设计并实现了一套基于激光扫描仪的物体体积测量系统,用于测量物流货物的体积.该系统基于二维激光雷达,将其搭载于伺服电机驱动的平动装置,采用非接触的测量方式,实现对场景内所有货物的表面进行匀速扫描;得到货物的三维信息后,运用离散积分算法计算货物总体积.该系统的优点是,测量速度快、稳定性好,单次扫描后可测得整体货物的体积,在航空、物流等行业能够广泛应用于体积测量.
1 系统的总体方案设计
本文设计的系统采用激光扫描仪通过非接触的方式对物体进行快速准确的体积测量,测量得到的体积数据通过网络与其他系统进行共享.该系统主要满足以下需求:1)操作界面可视化,仅通过少量按钮就可以完成对整个系统的操控;2)速度快,精度高,在距离物体摆放平面约5 至6 米的高度,以每秒0.5 米左右的速度完成扫描,体积测量误差不大于5%;3)体积数据易被观察,通过显示屏等设备将测量结果予以显示;4)体积数据可上传至服务器,与其他系统实现数据共享;5)重构被测量物体的三维图像,以三维图像的方式显示扫描过程中扫描区域的情况.
针对上述需求,设计得到的系统整体结构示意图如图1 所示.该系统主要由PC、电机控制单元、二维激光雷达、伺服电机、数码显示管、状态指示灯和远程服务器构成.伺服电机驱动二维激光雷达做直线运动,对物体进行均匀扫描;PC 机采集激光雷达返回的数据,结合伺服电机的运行速度,得到被测物体的三维点云信息;PC 机再对这些信息进行处理,计算得出被测物体体积,随后将体积数据予以显示并且上传至服务器.
图1 系统整体结构示意图
为了增强模块的独立性和降低代码与数据的耦合度,将系统的各项功能进行划分与整理,主要包括:串口通信模块、网络通信模块、流程管理与控制模块和参数配置模块.软件系统结构框图如图2 所示.其中串口通讯模块的主要功能是配置串口通讯相关的参数,并提供用于通过串口收发字符消息的接口,下位机控制模块使用这些接口向下位机发送控制命令,数码显示控制模块使用这些接口将体积数据发送至数码管;网络通讯模块的主要功能是创建套接字,通过这些套接字,数据采集与计算模块接收激光扫描仪采集得到的数据并计算体积,而数据传输模块将体积测量结果发送至远程服务器;图形重绘模块将采集得到的点云信息重新建模;参数配置模块提供了创建、读取配置文件的函数接口,为降低代码与数据的耦合度提供了解决方法;界面绘制与流程控制模块向软件使用者提供了一个友好的交互界面,同时在检测到某个按键命令下达之后,完成软件系统各模块的协调与配合.
图2 系统结构框图
2 货物体积的计算
激光扫描仪由伺服电机驱动,匀速地扫描被测场景.上位机采集激光扫描仪返回的测量数据,生成被测场景的三维点云信息.货物体积由点云数据计算得出.本节首先介绍该系统所使用的激光扫描仪,然后阐述计算原理与方法.
2.1 激光扫描仪
本文设计的系统所采用的激光测量传感器是德国SICK 公司的LMS111 二维激光扫描仪.该传感器是一种光电激光传感器,基于时间飞行原理,使用激光束在某个平面内扫描周围的环境.LMS111 使用二维坐标描述其测量得到的周围环境——如果激光束入射到物体上,则以距离和方向的形式给出物体的确定位置.
在距离测量方面,LMS111 使用激光二极管发射脉冲激光束.激光脉冲入射到物体时,会在其表面发生反射.LMS111 的接收器使用光电二极管检测反射激光.基于“脉冲传播时间测量”原理,传感器到物体的距离根据激光的传播时间计算得到.该传播时间是指从发射激光到接收反射之间的时间t,如图3 所示.
图3 “脉冲传播时间测量”原理
在方向测量方面,LMS111 使用镜面使发射的激光束偏转.激光束按照角度编码器的约束逐步地以扇形方式扫描周围环境,最大扫描范围270°,扫描频率为25 或50 Hz.在测量过程中,激光脉冲以0.25°或0.50°的角度步长被触发.
随着测量距离的增加,LMS111 的激光束会渐渐发散,入射到物体表面上的光束大小随之增大,如图4 所示.相邻光束之间的间距也随着距离的增加而变大,并且角度分辨率越松散,间距越大,角度分辨率越紧密,间距越小,如图5 所示.因此,激光扫描仪的测量精度会随着与被测量物体之间的距离增加而降低.
图4 光束发散示意图
图5 不同角度分辨率下测量点之间距离的示意图
2.2 体积计算
(1)标定首先对物体所在平面进行标定.激光扫描仪测量得到的是物体和传感器之间的直线径向距离l,为了描述物体的高度信息,需要获得物体所在平面的一组基准高度H1,H2,···,Hn,如图6 所示.
图6 标定示意图
由于扫描仪在电机启动时,位移速度逐渐增加,相邻两组测量数据之间的位移距离不易求出,所以这段时间内的扫描数据不易用于计算物体体积.然而,电机启动时速度较慢,这段时间内产生的数据近似可以看作是对初始位置的多组重复扫描,因此这些数据可以用来标定物体所在平面的基准高度.
具体的标定方式为:对扫描仪启动时采集的前5 组数据的对应测量点求取平均值,作为扫描仪到该平面的基准径向距离L1,L2,···,Ln;将基准径向距离根据角度值转换成高度信息即可标定该平面初始位置各测量点到扫描仪所在平面之间的距离H1,H2,···,Hn.
(2)计算
物体体积计算的基本原理是通过建立被测物体的三维点云信息,运用离散积分运算求得被测物体的体积.二维激光雷达对物体进行单次扫描时,扫描区域为扇形,如图7 所示.
图7 扫描区域示意图
单次扫描得到的距离信息是激光雷达中心到物体上表面某点的径向距离,需要根据角度与距离之间的关系得出物体上表面该点的高度信息,计算公式为:
同一扇形截面相邻两点之间的距离可以通过距离信息和激光扫描仪的角度分辨率求得,计算公式为:
相邻扇形之间的间距根据扫描仪的运行速度可以求出.其中,l1,l2,···,ln表示测量点到激光扫描仪的径向距离,h1,h2,···,hn表示测量点到激光扫描仪所在水平面的垂直距离,θ1,θ2,···,θn表示测量点与激光扫描仪中心的偏移角度,α 表示激光扫描仪的角分辨率,d1,···,dn-1表示同一扇形区域内相邻两测量点之间的间距.物体体积计算公式为:
其中,w 代表相邻两个扇形之间的间距.
3 系统的实现与测试
该系统主要由测量管理与控制、测量场景重绘和数据采集与体积计算等功能构成.首先介绍测量管理与控制的流程,并展示测量场景的重绘效果;然后针对不同的货物摆放方式,设计了几组试验,用于验证该系统的测量精度;最后,对于试验中发现的问题予以分析.
3.1 界面与软件流程
软件的整体控制流程图如图8 所示.根据系统功能需求设计软件界面和所需要的输入与输出接口,软件界面如图9 所示.其中,“扫描”、“结束”、“撤销”和“图像”4 个按钮用于用户对本系统下达控制命令;体积用于显示测量所得物体体积;提示信息用于显示当前系统所处的状态.
图8 软件流程图
图9 软件界面
在扫描过程中使用了多媒体定时器采集数据.这样做的好处是,在接收激光扫描仪发送给主机的信息时,同时可以响应操作界面产生的新的事件,使得在扫描过程中撤销或者结束当前扫描的指令可以被执行;多媒体定时器的定时精度更高,使得系统能够以严格的时间间隔采集数据.考虑到激光扫描仪最大的扫描频率可以达到50 Hz,即每20 ms 完成一个扇形截面区域的扫描,所以将多媒体定时器设置为每20 ms 请求一次测量数据.
图形重绘功能借助Matlab 强大的图形处理能力得以实现.使用激光扫描仪采集得到的点云信息,完成对被测物体的三维图像绘制.首先在Matlab 编辑器中编写用于重绘的函数,函数流程如图10 所示.
图10 图形重绘函数流程图
为了使C++程序可以方便地调用这段代码,使用Matlab 所提供的Deployment Tool 工具将.m 文件编译为Windows 可执行文件,即.exe 文件.图形重绘的实现效果如图11 所示.
图11 三维重建立体图
3.2 对比试验
(1)物体大小对于测量结果的影响
首先对少量物体的总体积进行测量,随后再逐渐增加被测物体的数量.需要注意的是,所有货物均摆放在激光扫描仪扫描轨道的正下方,以避免因为货物摆放位置的不同而影响试验测试结果;同时,为了避免摆放方式不同可能造成的测量误差,所有货物均平行摆放于同一平面.试验结果如表1 所示.
表1 对比试验1 的测量结果
(2)货物是否规则摆放对于测量结果的影响
在实际测量中,货物之间可能并没有全部都摆放整齐,从俯视角度看可能会出现如图12 的摆放情况.
图12 不规则摆放货物示意图
设计对比试验来测试在这种情况下对货物进行体积扫描所造成的误差是否较大.首先将货物平行摆放于地面进行体积测量,再移动货物使其之间的角度为任意值,对其进行扫描,得到的测试数据如表2 所示.
表2 对比试验2 的测量结果
(3)堆叠摆放方式对测量结果的影响当货物较多或者货物较大时,为了能一次性的测量更多的货物的体积,加快测量效率,往往需要将货物堆叠摆放.但是在堆叠摆放过程中,可能出现上下两层货物摆放并没有完全对齐的情况,如图13 所示.
图13 两层货物未对齐摆放的示意图
针对这种情况本文设计了对比试验,分别测量上层货物与下层货物对齐摆放的情况和上层货物较下层货物摆放更加紧密的情况,测试数据如表3 所示.
表3 对比试验3 的测量结果
(4)试验结果分析
通过对以上各试验的分析,得到如下的一些结论:
1)对比试验1 说明:无论被测物体体积较大还是较小,测量的总体误差都可以控制在1%以内;
2)对比试验2 说明:虽然对不规则摆放的物体进行扫描时会造成比扫描规则摆放物体更大的误差,但是扫描的整体误差还是处于可控制的范围之内,总体误差小于2%,因此说明此系统可以运用于对摆放不规则的物体进行体积扫描;
3)对比试验3 说明:在测量堆叠货物时,货物摆放要尽量边缘对齐,造成误差的主要原因是光线沿直线传波,较高的货物旁边将会出现“扫描盲区”,如图14 所示,使得处在盲区中的货物没有被扫描到,导致扫描的体积数据偏小;即使如此,造成的整体误差仍然低于5%,说明系统仍然可以适用于此种情况.
图14 扫描盲区示意图
4 总结
本文设计并实现了一套基于激光扫描仪的物体体积测量系统的软件程序,该系统满足了所设计的功能需求:在高度为5 至6 m 的位置,以约0.5 m/s 的速度完成对被测物体体积的扫描,整体误差可以控制在5%以下;测量得到的体积数据可以准确的传输至服务器;软件界面可视化,而且可以通过对扫描数据的三维重建直观的观察到所扫过区域的情况.本文设计的体积测量系统适用性更强,可以测量扫描区域中物体的总体积,具有广泛的应用前景.