APP下载

使用LED光源的可见光室内定位装置*

2018-03-01,,

单片机与嵌入式系统应用 2018年2期
关键词:开发板白光定位

,,

(安徽师范大学皖江学院,芜湖 241000)

引 言

基于位置识别的服务(Location Based Services,LBS)正受到越来越多的关注,其中定位技术是实现LBS的关键。由于室内无法使用GPS卫星信号定位,所以在室内定位方向上展开了大量的研究,产生了很多新兴的方案,如基于红外光、超宽带、蓝牙、WiFi、可见光等室内定位技术。其中基于可见光的定位技术具有能效高、抗干扰、又兼具照明及定位多种功能,因此与其它方式相比具有良好的发展前景。

1 总体结构

该可见光定位装置模型主要由LED照明设备、LCD显示设备、嵌入式开发板与图像传感器组成,该模型方案整体框架图如图1所示。

通过图像传感器不断采集LED照明设备的数据信息,嵌入式开发板经过软件算法处理得到传感器的相对位置,并将坐标信息及区域信息发送到LCD上显示。

图1 方案整体框架图

定位装置模型部分(如图2所示)由一个不小于80 cm×80 cm×80 cm 的立方空间(包含顶部、底部和3 个侧面)构成,顶部平面放置3个白光 LED,其摆放位置位于图3黄色圆点处,由 LED 控制电路进行控制和驱动;底部平面绘制纵横坐标线(间隔5 cm),并分为A、B、C、D、E五个区域(如图3所示)。测量电路及LCD显示设备与定位装置隔离,仅将图像传感器放置于装置底部进行采集。

图2 可见光室内定位装置模型示意图

图3 模型底部平面坐标区域图

2 组件分析

2.1 树莓派嵌入式开发板

嵌入式开发板部分采用Raspberry Pi作为开发板。开发板外形只有信用卡大小,却具备很强大的功能,能满足该定位装置模型的开发需求。

本次选用的是其3代B型产品,其采用Broadcom BCM2837 64位核心处理器,主频频率为1.2 GHz,内存部分采用1 GB LPDDR2,以及40针脚的GPIO扩展口。

2.2 图像传感器

采用树莓派专用CSI接口5MP摄像头,同时在镜头部分加装无畸变广角镜头,增加摄像头的可视角度,能基本达到在测试环境下图像传感器处于任意位置都能够采集到顶部平面三个白光LED的位置信息这一目标。

2.3 LED电源控制部分

LED电源控制部分采用L298N驱动电路构成。L298N驱动电路具有较强的驱动能力和PWM调控功能,可以通过PWM波控制其输出占空比,从而调节三个白光LED的发光强度。

2.4 LCD显示设备

显示部分采用通用7英寸1024×600分辨率HDMI电容显示屏,采用HID协议,在配合Raspberry Pi使用时,支持单点触控,且免装驱动,支持背光控制。

3 理论分析

3.1 定位方法

通过图像传感器每隔700 ms捕获一次顶部白光LED的图像,通过软件处理计算出三个LED的位置信息,根据图像传感器成像法,计算出传感器的相对位置。图像传感器采集LED位置示意图如图4所示。

图4 图像传感器采集LED位置示意图

得到具体坐标位置A(x1,y1)、位置B(x2,y2)、位置C(x3,y3)后,根据三角形质心算法得到坐标((x1+x2+x3)/3),(y1+y2+y3)/3),再与原始中心点(x0,y0)做差,按照一定比例进行缩放得到真实传感器位置,从而实现定位。

3.2 信息发送接收方法

利用脉冲宽度调制原理控制白光LED的发光强度,通过图像传感器分析采集到的三个白光LED的灰度信息,从而判断并处理信息。

3.3 点光源位置获取方法

图5 图像传感器捕获图像

可见光的光谱波长范围为380~760 nm,通过摄像头采集到的图像会得到明显光斑效应。捕获图像如图5所示。

实时获取图像信息代码如下:

BufferedImagebuffImage=new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);

for (inti = 0; i < width; i++){

for (int j = 0; j < height; j++) {

intrgb = image.getRGB(i, j);

buffImage.setRGB(i, j, rgb);

}

}

图6 处理后图像

对于这种图像来说,计算三点坐标是极其困难的,所以在这里进行色域转换,并进行滤波及二值化操作。可以发现该图像具有中心亮度偏大,而后以发光点为圆心逐渐扩散。为了确认这三个位置,可以逐行扫描图像,记录图像高亮区域,并设置一定阈值,记录亮度连续处于一定大小的区域,通过加权平均算法计算出光斑坐标。处理后图像如图6所示。代码如下:

for (inti = 0; i < width; i++){

for (int j = 0; j < height; j++){

intrgb = buffImage.getRGB(i, j);

if (rgb == -1){

System.out.println(i + "," + j);

if (flag == 0 | i - recode <= 1) {

flag = 1;

recode = i;

times++;

widthadd += i;

heightadd += j;

}

else{

xPoint[xy] = widthadd / times;

yPoint[xy] = heightadd / times;

xy++;

flag = 0;

times = 0;

widthadd = 0;

heightadd = 0;

recode = 0; }

}

}

当遇到摄像头采集失败或并未在图像中正确找到三点坐标的情况时进行异常处理,代码如下:

xPoint[xy] = widthadd / times;

yPoint[xy] = heightadd / times;

if(times==0){

System.out.println("error!!! No light");

System.exit(0);

}

3.4 定位误差分析及解决方案

在未安装广角镜头的情况下,在可视角度为65°的情况下很容易出现采集顶部LED不完全的情况,在加装无畸变广角镜头后,可视角度变大,但当图像传感器处于边界部分时仍可能出现丢失一个白光LED的情况,这时定位会出现较大偏差,需要在算法中补充丢失定位点的情况,这里采用模糊算法,在丢失一点的情况下根据剩余两点所处边根据一定角度进行补点。在图像传感器只捕获到一个点或者未捕捉到点的情况下进行报错处理,提高程序健壮性。

同时,在摆放传感器时会出现测量正方向与实际正方向不重合的问题,图像得到的三点坐标与实际会有一定的偏差,这需要人为干预将图像传感器摆放至坐标系方向,提高定位精度。

在不同环境下,由于光照条件不同,以及LED驱动电路的驱动能力不同,在计算对应点时要根据现场情况更改程序中的比例系数值,以提高定位精度,若室内光照强度较高时,可以适当提高LED驱动电路亮度,以对抗自然光的干扰。

4 程序及定位架构

4.1 程序整体设计架构

程序整体流程图如图7所示。

通过嵌入式开发板处理图像传感器采集到的图像,经过滤波处理得到较为良好的图像,图像成功识别后进行十字坐标的建立,并通过多次采集取均值的方法校正所得到的点,并与原坐标系进行对比,达到定位的目标,最后将信息发送到显示屏上,完成此次定位并开始下次定位。

4.2 定位流程架构

可见光定位整体流程图如图8所示。

图7 程序流程图

图8 可见光定位整体流程图

安装在模型顶部的三路白光LED,在提供照明的同时也在控制电路的驱动下发送光信息,图像传感器采集到这三个点并进行质心算法处理,得到焦点坐标与原点坐标进行处理,并将坐标及附加的区域及正误信息发送到LCD显示屏上,完成整个定位过程。

5 装置测试及结果分析

5.1 装置测试显示结果

显示结果部分主要由4个部分组成。首先是由图像传感器捕获到的三个白光LED具体的坐标信息;接着是通过算法计算出传感器坐标位置,精度达到0.1 cm;然后是传感器的位置信息,由于整个坐标系被划分成5大区域,分别标识成A、B、C、D、E,这里可以直观地显示传感器所在的大致区域,同时有上下左右指示,直观显示信息;最后是本次定位所花费的时间,以ms为单位。若出现意外情况未获取到正确的可见光坐标点,会显示本次定位出错。LCD显示结果如图9所示。

图9 LCD显示结果示意图

5.2 装置分组测试及结果

为了更好地测试该套装置模型的定位性能,保证测试结果真实可靠,设置了5组测试方案,从定位区域、定位角度、定位精度等不同方向测试装置。

为了确保该装置能够真实模拟实际环境,将测试环境设置为关闭照明灯,打开窗帘,自然采光,避免阳光直射的条件。

测试方案1:图像传感器放置在B、D区域,区分其位于横坐标轴的上、下区域。测试结果如表1所列。

表1 测试方案1结果

测试方案2:图像传感器放置在C、E区域,区分其位于纵坐标轴的左、右区域。测试结果如表2所列。

表2 测试方案2结果

测试方案3:将图像传感器放置在A区域,显示并记录其位置坐标值,且要求绝对误差不大于10 cm。测试结果如表3所列。

测试方案4:将图像传感器放置在B、C、D、E区域,显示并记录其位置坐标值,且要求绝对误差不大于10 cm。测试结果如表4所列。

表3 测试方案3结果 单位/cm

表4 测试方案4结果 单位/cm

测试方案5:将图像传感器放置在底部平面的任意区域,显示并记录其位置坐标值,且要求绝对误差不大于3 cm。测试结果如表5所列。

表5 测试方案5结果 单位/cm

5.3 装置测试结果分析

上述测试结果表明,该套可见光定位装置能够正确实现定位,显示分辨率为0.1 cm的情况下实现了绝对误差小于3 cm,每次定位时间基本控制在1000 ms以内。在实际测试过程中,采用低功耗方案,在LED控制电路部分采用自制的12 V单电源供电系统,供电功率通过 仪器测试仅达3W,能够在正常照明的情况下达到定位。总的来说该系统具有节能、高效、定位精度较高等特性。同时该装置也存在一些缺陷,如抗干扰能力不够强,在面对强烈太阳光干扰下会出现光源重叠、设备无法定位的情况。

图像传感器的分辨率及可视角度也会影响定位的精度,这需要后续硬件及算法的继续优化来提升整体装置的性能。

结 语

[1] 张晓锋,王敏,王瑾.基于可见光的室内定位的研究现状与发展[J].激光与光电子学进展,2017,54(10).

[2] 胡益清.基于可见光的室内定位与智能感知[D].合肥:中国科学技术大学,2017.

[3] 张永安.基于树莓派的智能家居系统[J].电子世界,2016(15):53.

[4] 苏祥林,陈文艺,闫洒洒.基于树莓派的物联网开放平台[J].电子科技,2015,28(9):35-37,41.

[5] 赵嘉琦,迟楠.室内LED可见光定位若干关键技术的比较研究[J].灯与照明,2015,39(1):34-41.

猜你喜欢

开发板白光定位
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
找准定位 砥砺前行
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
白光LED无线通信的研究进展
白光(选页)
从白光的花鸟画中感悟写意精神
青年择业要有准确定位
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板