2018 RoboMaster机甲大师赛
直播中

Vincent

6年用户 55经验值
私信 关注
[经验]

机器人也能感知?一篇文章告诉你传感器的秘密

``

image001.jpg

RoboMaster 技术智囊团,用简单的方式带你入门机器人知识,每周日准时更新。


目前,有些先进的机器人和人类一样,有感官和知觉,比如你推倒它,它会自己爬起来;你打它一下,它会把头转向你;它看到了障碍,会自己绕开……这种自动化或半自动化的机器人不需要人工操作,就可以自己完成这些动作。


image002.gif

可以保持平衡的机器人


人类通过各种感官系统来认识世界,比如触觉、嗅觉和味觉等等,对于下图的萝卜君,我们通过视觉,知道它是一个橙色的、戴着绿帽子的胡萝卜;通过听觉,知道它是一个贱萌的汉子;还可以通过味觉,尝出萝卜君的炒胡萝卜丝味。那机器人是通过什么感知世界的呢?


image003.jpg

通过视觉认识萝卜君


机器人也是通过感知系统来感知世界,这个感知系统是通过各种各样的传感器组成的。传感器可以感受外界的信号,如光、热、烟雾、压力和湿度等等,并将信息传递给下一级装置,机器人得到外界信息就可以做出相应的对策。传感器让冷冰冰的物体有了感官。


传感器有很多种,按照应用分类就有温度、压力、PH、浸水和称重传感器等等,你能想到的需要测量的属性,几乎都有对应的传感器。我们可以根据需要的功能,选择对应的传感器,例如下图汽车上应用了不同功能的传感器。


image004.jpg

汽车上的传感器


不同功能的传感器所运用的原理也不同,按照原理分类就有超声波、紫外线、电量、磁敏和加速度传感器等等,不同原理的传感器也会带来使用效果上的差别。


传感器随处可见,楼道里的烟雾探测器、监控摄像头里的图像传感器、公交卡读卡器……这些都是传感器。能够灵敏地感知外界环境的变化,拥有强大功能的传感器到底是什么?


传感器(Sensor)


传感器就是能感受到被测量的信号,并能将这个输入信号按照一定规律转换成输出信号的器件或装置。假设机器人被打一下,压力就是输入信号,传感器按照自己的规则,将它换成头部能看懂的信号,头部收到输出信号就会有所反应。


传感器感知外界


输出信号往往是指电信号,电信号可以是电压或电流,很容易被传送和控制,能够很方便地被传输、处理和存储。传感器一般由敏感元件和转换元件组成,典型的传感器结构可以用下图表示。


image006.png

敏感元件和转换元件的位置


本文主要介绍几种机器人身上常用的传感器,它们可以帮助机器人实现一些基础的功能,例如躲避障碍物、调整站姿和识别物体等等。


超声波距离传感器


机器人想要正常行动,就要知道周边是否有障碍,所以机器人和外界的距离是最经常用的信息。要做精致高贵的机器人,就要和外界保持距离,不然,就会变成一台不优雅的碰碰车。


image007.gif

疯狂撞墙


用于测距的传感器非常多,比较简单的超声波传感器了,它利用超声波进行距离探测。虽然初中学过超声波,但估摸着大家都忘了,超声波就是高于 20KHZ 的声波,而超声波传感器利用的一般是频率在 0.25MHZ 到 2MHZ 的声波。(1MHZ=1000KHZ,人类听到的是 20HZ~20KHZ)


image008.jpg

超声波传感器


它的原理非常简单:声音的反射。传感器发射出超声波,超声波撞到物体后弹回来,传感器再接收超声波,通过时间差来测距。这种传感器有很多类型,但无论是哪种,它的原理都是一样的。


image009.jpg

超声波传感器原理图


上面两个圆柱就是超声波发射接收器,它将电信号转化为超声波信号发送,又将接收到的反射信号转化为电信号,然后递送给下一级处理器,就可以计算出距离了。


image010.jpg

一个典型的超声波发射接收器


我们设定传感器距离一个物体的距离为 d,传感器发出超声波信号到接收反射信号的时间差为 t,一般情况下,传输介质是空气,声音的传播速度是常数 v = 340m/s,那么所测距离 d 满足:


image011.jpg


常用的超声波距离传感器有 HC-SR04 超声波距离传感器,因为它简单、好操作还便宜。那现在想知道 d,就差 t 了,我们以 HC-SR04 为例,来找到 t。


image012.jpg

经典的 HC-SR04 超声波距离传感器


HC-SR04 有四个端口:供电的 Vcc 端、接地的 GND 端、控制发射超声波信号的 Trig 端,以及反馈所测距离,向更高级的处理器发射电信号的 Echo 端。


控制器在 Trig 端给予一个宽 10μs 的高电平信号,传感器就向外界物体发送 8 个频率为 40kHz 的超声波信号。发送完后,怎么计时呢?这时,Echo 端就会输出高电平,然后,计时开始!滴答滴答……超声波碰到物体后被弹回来,传感器接收到信号,计时结束!高电平停止输出。


image013.jpg

工作过程


最后,通过时间间隔,就可以算出这个物体和超声波传感器的距离啦。


红外测距传感器


除了超声波,还有很多其他可以被反射的媒介能被用于测距。在机器人领域中,性价比较高的是红外测距传感器。


image014.jpg

一款常见的红外测距传感器


聪明的你一下就猜到了,它是用红外线来测距的。而且相比声波,光信号更集中,不易扩散,就像我们会说“一束光”,而不说“一束声音”,所以它的精度更高。而且光的速度更快,在一定测量范围内,也不会因为测量时间的延误导致机器人撞墙。


image015.gif

能够快速避障的机器人


红外线测距传感器大致由一个红外线发射器和一个 CCD 检测器组成。CCD 检测器可以检测到被反射回来的光线,在很多数码相机和手机相机都用它来成像。


红外线十分有个性,即使被反射回来也不走回头路,非要拐一个弯再回来,我们把它叫做三角测量原理。相比起光线原路返回,三角原理允许外界物体不在发射器的正前方,有更高的容错率。


image016.jpg

三角测量原理


那怎么检测距离呢?以上图为例,反射光线距离 CCD 检测器中心线偏移了长度 L,那么已知发射角度 α,中心距离 X 以及滤镜的焦距 f,我们可以通过几何关系得到传感器到物体的距离 D:


image017.jpg

为了能更直观的反应出这个需要探测的偏移值与物体距离的关系,我们可以用物体的距离 D 来表示偏移值 L,表现为:


image018.jpg

通过这个关系可以发现,当物体的距离 D 足够小时,L 值大小会趋近于 X,而这个 X 值一般情况下要大于 CCD 检测器所能允许的最大偏移值,导致太近的物体无法被检测到。而当物体的距离 D 足够大时,L 值大小会趋近于 ftan(α),与此同时当物体较远的时候发射角往往很小甚至趋近于 0,即 L 值也会很小,再次检测实效。


所以红外测距传感器探测范围会比超声波测距传感器更小,使用的距离限制更多,想要更好地测量物体的距离,就需要更高分辨率的 CCD 检测器。(更高分辨率可以更好分辨出两个点)


有些小伙伴就会想,如果用上述两种测距传感器,我往左侧发射信号,但是障碍在右侧怎么办?聪明的人类想到一个绝妙的办法,那就是——多安装几个,往各个方向都发射信号就好了。大概像这样:


image019.jpg

假装发射信号


惯性测量单元(IMU)


机器人可以躲避前方的障碍,却躲不过脚下的坎坷。如果人类被石头绊了一跤,会马上调整重心,重新站稳,那机器人要如何知道自己目前的姿态,以调整出想要的新姿势呢?


image020.gif

姿态调节不好的机器人


这时,就用到惯性测量单元,这是个可以测量物体三轴角速度和三轴加速度的装置。三轴是指三个方向,也就是测出三个方向角速度和加速度。对于不同应用,三轴表示的方向也会不同。


例如,三轴角速度是在欧拉角坐标系上三个方向的角速度。


image021.jpg

欧拉角坐标系

roll 是耳朵贴肩膀、pitch 是点头、yaw 是摇头


三轴加速度是在直线立体坐标系中的三个方向的加速度。



image022.jpg

直线立体坐标系

x 是左右,y 是前后,z 是上下


如果两个坐标系合体,铛铛~就变成了六轴,是不是惊喜又意外!


一个典型的 IMU 会包含三轴加速度计(测加速度)和三轴陀螺仪(测角速度),也有些会加入三轴磁力计(测磁场大小,获得磁场指向),其中涉及到了两种坐标系,这就是六轴传感器。



image023.jpg

由三轴陀螺仪和三轴加速度计组合而成


得到了加速度和角速度还不够,机器人依然是一脸懵逼,不知道自己的姿态(姿态指欧拉角坐标系的三个角度),这时就需要输出这些物理量,让下一级处理器进行姿态解算,就能得到自己目前的姿态了。生活中,手机的重力感应、计步器手环等等,都需要检测和解算姿态。


image024.gif

重力感应


具体的解算方式比较繁杂,推荐阅读两个简单的姿态解算例子(复制链接至浏览器):

1、Arduino 教程——MPU6050 的数据获取、分析与处理:

https://zhuanlan.zhihu.com/devymex/20082486

2、如何使用 MPU9250 获取实时运动数据:

https://create.arduino.cc/projecthub/30503/using-the-mpu9250-to-get-real-time-motion-data-08f011


图像传感器


现在机器人终于可以自如地在路上行走,不用担心它撞墙或者被绊倒了,但这时机器人就像拄着拐杖的盲人,无法看到物体,我们需要让它的眼睛(摄像头)能够感知光线,这就用到了图像传感器。以前提到的视觉识别算法,都是需要摄像头感知光线然后输出图像才能完成的。


image025.jpg

镜头中的图像传感器


图像传感器可以把收集到的光信号转化成电信号,比较常见的有感光耦合原件 (CCD)和互补式金属氧化物半导体有源像素传感器(CMOS)。这里的 CCD 就是红外传感器里的检测器。


image026.gif

光信号转化成电信号


CCD 图像传感器


CCD 图像传感器是一个基于模拟信号的设备。传感器上有很多光敏电容排成队伍,图像或者光信号通过透镜,投影到光敏电容的阵列上,每个电容都会积累一定的电荷,入射光越强,电荷越多。


image027.jpg

电容阵列积累电荷


接受光线后,每个电容就会把自己的电荷传给相邻的下一个电容,电荷会被传到最后一个电容,最后一个电容就把电荷传给电荷放大器,电荷就被转化为电压信号。只要循环这个过程,控制回路可以把整个阵列中的电荷转化为一系列的电压信号。电压信号会被下一级处理器转换为数字信号。


image028.jpg

CCD 图像传感器的原理


CMOS 图像传感器


CMOS 图像传感器是一类利用 CMOS 半导体的有源像素传感器。它身上有很多光电二极管,每个二极管附近都有对应的电路,直接将光信号转换成电压信号,不需要一个一个地传递电荷。同样,下一级处理器也会将电压信号转换为数字信号。


image029.jpg

CMOS 图像传感器的原理


两种图像传感器比较,CCD 图像传感器灵敏度更高,也更加具有抗噪声的能力。但由于工艺上的限制,CCD 上的敏感元件和信号处理电路处在不同的电路中,不像 CMOS 能将整个图像系统集成在一块芯片上,所以体积更大和功耗更大。


image030.jpg

图像传感器


传感器的应用


如今,传感器的运用已经非常广泛,我们需要在特定的环境下合理选择传感器。


例如无人机的自动避障功能,一般不使用红外测距传感器和超声波测距传感器,因为红外线会被黑色物体吸收,会穿过透明物体,而超声波会被海绵等物体吸收,容易被桨叶气流干扰。


一般使用图像传感器,让两个平行的摄像头进行拍摄,根据两幅图像之间的视觉差异,经过一系列复杂的算法来计算出特定点的距离。


image031.jpg

两个摄像头避障


除了避障,无人机还需要精确地测量自己的高度,所以会在底部安装超声波距离传感器,辅助它在一定范围内完成精确的高度测量。


image032.jpg

两个超声波距离传感器


如果看了这么多期智囊团,技术已经过硬,想拼装出一台无人机,就需要对无人机的姿态进行精确的测量,才能控制它,这其中就会用到惯性测量单元。


◆◆◆


机器人的智能化离不开传感器的发展,随着工艺的提升,传感器也越来越小型化、多用化和智能化。本文只是介绍了几种最常见的传感器,相信随着发展,会出现更先进的传感器,为我们的生活带来更多便利。



本期作者


新加坡南洋理工大学 许悦聪

深圳职业技术学院 RoboMaster 战队顾问

没事爱造无人机,热爱机器学习的博士生

`` image005.jpg image033.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分