使用WLAN接入点进行移动本地化

Armin Fuhrmann - Senior IT-Consultant

Armin Fuhrmann
Senior IT-Consultant
Organon Informationssysteme GmbH

Fuhrmann 先生是一名全栈开发人员,擅长云计算、IT 安全和 SEO 策略。自 2001 年以来,他一直在 IT 行业工作,获得了多个 IT 领域的认证,并取得了一些成功,并取得了良好的业绩记录。

对单个 WLAN 接入点的信号强度进行三角测量

使用移动设备进行定位的可能性为公司提供了基于位置的信息流控制和室内导航方面的巨大附加值。

位置确定技术的一大障碍是位置网格的必要测量。可使用不同的程序来促进此测量。

在客户项目过程中,通过确定这些方法的优缺点,选择了最有希望的方法,并通过软件实现。客户项目的结果将是一个可执行的移动应用程序,该应用程序能够通过三角测量各个WLAN接入点的信号强度(RSSI)来确保对房屋的测量。结合用于存储和处理位置数据的服务器来完成此任务,Organon Informationssysteme GmbH在该项目的过程中也正在开发该服务器。

位置服务

本地化在企业和社会的许多领域中一直发挥着重要作用。过去,仍然有必要确定外国军队的位置或商船的位置,但是今天,随着在汽车,航空航天和航海中使用导航设备,甚至通过在智能手机上进行有针对性的基于位置的广告,位置确定已进入我们的行列。每天保持。随着移动互联网的使用,特别是新技术的不断普及也使得改变电子设备的位置成为可能。智能手机以更高的准确性进行确定。得益于大多数智能手机中可用的蓝牙,近场通信(NFC)和无线局域网(WLAN)等无线电技术的发展,有时甚至结合使用,定位系统可以在各种生活领域中实现多种益处。

定位程序

三角剖分,三边测量和场景分析可以单独使用,也可以组合使用来确定位置。 这些将在下面详细描述。

三角剖分

三角测量法已经用于距离测量已有数百年的历史了,在土地测量中仍是最先进的技术。可以使用角度关系根据已知值在平面中确定未知位置的位置。

如果已知给定点A和B之间的基本长度c,则长度a和b可以通过将点C和所得角度α和β以及C的坐标作为目标来确定。

三边测量

在三边测量中,使用到已知点的距离来数学计算某个点的位置。

由于WLAN中的客户端具有每个连接的接入点可用的信号强度,因此可以通过将它们用于距离来将其用作三边测量的输入值,即r1,r2和r3。为了能够使用信号强度,您首先必须知道如何解释这些值。信号强度的值在负数范围内,并随着距离的增加而减小。在WLAN中,值为-35 dBm,例如“-”值比-57 dBm(在-80 dBm和-90 dBm之间)好,大多数情况下信号会中断。为了能够在三边测量中使用信号强度,您必须使用这些信号强度测量所有距离。

场景分析

当分析场景时,通常首先测量栅格,以便基于该栅格确定要确定的对象的位置。准备中确定的数据存储在数据库中,并将要确定的对象的位置与这些值进行比较。使用场景分析的方式有很多。
例如,图像数据可用于比较,例如在自动移动机器人的机器人中,或者您可以使用例如接待力量。对于其他定位方法,由于失真(由于干扰因素,例如墙壁,物体,其他无线电小区等),无线电信号的接收强度会降低,这意味着准确性的极大损失。然而,在场景分析中,这些恶化得到了补偿,因为受干扰源影响的信号先前也已通过这种影响被包括在测量中,因此仍然可以在调整期间进行定位。
仅仅是位置的改变,无论是通过建筑工作,添加破坏性的无线电技术甚至是调整,移除或添加诸如家具之类的物体,都可能使该来源的影响范围内的值无法使用,从而有必要再次测量位置。

WLAN中的位置确定

随着移动设备数量的快速增长以及对灵活性和成本降低的需求,无线网络(WLAN)作为计算机网络中有线网络的补充和部分替代品的使用已大大增加。 WLAN已成为私人家庭,公司和公共机构的理所当然的事情。
为了确保全面发出良好信号,公司和公共机构特别要使用多个接入点,即所谓的WLAN接入点。结果,上述变型可以用于以相对较小的努力来确定位置。
日常生活的许多领域也可以从中受益。

实施软件项目

该软件项目的实施遵循公司关于自己开发软件系统的指导原则。每个项目都有一个规划过程,将开发分为几个阶段。在计划过程的开始,举行了启动会议,介绍了项目目标,工作分解结构的定义,职责和里程碑以及流程模型的决定。在要根据要解决的任务的要求,所涉及的员工的知识以及之前类似项目的经验的背景下,确定要使用的过程模型。瀑布模型的决定是针对实际项目的。工作包作为会议的一部分分发给了参与者。

需求分析

作为软件开发的第一步,需求分析的目的是确定客户对要开发的系统的需求。
客户端的基本思想是开发用于确定对象位置的基本软件,并为它提供一个中央数据库以及标准接口以扩展应用程序模块,该软件源于早期的初步项目并进行了市场分析。
首先,希望只使用一种方法来确定此实际项目中的位置,但要设计开发,以便其他两种方法可以在以后单独使用或组合使用。
在创建了具有功能,要使用的技术,使用其他技术的必要灵活性,对事务吞吐量和可伸缩性的需求,可用性,软件质量,安全性和数据保护的基本信息的需求概要之后,创建了一个包含所有需求规范的规范。

粗略的概念

在需求分析中创建的需求规范是未来系统粗略概念的基础。粗略概念包括一些有关要使用的硬件和软件体系结构的初步规范。客户端-服务器模型被定义为信息和服务分发的体系结构,因为除了更改和更新位置数据以及要分发的信息和服务之外,这还减轻了用户设备的负担,改善了整个系统中的负载分配,并简化了维护和对个人的关怀已启用软件和硬件组件。

为了在场景分析模式下进行操作,有必要使用位置测量来创建定位网格。在这里,必须使用系统的中央服务器和特殊的客户端应用程序,它们仅用于测量位置网格。服务人员沿着距离为1 m(每平方米4个点)的点移动网格,并将数据传输到服务器。 “LocalizationServer”软件的例程在服务器上接受这些值并将其保存在其数据库中相应位置单位(例如房间)下。
在对位置进行了测量并根据实际房间布局将其划分为逻辑单元之后,将为位置单元分配信息和服务,并将其存储在数据库中,并在服务器中调用任何必要的例程。在此初始输入和分配之后,系统应能够开始运行。

为了能够确定终端的位置,用户必须首先使用其终端登录WLAN,其WLAN接入点信号强度用于确定位置。首先,启动服务应用程序(LocalizationClient)时,将自动建立与服务器的连接,并且将终端设备接收的信号强度传输到服务器。然后服务器在其本地化数据中搜索最接近的值以及在其数据库中分配给该单元的信息和服务。

软件需求

要开发的软件应使确定用户设备在建筑物中的位置成为可能。在测量公司位置之后,通过服务器软件将由于设计而将位置划分为的空间用作位置单位。服务器应在移动设备上向用户提供链接到某些房间的信息和服务。

硬件要求

为了能够尽可能准确地确定位置,必须在本地WLAN中至少有三个可用的接入点。由于用于确定位置的应用程序应尽可能少地用于移动设备上,并且内部已经具有竞争力,因此该公司已将Android设备定义为目标平台。为了避免在硬件存储上进行投资并获得高度的灵活性和可伸缩性,决定使用虚拟系统。

软件设计

软件设计是用于规划软件解决方案的设计过程。它是整个软件开发过程的一部分,并基于需求分析规范。软件设计的结果记录在所谓的功能说明中。

软件架构

软件体系结构的设计显示了要开发的软件系统的基本需求之间的关系,并显示了系统的组件以及它们之间的联系。这绝不是系统的详细设计,而是例如图1的表示。程序模块,软件层,接口,数据和功能图。对于体系结构设计,将做出对进一步的系统设计有重大影响的基本决策,其详细信息将在设计过程的进一步阶段进行。

面向对象的分析与设计

在“面向对象的分析和设计”阶段,将从先前的需求分析中获得的知识用于创建用例,然后根据需求创建详细的类图,然后将其用作后续开发阶段的模型。有一些软件解决方案使用此阶段的设计模式来生成源代码,从而使先前在UML中创建的类可用作主体以用于进一步编程。

首先,为LocalizationServer,LocalizationClient和ServiceClient创建类图。
除房间的本地属性外,还通过“位置”类定义了房间。因此,房间是基于一组位置(此处为ArrayList)形成的,该位置形成了带有客户在其中移动的唯一房间号的网格。一个位置由基于三个WLAN接入点的三个位置值组成。将来计划扩展任意数量的位置值,即增加WLAN接入点以改善定位,但此软件版本尚未实现。不得削弱三个WLAN接入点的最小数量,否则将无法进行可靠的本地化。
该类图还显示,根据客户端的类型,在建立连接后,LocalizationServer类将生成ServiceClient帮助器类或LocalizationClient帮助器类。然后根据助手类,提供用于管理或调用信息和服务的不同功能。

“ ConnectActivity”类控制TCP / IP连接的建立。此类由主类生成,并通过主类的上下文菜单关闭连接时销毁。就像在LocalizationServer中一样,存在一个类位置,其中存储了每个WLAN接入点的三个值。在主类中,positionListener()方法不断确保“位置”变量充满当前位置的信号强度。一旦传输到服务器的位置返回不同的房间号,就会通过LocalizationServer的命令覆盖当前房间。服务器上存储的房间由服务员工使用Android应用程序“ ServiceClient”确定。

如果将“ ServiceClient”类与“ LocalizationClient”类进行比较,则前者将包括“ collectGridPositions()”方法,该方法通过一组位置值定义一个定义的空间。这些位置值是手动添加的(通过按下智能手机屏幕上的按钮)到ArrayList类型的“PosArray”列表中。在完成房间定义后,存储的位置值将与房间号一起传输到服务器。

在完成软件设计阶段后,进行了体系结构审查,以避免在后续实现中出现不良开发的风险。软件设计的结果在审查会议上发布。

实作

设计阶段的结果是进行编程的起点。
首先,创建“ LocalizationServer”和“ LocalizationClient”项目,并对客户端-服务器连接进行编程。与这些项目并行的是,为各个组件创建了独立的测试项目,以便独立开发组件并在以后进行组合。
下一步是编写一个Android应用程序,该应用程序读取可用的WLAN接入点的信号强度,并以JSON(JavaScript对象表示法)中特别定义的协议将该数据传输到服务器。该Android应用程序用作LocalizationClient和ServiceClient的模板。为ServiceClient生成了适合测量初始网格的相应表面,将LocalizationClient的表面设计为用于显示信息。客户端和服务器上的各个软件元素是根据面向对象的分析和设计(OOA和OOD)实现的。
创建了与编程平行的软件文档。除了本软件文档外,还创建了更详细的OOA和OOD图表,关系数据库模型和产品发布路线图。为了保证质量,指定了在各个模块测试中使用的测试用例。

系统与集成测试

为了验证整个系统,我们的任务是根据用例和需求定义创建测试计划,并描述针对功能和非功能需求的众多测试用例。测试用例是在测试用例表单上创建的,还用于记录测试结果。每个测试用例都包含测试过程,输入和预期结果。

根据测试计划,检查所有测试用例,记录测试结果,如果出现错误,则在纠正后再次检查。为了验证系统的多用户功能,根据测试计划,在一个或多个房间中对几名员工进行了一系列测试。由于测试中的某些错误,因此必须添加其他测试用例。可以对所有困难和故障迅速做出反应,并适应软件。
服务器根据传输的信号强度计算并返回给客户的位置单位的可靠性测试表明,只要客户不太靠近墙面,就可以确定令人满意的位置。
最终测试显示,客户的本地化令人满意,信息传递平稳。测试计划和所有测试用例文档都已存档,以供验证和以后重用。

我们的一位客户已成功使用该软件。客户现在不希望被命名。

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

如您所见,这篇文章很有用...

在社交媒体上关注我们!

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?