golang+webgl实践激光雷达(一)激光扫描仪基础知识
一、前言
最近做一个测量料堆形状的项目,通过前期调研,最后决定用激光测距原理进行测量。通过旋转云台+激光扫描仪实现空间三维坐标的测量。其中激光扫描仪扫射的是一个二维的扫描面,再通过云台旋转,则形成一个空间的三维点云。通过前期调研学习,加深了对激光扫描仪的了解,先整理一下收集的扫描仪的基础知识。
资料参考网址:
https://www.sick.com/cn/zh/w/gcn_div08series/
http://www.gongkong.com/news/201703/357440.html
二、激光扫描仪主要参数
激光扫描仪的原理是脉冲时间飞行原理,通过激光扫描器连续不停的发射激光脉冲,由旋转光学机构将激光脉冲按一定角度间隔(角度分辨率)发射向扫描角度内的各个方向而形成一个径向坐标为基准的二维扫描面。被测物体位置信息通过扫描器到物体的距离及对应的角度数据给出。

做项目之前对激光扫描仪并不了解,通过查资料,找供应商咨询,逐渐对激光扫描仪的参数和应用有所了解。扫描仪的主要参数就是扫描距离、测量精度、扫描角度、扫描频率。需要注意的是这个扫描距离要看是多少反射率时候的数值,有一些国内的激光传感器标注的是20%反射率的参数。激光对不同材质表面反射率是不同的,比如对黑色物体的反射率就比较低。
扫描距离
扫描距离是指激光扫描仪可以测量的最远距离,此参数在实际使用过程中受环境影响较大。主要影响因素有:目标物体表面反射率,目标物体形状,环境光干扰等等;一般情况下厂家会标明物体表面反射率为10%和90%情况下激光扫描仪的测量距离。
扫描角度
扫描角度是指即扫描器能覆盖的角度范围。一般有:70° … 360°

扫描频率
扫描频率是指激光扫描仪每秒钟扫描的次数。
扫描角度分辨率
两个相邻发射激光束之间的夹角为角度分辨率。

扫描精度
扫描精度分为两种表达方式:系统误差和统计误差;
- 系统误差是指激光扫描仪多次测量的平均值与真值之间的误差;系统误差不能被完全消除,但可以通过预先的标定减小系统误差影响;
- 统计误差是指激光扫描仪多次测量的均方差;统计误差可以采用多次测量取均值减小;
三、激光测距的影响因素
1 物体表面反射率
被测目标物体表面反射率是关系到激光扫描仪测量能力的关键参数。而影响物体表面反射率的因素主要有物体表面颜色和表面类型(亚光,高亮,平滑,粗糙等)。我们通常定义柯达白板(Kodak white material)表面反射率为100%。

2 物体表面轮廓
被测物体表面还有一个关键因素影响激光扫描仪测量距离和效果:目标物体表面形状。
平面物体,大于光束直径全部能量从被测物返回

圆形物体,小于光束直径部分的能量从被测物反射回(1 echo) + 从背景反射 (1 echo) -> 多次回波multi echo -> 检测不稳定

平面物体, 小于光束直径 (边沿检测),部分的能量从被测物反射回(1 echo) + 从背景反射 (1 echo) -> 多次回波multi echo -> 检测不稳定

高亮、光滑表面 -> 镜反射(反射角 = 入射角)
如果激光束入射角较小,就会造成激光束的反射光束不能返回到接收器。在该点的测量值就会显示为无物体,也就是数据丢失的情况。
如:高亮汽车漆、抛光的金属表面类似镜反射

亚光、光滑表面 -> 漫反射(全方向反射)
反射光分布在所有的方向上,光的强度分布类似于高斯曲面
当激光与物体表面成一定入射角,则反射能力会有相应的损失,入射角越小,返回扫描器的光越少,检测距离也就越近

亚光, 粗糙表面 -> 漫反射 (反射方向不确定)
反射可能向任意方向,由被测点实际形状确定。无规律性
如:块状的矿料等

反射板/反射胶贴 -> 反射板反射
几乎所有的激光都原路径返回扫描器
用于激光导航等应用

3 光斑直径(光斑大小 Beam diameter )
激光扫描器所发出的激光光束, 光斑大小会随着距离的增加而增大(如手电筒发出的光)

下面列出一些常用LMS产品的光斑直径的计算公式:
LMS111 =距离(mm)×15mrad + 8mm
LMS511 HR=距离(mm)×4.67mrad+13.6mm
LMS511 SR=距离(mm)×11.9mrad+13.6mm
TiM3= 距离×22mrad+6.5mm
LD-LRS3110=距离(mm)×2.8mrad+40mm
例:LMS111在10米距离时光点直径:
10000mm×0.015+8mm=158mm
4 光点(测量点)间距 ( Beam distance )
相邻两个光点中心之间的距离。光点间距与测量距离成正比;同时,角度分辨率越大,光点间距也越大。

测量点间距L=Tan(a/2)*d*2
例如:
当角度分辨率为0.5 °,工作距离为10米时,
光点间距=Tan( 0.5 °/2)*10m*2=8.72mm
5 最小检测物体体积(Minimum object size)
基于光斑直径和光点间距可以直接计算激光测量系统能测量的物体的最小尺寸。最小物体尺寸与测量距离成正比;
最小检测物体尺寸=光斑直径+光点间距

四、激光扫描仪工作模式
基于如上原理和技术,激光扫描仪可以实现以下两个功能:检测和测量
检测 Detection
在扫描范围内,设置不同形状的保护区域
(预设形状或任意形状)
当有物体进入该区域时,输出信号
可用于包括设备防撞、区域安防等

- 测量 Ranging
在扫描角度范围内测量每个脉冲检测点
输出位置数据 (极坐标角度及距离数据)
可用于轮廓测量、导航等作用

golang+webgl实践激光雷达(一)激光扫描仪基础知识的更多相关文章
- 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)
目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...
- 《JavaScript设计模式与开发实践》读书笔记-基础知识
笔记内容多摘录自<JavaScript设计模式与开发实践>(曾探著),侵删. 面向对象的JavaScript 1. 动态需要类型和鸭子类型 鸭子类型 如果它走起路来像鸭子,叫起来也是鸭子, ...
- Objective-C 方法交换实践(一) - 基础知识
一.Objective-C 中的基本类型 首先看下 Objective-C 的对象模型,每个 Objective-C 对象都是一个指向 Class 的指针.Class 的结构如下: struct ob ...
- golang基础知识之encoding/json package
golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...
- [WebGL入门]五,矩阵的基础知识
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明.我会加上[lufy:],另外.鄙人webgl研究还不够深入,一些专业词语,假设翻译有误,欢迎大家指 ...
- 数据结构和算法(Golang实现)(8.1)基础知识-前言
基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...
- 数据结构和算法(Golang实现)(8.2)基础知识-分治法和递归
分治法和递归 在计算机科学中,分治法是一种很重要的算法. 字面上的解释是分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题. 直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合 ...
- 数据结构和算法(Golang实现)(9)基础知识-算法复杂度及渐进符号
算法复杂度及渐进符号 一.算法复杂度 首先每个程序运行过程中,都要占用一定的计算机资源,比如内存,磁盘等,这些是空间,计算过程中需要判断,循环执行某些逻辑,周而反复,这些是时间. 那么一个算法有多好, ...
- 数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
算法复杂度主方法 有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来. 一.复杂度主方法 主方法,也可以叫主定理.对于那些用分治法 ...
随机推荐
- MDS 多活配置
CephFS 介绍及使用经验分享 阅读 1179 收藏 2 2019-01-14 原文链接:www.jianshu.com WebRTC SFU中发送数据包的丢失反馈juejin.im 目录 Ceph ...
- intellij idea使用tomcat maven plugin
环境 java 1.8.0_111 tomcat tomcat-8.5.11 maven 3.2.5 intellij idea 14.0.3 命令行使用 建maven工程 mvn archetype ...
- Day 10 面向对象基础
目录 面对过程编程 面向对象编程 类 定义类 对象 定义对象 定制对象独有特征 面对过程编程 分析解决问题所需要的步骤, 用函数将这些步骤一步一步实现, 使用的时候一个个调用就可以了 优点: 复杂的问 ...
- Linux-部署-Django
Linux-部署-Django-项目过程与问题总结 优才网 2017-04-12 18:00 本篇主要用于记录部署 Django 项目所有踩过的坑. 最近学习 Django 框架开发,将项目部署到 ...
- 云原生技术之Docker入门
1. 为什么需要容器? 下图是一个比较传统的软件架构 做过java的同学可能对上图的架构方式比较了解,我们通常会将一个应用程序生成一个war包,放到一个tomcat容器当中并在一台虚拟机(VM)中启动 ...
- 百度大脑UNIT3.0详解之数据生产工具DataKit
在智能对话项目搭建的过程中,高效筛选.处理对话日志并将其转化为新的训练数据,是对话系统效果持续提升的重要环节,也是当前开发者面临的难题之一.为此百度大脑UNIT推出学习反馈闭环机制,提供数据获取.辅助 ...
- Hyperledger Fabric私有数据
官方文档:点这里 1简介 在同一个通道中,允许某一组织在对同一通道内其他组织保持部分的数据私有.也就是说有一部分被标识为私有的数据只能具有权限的组织查看和操作,而其余组织不具备查看和操作私有数据的权限 ...
- IDEA 如何自动导入(import)
如果大家正在使用一个未曾导入(import)过的类,或者它的静态方法或者静态字段,IDEA 会给出对应的建议,只要按下 ⌥(option)和回车就可以接受建议. 但我觉得这样做仍然很麻烦,不够智能化. ...
- 【重要更新】Senparc.Weixin SDK v6.5 升级说明(支持 .NET Core 3.0 及分布式消息上下文)
Senparc.Weixin SDK v6.5 开始支持 .NET Core 3.0,并将微信消息上下文进行了大幅度的重构,支持了使用分布式缓存存储上下文信息,这意味着在分布式系统中,现在 Senpa ...
- Flask 教程 第十二章:日期和时间
本文翻译自The Flask Mega-Tutorial Part XII: Dates and Times 这是Flask Mega-Tutorial系列的第十二部分,我将告诉你如何以适配所有用户的 ...