《自制激光测距仪》word版

《自制激光测距仪》word版

ID:22721191

大小:428.50 KB

页数:15页

时间:2018-10-31

《自制激光测距仪》word版_第1页
《自制激光测距仪》word版_第2页
《自制激光测距仪》word版_第3页
《自制激光测距仪》word版_第4页
《自制激光测距仪》word版_第5页
资源描述:

《《自制激光测距仪》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、激光:基于摄像头的激光测距仪2009-02-2321:45介绍有很多现成的测距组件包括超声波、红外线、甚至是激光测距仪。这些设备运行的很好,但是对于飞行机器人来说,重量是一个主要考虑因素。一个可行的办法是增加现有组件的功能,并安装在机身上。例如微型空中机器人的有效载荷是100g。它能利用USB连接的摄像头(或mini无线摄像头)执行视觉任务,例如避障等。更好的是,如采用两个摄像头,能提供立体的机器视觉,这样能增强避障性能,因为双镜头提供了视觉深度。但缺点是需要增加另外一个摄像头的重量。这篇文章就是讨论

2、如何利用一个激光笔和一个摄像头来提供一个单镜头机器视觉和测距的。这个项目很大一部分是基于下面这个教程的http://www.eng.buffalo.edu/ubr/ff03laser.php工作原理下图显示了如何将激光点投射到目标物上,并在摄像头上显示。摄像头和激光点的距离是可以通过计算而得出的。公式很简单,因此这个技术在需要很快运行的机器视觉应用上是适合的。介绍一下工作原理。一束激光被投射到目标物上,并在摄像头上被显示。激光束被认为是理想的平行于摄像头的中心光轴。激光点由摄像头的其余部分所捕获。一个

3、简单的计算就是寻找最亮点。如果设激光点就是这个场景的最亮点(似乎在室内我的激光发射器确实是最亮的),那么这个点的位置在图帧中的位置是确定的。然后我们只需要计算这个点在沿着y轴的距离,就能计算出目标物离摄像头的距离,激光点距离中心越近,离目标物越远。如同公式所示,距离D是可以被计算出来的。为了计算这个等式,我们需要知道激光器和摄像头之间的距离h,这是个常数,还有角度,角度可以计算。其中:pfc=从焦平面到中心的像素数量rpc=单个像素的弧度ro=弧度补偿(弥补对齐错误)代入上式,我们得到:这样,从图像中

4、就能将焦平面到激光点像素数计算出来。那其他的常数怎么办呢?我们需要执行一个校准来得到这些数据。为了校准这个系统,我们需要收集一系列测量的数据,每次测得的目标物的距离和这个激光点离中心点的像素数。数据如下校正数据pixelsfromcenteractualD(cm)1032981456558557149904510941127391593718935218使用下面的公式,我们能够利用激光器和摄像头之间的距离h和真实距离计算出真实的角度:θactual=真实角度Dactual=真实距离(测量得出)现在我们

5、有了公式中的每个数值,我们可以利用一个关系式来计算点离中点的像素数。我用了一个线性关系式。这个公式看起来很有用,……从我的校正数据中,我计算出:Offset(ro)=-0.056514344radiansGain(rpc)=0.0024259348radians/pixel使用:下表是列举了根据上面ro和rpc值计算出的距离值,实际距离值和误差:RoboticFan实际和计算的测量数据pixelsfromcentercalcD(cm)actualD(cm)%error10329.84292.88814

6、1.4645-7.876557.5558-0.785575.81716.774993.57903.9645110.851091.7041135.941277.0439153.27159-3.6037175.66189-7.0635205.70218-5.64所需零部件我的测距仪没有多少部件。我使用一块硬纸板来固定激光发射器和摄像头。摄像头和激光发射器被平行的布置在一起。我组装的测距仪是这样的软件我通过两个方式编写了这个软件,一个是vc++,一个是VB。你能发现VB版本的软件会比VC++的软件更容易一些

7、,但是各有取舍。VC++版本能够自由的加入其他软件中?VB版本需要第三方软件支持(在VisualStudio中)VisualBasicvb_laser_ranger.zip这里可以下载到我的VB版本软件。要使用上面的程序,你必须要安装VideoOCXActiveX控件主程序如下:PrivateSubexit_Click()'onlyifrunning...If(Timer1.Enabled)ThenTimer1.Enabled=False'StopTimerVideoOCX.StopVideoOCX.

8、CloseEndIfEndEndSubPrivateSubStart_Click()'InitVideoOCXControl,allocatememoryandstartgrabbingIf(NotTimer1.Enabled)ThenStart.Caption="Stop"'DisableinternalerrormessagesinVideoOCXVideoOCX.SetErrorMessagesFalse'InitcontrolIf(NotVide

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。