链接:https://zhuanlan.zhihu.com/p/48589754

三维扫描仪有三个误差来源:

● 线性误差(激光雷达部分/LARA)

● 测距噪声(激光雷达部分/LARA)

● 测角误差(机械偏转部分)

它的硬件包括两个部分

1、激光雷达系统(The LAser RAdar system/LARA),它的作用是发射激光,测量激光飞行时间,计算被测物体的距离。

2、机械偏转系统(The Mechanical Deflection System),它的作用是引导激光束的发射方向。偏转系统通过激光反射镜(铅垂方向转动)以及旋转整个仪器(水平方向转动)来实现全方位测量。在极坐标系中扫描仪通过水平角与竖直角来确定激光束位置。

  1. 激光雷达系统(LARA)

每一次激光测距的读数都包含误差,这个是任何设备避免不了的。测距的误差包括两部分:稳定可预测误差与随机不可预测误差。可预测误差可以通过合适的校准程序来改正:

将扫描仪的激光测距部分固定好,激光束指向一个具有已知反射率的标靶板。标靶板固定在滑轮车上,并且滑轮车可以沿着激光束走向精确地固定在某一个位置。每一个位置“i”都会做10000次距离采样(测量距离与反射率)。整个程序会自动测出不同反射率、不同距离下的测距情况。

真实距离D(i)由更高精度的激光干涉仪测得,通过对比10000次距离采样的平均值与D(i)的误差值,即可计算出改正值。我们称之为“测距校准”。距离校准可在扫描仪实时测量的同时进行实时改正,这样就能提高激光测距系统的测距精度。然而经过校准后还会存在微小的误差,这个误差就是所谓的“线性误差”,线性误差可以用相同的校准程序进行测定。

1.1)线性误差

用以上程序校准过的扫描仪,通过以上的程序再进行距离测量,记录不同距离下的测距采样的平均值与标准差。对比不同距离下的采样均值与真实距离D(i),我们得到了不同距离下的测距残留误差。随着标靶距离的变化,误差曲线总是成“之”字型,不是一个线性变化,总是在0位置上下浮动,我们称这种误差为“线性误差”。

扫描仪标称它的线性误差小于等于1mm,意思是误差曲线在+/-1mm以内浮动。总的来说线性误差与被测物体远近是没有关系的,所以线性误差可以被看做一个常数。

线性误差是随机误差,不符合正态分布。小于1mm的误差值是通过对数百台的扫描仪测试而来。然而对于所有误差来讲,线性误差是毫无关联的随机误差,你可以按照均方根值(RMS)来看待。

1.2)测距噪声

所谓距离噪声是指,特定距离下的测距采样值与其均值(特定距离下的10000测距采样均值)的差值。它符合高斯正态分布,可以表征每次测距读数的分布情况,一般以1 Sigma表示。它的意思是所有采样值里有68.3%是在以平均值为基准±1Sigma以内的。对于正太分布来讲,1Sigma 即所谓的均方根(RMS/Root Mean Square),也就是扫描仪的测距噪声。

测距噪声是任何点云数据里都有的,例如我们随便找一块墙体或者地面的点云,从侧面查看点云,都有一定的厚度,而不是一条线,老外称之为“三明治”现象。点云的厚度取决于它测距噪声点的范围(±1Sigma包含68.3%的点云、±2Sigma包含95.5%的点云、±3Sigma包含99.7%的点云)。

影响测距噪声的主要因素是被测物体与扫描仪的距离、物体表面反射率。物体表面反射率越好,距离越近噪声越少;物体表面反射率越低,距离越远噪声越多。

对于Z+F 5010来说被测物体在25米处,表面反射率为37%的情况下,测距噪声(1sigma)为0.6mm RMS,反射率为80%情况下为0.5mm RMS;如果据被测物体增加到100m,测距噪声会相应增加到3.8mm,2.0mm。

对于所有数据获取速率高的扫描仪来讲,测距噪声受采集速率的影响很大。大家可以类比一下全站仪,全站仪测一个点是需要一定的时间的。因为扫描仪动辄每秒几十万点的测量速率,它没有足够的时间将噪点滤除掉。如果要对比不同扫描仪的测距噪声需要先确定其数据采集速率。相同采集速率下,对比出来才有一定的参考价值。

例如:

● 在100m处目标反射率37%,扫描仪A以127KHz(127000点/秒)的速率测出的数据,测距噪声2.8mm

● 在100m处目标反射率37%,扫描仪B以10KHz(10000点/秒)的速率测出的数据,测距噪声1.5mm

表面上看扫描仪B的测距噪声要小一点,但是考虑到数据采集速率,有如下算法可供参考:

●扫描仪A 标准化测距噪声==0.0107mm

●扫描仪A 标准化测距噪声==0.0150mm

所以说测距噪声的大小还是要考虑到当时采集数据的速率。

2)机械偏转系统

激光束的发射角度是根据反射镜的角度来测量的,激光束真实的发射角度与反射镜的实际角度并不是完全一样。这个误差我们称之为“测角误差”。测角误差又包括水平测角误差Eβ与竖直测角误差Eα。对于Z+F 5010来说水平与竖直测角误差都是0.007°RMS(0.122mrad rms)。

弧度(rad)是一个能清晰反映测角误差对于每个点位误差影响程度的单位,2π rad=360°即单位圆(半径为1m的圆)的周长。对于微小的角度来讲弧度即对应该弧度的弧长。例如1mrad 的角度误差,反映到点位误差上即距离增加一米,误差增加1mm。所以0.122mrad的角度误差,在距离10米处的点误差为1.2mm,在50米处误差为6mm,在100米处误差为12mm。

在做扫描仪偏转系统的校准的时候,每个台扫描仪都会扫描一个独立的校准场。通过测量校准场内的目标,并与目标的实际位置进行对比,即可得到每台扫描仪的测角误差。有了这些测角误差就会相应的生成一些实时改正参数。至于这些误差如何计算并如何实时改正的,每个厂家可能都不一样。

通过对测量数据的统计分析,测角误差也包含平均误差与标准差。只有平均误差可以通过校准程序改正。随机误差是无法校准的,只能通过标准差(RMS)来标出来。标准差即正太分布中的1Sigma。所以测角误差为0.007°的意思是有68.3%的激光束角度误差小于等于0.007°。因为所有点云(直角坐标系)都是通过极坐标计算出来的(两个角度一个距离),所以角度误差肯定会传递到点位误差上。很明显角度误差在距离较远时对点云的三维误差影响很大。

基于以上分析,测角误差是一个重要参数。但是很多厂家(代理商)只标注仪器的角度分辨率。角度分辨率是机器能识别的最小角度,和测角精度毫无关系。

Z+F激光扫描仪的更多相关文章

  1. z+f profiler 9012

    角度分辨率/角度精度 0.0088°/0.02°RMS

  2. z+f数据解析

    1.先打开cmd2.把D:\qcc\编译和解析\debug_jiexi\SampleZFS.exe 拉进来.3.SampleZFS.exe -i *.zfs -o D:\*.txt 注意:*号代表文件 ...

  3. 变量的解构赋值////////////z

    变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 用途 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值, ...

  4. 【最大流】ECNA 2015 F Transportation Delegation (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: N(N<=600)个点,每个点有个名字Si,R(R<=200)个生产商在R个点上,F(F<= ...

  5. Opengl4.5 中文手册—F

    索引 A      B    C      D     E     F     G H      I     J      K     L     M     N O      P    Q      ...

  6. AtCoder Regular Contest 067 F - Yakiniku Restaurants

    题意: 有n个餐厅排成一排,第i个与第i+1个之间距离是Ai. 有m种食物,每种食物只能在一个餐厅里吃,第j种食物在第i个餐厅里吃的收益是$b[i][j]$. 选择每种食物在哪个餐厅里吃,使收益减去走 ...

  7. Problem D: 求(x-y+z)*2

    Description 编写一个程序,求解以下三个函数: f(x,y,z)=2*(x-y+z) f(x,y)  =2*(x-y) f(x)    =2*(x-1) 函数调用格式见append.cc. ...

  8. Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) F 构造

    http://codeforces.com/contest/967/problem/F 题目大意: 有n个点,n*(n-1)/2条边的无向图,其中有m条路目前开启(即能走),剩下的都是关闭状态 定义: ...

  9. F# 图形数学基础。

    这几天,在看Unity3D,很有意思,其中看到,第一人称控制器,就想看到里面的一些控制脚本是如何实现,才发现,学到的好多数据知识已经还给老师了,还好,走遍大江南北,跟着的书不多,唯一的二本高数没丢. ...

随机推荐

  1. Linux shell 中 & && [] [[]] () [] 含义

    | 语法:command 1 | command 2 功能:把第一个命令 command 1 执行的结果作为 command 2 的输入传给 command 2 & & 放在启动参数后 ...

  2. django使用pyecharts(6)----django加入echarts_增量更新_定长_坐标轴定长

    六.Django 前后端分离_定时增量更新图表(坐标轴定长) 1.安装 djangorestframework linux pip3 install djangorestframework windo ...

  3. windows 下搭建go开发环境

    下载golang安装包: 步骤一: 先打开环境变量配置的界面 步骤二;配置我们的环境变量 对上图的一个说明: 1).path这个变量不需要再创建,因为系统本就有,在后面添加即可. 2).增加Go的bi ...

  4. GOF学习笔记1:术语

    1.abstract class 抽象类定义了一个接口,把部分或全部实现留给了子类,不能实例化. 2.abstract coupling  抽象耦合如果一个类A引用了另一个抽象类B,那么就说A是抽象耦 ...

  5. NRF52832 Mesh调试,使其同时支持串口打印和RTT打印

    查看开发环境里面,是否有这个文件,如果没有你的话,则添加文件. 然后要在sdk_config.h中添加使能 然后打开刚才添加的文件retarget.c,主意里面这些地方 这里它进行判断,要么使用RTT ...

  6. python类中的__str__以及__repr__

    一.__str__ 打印时触发 class A: def __str__(self): #打印时候执行的代码块 return 'ok' # 如果不返回字符串类型,则会报错 print(A()) #相当 ...

  7. mac下卸载android studio

    Execute these commands from the terminal rm -Rf /Applications/Android\ Studio.app rm -Rf ~/Library/P ...

  8. ubuntu下使用JNI Java调用C++的例子

    TestJNI.java public class TestJNI { static{ System.load("/home/buyizhiyou/workspace/JNI/src/lib ...

  9. axios使用API

    背景:请求失败后,因跨域引起的不能传递statusCode问题,通过设置前后台选项解决,这里先总结一下axios的使用 一.安装与配置: 安装: npm install axios axios使用AP ...

  10. Python基础Day6

    一.代码块 一个模块(模块就是py文件),一个函数,一个类,一个文件都是一个代码块,一个整体是一个代码块. 交互模式的每一行都是一个代码块(交互模式:命令提示符),相当于每行都在不同的文件 二.id ...