基于激光雷达原理的三维扫描系统

发布时间:2019-04-15 10:18:30

基于激光雷达的三维扫描系统



基于激光雷达原理的三维扫描系统,是以一种基于结构光扫描原理的激光雷达为基础,通过使线激光器发出的线激光在被扫描物体表面扫描,摄像头便可接收到物体上不同位置的线激光的照片。然后提取出成像照片中物体上的线激光每一点的二维坐标吗,由已知量利用三角法可得到线激光中一点到摄像头的距离,由此距离值便可将线激光中这点的位置表达在根据摄像头位置建立的世界坐标系中。每一次扫描可得到一条线激光上若干点的空间位置信息,整个扫描过程结束就可以得到被扫描物体若干点的空间位置信息,根据这些点的位置信息可还原出被扫描物体的三维形状。本系统中以STM32单片机作为下位机控制激光扫描提前照片中激光线的坐标,并将当前提取的激光线在照片中的坐标通过串口传入上位机MATLAB程序。 上位机接收到激光坐标数据后进行三维还原运算,计算出每一个激光点对应空间中的三维坐标,之后进行三维作图,还原出物体的三维形状。

关键词: 激光扫描;三角法;三维成像

一、 作品创意 1

二、 方案论证与设计 1

三、 原理分析与硬件电路图 2

1.几何建模与算法分析 2

2.硬件电路设计原理及分析 6

四、 软件设计与流程 7

五、 系统测试 8

六、 作品难点与创新 10

七、 总结 11

参考文献: 12



1、作品创意

激光雷达在机器人自主导航和三维测量领域具有广泛的应用。特别是在机器人导航,激光雷达可以说是一双机器人的眼睛,没有它机器人就成了瞎子,如果要实现机器人自主导航,激光雷达是必不可少的。

导航中使用的激光雷达用于对周围环境成像从而选择路径以及避开障碍。这就需要激光雷达对周围物体成三维立体影像,从而获取周围物体的距离位置信息。由于在机器人导航领域,对于雷达的体积和质量的要求较高,所以目前在导航领域用的激光雷达主要采用的光脉冲往返时间测量和连续光的相位差测量方式。虽然在性能上已经满足要求,但是这样的设计方案对硬件要求很高,从而硬件成本很高,很难普及到工业与民用机器人平台。三维测量领域同样也是如此。

本题目提出一种低成本的激光雷达设计方案,即结构光扫描测量法,主要应用于slam导航和三维测量,在保证性能的同时,降低很多成本。

2、方案论证与设计

1.本系统需要在底座安装电机,电机轴上固定一个装有摄像头和激光笔的连杆用于带动二者一起转动。在电机转动的过程中,摄像头根据设定频率进行拍照。关于电机的选择有如下两种方案:

方案一:步进电机。步进电机是将电脉冲信号转变为角位移或线位移,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数。即给一个脉冲信号,电机转过一个步距角。步进电机存在周期性的误差,且他必须由双环形脉冲信号、功率驱动电路等组成控制系统才能使用。

方案二:舵机。舵机的控制控制信号由接收的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,时的电压差为0,电机停止转动。舵机是一种位置(角度)伺服的驱动器,适用于需要角度不断变化并可以保持的控制系统。

方案选择:由于本系统中,在将二维坐标转换为三维坐标的过程中,需要电机转过的角度的比较精确地信息,而舵机在这方面更具优势,最终选择舵机。

2.在得到激光在照片中的二维坐标后,通过串口传至上位机MATLAB进行相应的数据处理得到空间三维坐标,进行三维成像。关于成像方案有以下三种:

方案一:利用MATLABsurf函数作图。该函数相当于建立了一个横坐标个数乘以纵坐标个数的网格图,然后在交叉点上加上相应的空间信息,凸显出空间的特征。该函数需要的数据量比较大,并且存在噪声问题,会使得三维成像出现一定的失真。

方案二:利用plot3函数作图。该函数是将(X,Y,Z)三维坐标以散点的形式打在三维坐标中,散点是实心的小点,从而可以比较清晰的看到物体的外轮廓,即三维成像效果。

方案三:利用scatter3函数作图。该函数也是将(X,Y,Z)三维坐标显示在三维坐标中,只是打出的点是较大的小圆圈,这样整个立体图更加密集完整,三维成像效果更好。

方案选择:根据成像实验效果最终选择了方案三。

3、原理分析与硬件电路图

1.几何建模与还原算法分析

基于激光雷达原理的三维扫描系统的基本原理是根据光路反射形成的相似三角形对,从已知的三角边长根据相似关系求得物体到雷达的距离。

简单的二维结构光扫描就是以点激光成像来测量物体的距离。其原理如图1所示。

1:二维结构光测距几何模型

如图1中所示,激光发射器(Laser)发出激光照在物体(Object)上,物体上的激光点在CCD中成像。由于这里的光线是漫反射而不是反射情况所以入射光线和反射光线关于水平线不对称。对摄像头采取小孔成像模型分析。由图中相似三角形关系得:

q/f=s/x 1

d=q/sinβ 2

其中:

s :激光发射器到摄像头中心距离;

f 表示摄像头焦距;

β:表示激光发射方向与竖直方向夹角且是是固定的;

x :像点到CCD另一测边缘的距离需要从图像中读取;

这样,由等式(1)(2)就可以求得物体距离激光发射器的距离d。当此系统旋转时就可以获得一条线上各点距离激光发射器的距离。

由二维扫描原理很容易得到三维扫描的原理,即将点激光换成线激光。以线激光打在物体上同时测量这一条线上各个点到激光器的距离,这样,整个系统旋转扫描就可以获得前方物体整个面的各个点到激光器的距离,经过换算就可以得到三维的立体画面。三维扫描示意图如图2所示。图2中坐标系是随舵机旋转的以摄像头O为中心的坐标系,图3所示的是图2中随舵机旋转的坐标系与固定的空间坐标系的位置关系。

2:三维激光扫描几何模型

如图2所示,o点是摄像头的光心,将成像CCD面以o点对称翻折到o’点位置。L点是线激光发射器位置,ɑ角是线激光发射器发出的激光面与X轴夹角,固定不变。线激光打在前方物体上一条线BD。在打到物体的线激光中假设B点与成像在CCD上的b点连线Bb位于水平面XOY中,既二维扫描模型。d点位于b点正下方,成像在CCDd点。由图中三角形关系可得,三角形oAB相似于三角形boo’,三角形oAD相似于odd。与二维扫描类似,由已知长度oo’b点坐标、oA即可求出B点到oL距离AB。对于DL,在相似三角形oAD相似于odd中,od距离可由oo’d点坐标确定,则AD长度可由相似关系求出。

本算法分析如下,其中B点是xoy平面内的一点,主要根据B点的相关信息求得任意一点的坐标值,分析过程是以D为对象来进行。

首先可以确定出照片中的d点坐标(x,y,可以得出如下关系式:

3

d’为激光点DCCD成像的点dy轴上的投影,其中摄像头的分辨率是240*320o’d’即为d点在CCD上沿y轴方向的长度。

而在直角三角形中oo’d中存在如下关系:

(4)

由图可知,三角形boo’与三角形oAB相似,故存在如下比值关系:

5

其中f为摄像头的焦距。

进而可以得出oA的关系式为:

6

而在直角三角形ABL中:

(7)

由等式(6)(7)可以求出AB的关系式为:

8

由等式(4)(8)可以进一步推算出oA的关系式:

9

由于三角形oAD与三角形odd’相似,可得:

10

而由d点的坐标可得dd’的关系式:

11

在直角三角形ABD中,BD的长度可由下列等式求得:

12

由等式(8)(9)(12)可以得出D点在当前随舵机旋转的空间三维坐标系中的坐标为:

(13)

接着将求出的坐标转换到柱坐标系中,先分析r这两个参量:

14

然后将当前随舵机旋转的柱坐标系转换到固定的世界柱坐标系中,其中角β是当前旋转的坐标系与固定的世界坐标系中 x轴的夹角:

15 式(15)即为三维成像中所应用到的固定世界坐标系中的坐标。

3:随舵机旋转坐标系与固定世界坐标系关系示意图

2.硬件电路设计原理及分析

1)硬件驱动系统

硬件驱动系统主要的功能是实现舵机对激光器与摄像头的转动控制。驱

动电路中主要用到两个芯片。单片机型号:stm32f103rbt6,实现与计算机

之间的通信及发出对舵机、激光笔以及摄像头的控制信号。驱动芯片:

uln2803a,是一款高压大电流达林顿晶体管阵列电路,系统中主要用于对

激光笔和舵机的驱动。

2)摄像头

系统中应用到的摄像头型号为:PTC08。该摄像头在图像采集、拍摄控制、

数据压缩和串口传输方面都很具优势,其内置的高性能数字信号处理芯片能很

好的实现对原始图像的高比例压缩,输出标准的jpeg格式。该摄像头在拍摄过

程中对环境的抗干扰能力较强,由于三维成像需要收集到最大的激光点信息,

故对于数据采集的要求相对较高。而一般的的摄像头需要在较黑暗的情况下才

能采集到较好的信息,该在摄像头在普通的环境下就能较好的获取激光点的信

息。

4、软件设计与流程

整个系统的软件分为控制部分和数据处理与显示部分。

控制部分是由单片机控制来完成。主要控制内容包括调整舵机的转动角度,控制就激光笔的开关以及摄像头的拍照频率,在控制的过程中同时提取拍得的照片中激光的坐标并将坐标数据通过串口传至上位机MATLAB

单片机中程序流程图:

4:单片机程序流程图

数据的后期处理与显示则是通过MATLAB完成,在接收到数据后先对数据进行处理,经过还原运算得到相应世界坐标系中的的空间坐标,然后将得到的坐标显示在MATLAB GUI界面中的三维坐标系中。MATLAB程序流程图如下:

5matlab程序流程图

为了方便整个系统的连续运行以及作图的实时显示,用MATLAB做了上位机图形用户交互界面,如图所示:

6MATLAB上位机界面图

5、系统测试

为了能够实时观测整个系统的运行状态,设计了单片机液晶显示功能。主要完成将摄像头采集到的图片信息并将提取出的激光坐标点显示在白屏上。,作用在于能够检测摄像头的正常工作以及观察激光坐标提取的准确性。在整个过程中,舵机每转动一次,摄像头拍照一次,单片机控制将拍照信息显示在液晶上,由此能判断摄像机的正常运行。接着是将采集到的激光线以打点的形式显示在液晶上,通过判断激光线位置与原照片中位置的差异,可以判断坐标提取的的是否准确和完整。在整个测试过程中,通过判断相关信息,整个系统的运行状态是比较顺利和可靠的。

分别对笔筒和工艺品小葫芦进行了三维扫描测试,效果图如下面三图所示:

7:笔筒扫描效果图

8:小葫芦扫描效果图

9:上位机界面测试效果图

6、作品难点与创新

1. SD卡读取

由于在系统设计中,限于单片机STM32F103RAM的限制,不可能将每次从摄像头获取的JPG格式的图片存在RAM中,必须要先存储到SD卡中再进行后续的解码及提取坐标操作。同时为了方便调试,需要在电脑上读出SD卡中存取的照片进行分析。为了实现上述功能,必须要对SD卡植入与Windows相兼容的文件系统。通过反复对比试验,最终选择了一款小巧方便的fatfs文件系统。

FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80, 68K 等等,而不需要做任何修改。将FatFs移植到STM32平台需要修改与底层相关的IO文件以及操作读写SD卡的基本通信函数。

2JPG图片解码

本系统中使用的是一款以UART方式输出压缩后的JPG格式图片的摄像头。它的好处是可以以较小的存储空间获取到整幅图片的信息。然而,其缺点是在进行图片处理之前需要对其进行解码到RGB色彩空间,既得到每一个像素点的RGB信息。

同样由于单片机RAM的限制,想整幅图片一起读入RAM再进行解码是不实际的。因此,我们在设计中采取JPG解码与fatfs文件系统配合的策略,以数据流的方式将SD卡中图片数据读入单片机中缓存数组中,再对这一段图片数据流进行解码。这样可以大大节省系统资源的消耗,同时取得较好的效果。

3.系统还原算法的创新

本题目设计的基于结构光的三维扫描系统是一款功能相对完善,同时制作成本比较低廉的低成本系统。为了以这些低成本的元器件实现三维扫描的功能,我们设计了相对简单易于实现且资源消耗少的三维还原算法。创新点主要在三维建模的算法设计上,本算法根据已知激光点在CCD中成像的位置和整个扫描空间中激光光路的三角关系,来计算得到物体上激光点的三维位置信息。整个算法涉及到的变量相对较少,算法的运算量较小简单可靠,大大减少了系统运算开销。同时,经过验证本系统具有一定的鲁棒性,系统微小的偏差对结果的影响并不大。

7、总结

本题主要是设计一种低成本的容易实现的三维扫描系统,应用于SLAM导航和三维成像领域的。利用激光点在成像平面上的位置和激光从激光器到成像平面之间的几何光路可以,计算出激光器到目标表面激光光斑之间的距离,然后根据几何关系可以将这个距离关系转化成空间坐标关系,通过matlab进行绘图成像。

该题最重要的也是最关键的问题就是三维成像。三维成像最重要的是确定扫描物的三维坐标,在经过反复推算和验证后,我们找到了一种思路相对简单处理过程相对精简的算法。该算法主要特征是将旋转的坐标系中的点转换到世界坐标系中,整个过程设计到的主要变量是舵机的旋转角度,而该变量又能由单片机控制,所以整个过程处理起来相对简单。

在整个三维扫描系统的实际制作中,特别要注意激光器和摄像头的安装,如果安装的不牢固,就容易出现在舵机旋转扫描过程中出现松动,进而影响计算模型的固有参数发生改变,导致出现测量误差变大。

参考文献:

[1] 李磊,叶涛.移动机器人技术研究现状与未来[J].机器人,2002,9 : 475-480.

[2] 邵双运.光学三维测量技术与应用[J]. 现代仪器,2008,3 : 10-13.

[3] .国外激光测距与雷达发展概况[J].应用物理.1972,11 : 104

[4] 郑永超,赵铭军.激光雷达技术及其发展动向[J]. 红外与激光工程,2006,10 :

240-246.

基于激光雷达原理的三维扫描系统

相关推荐