描述
<h1>团队介绍</h1>
<p>我们的团队主要是由大三学生组成,团队成员来自深圳大学逆舟实验室。深大逆舟实验室是一个以竞赛为核心,活跃在各大电子竞赛中的一个学生高度自治的实验室,队员曾获得多项省级国家级电子类竞赛一二等奖等奖项,我们分工明确,分为硬件电路设计、GUI开发、算法设计、嵌入式软件开发,上位机开发这几个部分,相互协调任务,共同高效开发。</p>
<h1>1、项目功能介绍</h1>
<h2>一、项目背景</h2>
<p>随着越来越多的室内大型空间的出现,对于室内定位功能的需求也在逐渐扩大。由于卫星导航在室内的精度十分有限,因此各种室内定位的方案不断涌现。而这其中较为出名的实现方案便有超宽带无线通讯。超宽带技术是一种新型的无线通信技术,其无线信号具有GHz量级的带宽,并且具有信道衰落不敏感、发射信号功率谱密度低、低截获能力、系统复杂度低、能提供数厘米定位精度等优点。</p>
<h2>二、定位原理</h2>
<p>利用超宽带芯片发射出的亚纳秒级超窄脉冲,可以获得无线信号在空中的飞行时间,进而计算出飞行距离,换句话说,两个超宽带芯片可以通过互相发送无线信号来获得彼此之间的距离。因此某个单元若能获得与其它至少三个单元之间的距离数据后,便可以通过几何数学模型计算出该单元与其它单元之间的相对位置。如果我们将其它单元的位置固定,我们便能得到该单元的具体位置。</p>
<h2>三、实际的定位算法模型</h2>
<p>在几何数学中,若能知道坐标系中的三个圆的圆心坐标和半径,我们便能计算出它们的相交点坐标,但这仅存在于理想模型中。事实上,由于各种环节都存在误差,因此计算得到半径数值和圆心坐标都不可能和实际位置完全一致,这还不考虑干扰问题。因此,利用超宽带测得的距离(也即各个圆的半径),最可能是无法直接得到交点坐标的(方程无解)。因此实际过程中求解目标单位的坐标时,需要对测得的数据进行多步操作,进而获得一个符合预期且计算方法符合科学的坐标值。</p>
<h2>四、第一代定位系统中存在的弊端和缺陷</h2>
<p>第一代系统默认使用三个基站用于定位,因此其使用场景十分受限于超宽带的天线性能。并且由于其不具备基站的拓展性,因此不适用于各种具有超大型室内空间的场景,导致其投入应用进一步受限。另外由于系统中只有三个基站进行定位的处理,因此整个系统所能搭载的标签数量也十分有限,也不满足实际应用的需求。</p>
<p>多标签之间存在主从关系,不互相独立。为了避免多标签同时进行定位产生的信号冲突问题,设计了由主标签协调从标签的机制:系统中必须存在一个主标签,用于发送带有指定ID的信号量数据包(即为对应ID的从标签赋予定位的通行证)。也就是说,虽然系统支持多标签定位,但事实上标签之间关联性强,无法独立运行,并且无法同时定位,这就导致了当标签数量的增加,标签的性能会因此降低。</p>
<h2>五、多基站协同的室内定位系统功能介绍</h2>
<h4>系统框图:</h4>
<p><img src="//image.lceda.cn/pullimage/fcId958UoofVozaOz7i4AUbNoZI22aXK90Jmyqeg.png" alt="e73fcc023d4a0c4a64d078900439ae9.png"></p>
<h4>该系统中具有以下单元:</h4>
<ul>
<li>基站:自动选频,多标签测距;</li>
<li>标签:自动扫描基站、定位、UI交互(LVGL实现)、磁力计导向;</li>
<li>终端基站:扫描捕获系统单元信息,上传至上位机;</li>
<li>上位机:监控系统单元状态及信息,便于系统调试;</li>
</ul>
<h4>系统的运作原理如下:</h4>
<ol>
<li>相比于原先的室内定位系统的实现方案,此系统中基站采用扫描信道选择合适信道作为工作信道的方式,来错开相邻附近基站的工作频段,有利于防止无线数据在同一信道中相互干扰,导致通信和定位效率下降。在上电选择完信道之后,基站就此在此信道中开始工作,其工作机制是接收-响应机制,这样有利于处理多个标签及其它基站的无线数据包。</li>
<li>基于基站的工作模式,标签在定位过程中,会率先通过ping包扫描各信道并获取基站的相关信息,包括基站的地址和坐标位置,并将其存入相关数据链表中。在标签开启定位之前,需要做的是和附近的基站进行测距,利用与各基站的距离和坐标,传入设计好的数学模型接口中,便可解得标签的坐标位置。
值得一提的是,由于基站和标签的工作机制,当某一个基站出现故障而无法工作时,标签会自动更新附近正常工作的基站列表,并重新开启测距定位功能。这对于实际应用过程中的系统鲁棒性有着非常大的作用和使用价值。
另外此系统支持多标签同时存在于系统中,其最大载量由基站的硬件性能以及空中信号质量等的影响。</li>
<li>标签和基站工作原理的流程图如下所示:</li>
</ol>
<p><img src="//image.lceda.cn/pullimage/MCTLjzFB0N24OyU4hmhAaWF3uU9R5NUHt8UrCgbR.png" alt="3b8eac1e508b4cc6a564ee5efe83a67.png"></p>
<ol>
<li>另外,系统充分利用DW1000芯片中的各种功能模块,来提高整体系统通信的效率。利用帧过滤和自动重发机制来实现定位过程的点到点路径,不仅提高MCU的处理效率,还提高不同标签之间定位过程的独立性,进而使整个系统的工作效率得到提高。</li>
<li>系统中设计了上位机,利用终端基站来监控整个系统中单元的状态,进而达到终端管理的目的。终端基站有别于普通的基站,其不需要响应标签的定位请求,只需要捕获系统中的基站状态,进而利用基站中存储的标签信息来实现对所有基站和标签进行监管的目的。</li>
<li>标签具有实时显示坐标的UI界面,能够将标签的位置通过地图的方式显示出来,并且标签中内置了磁力计芯片和解算算法,可以获得绝对航向角度,用于获得标签载体的朝方向,来为更多应用创造基础条件。</li>
</ol>
<h2>六、系统的应用场景及案例介绍</h2>
<h4>手部动作识别实现轻量级的虚拟场景交互</h4>
<ol>
<li>通过UWB基站组网扫描实现了基础的静态室内定位功能。</li>
<li>加入IMU传感器及震动马达,利用Unity 3D制作了一款空间(三维)上位机,并配套设计了两款轻量级的体感交互小游戏(坦克射击),实现室内定位与体感交互的结合。</li>
</ol>
<p><img src="//image.lceda.cn/pullimage/GIKarMsF7BO1gbbnsXoyonHbFLG7d2PYwQA7sB5f.png" alt="image.png"></p>
<ol>
<li>利用Qt Creator自主设计UI界面并制作的一款平面(二维)上位机,将采集数据可视化显示出来,拓展出上位机的电子围栏,路线追踪记录等功能。</li>
</ol>
<p><img src="//image.lceda.cn/pullimage/A4cDL1t5dlOynqxCL1fOy8YNKYaA7Z9TLUvRIkUY.png" alt="image.png"></p>
<h4>超市场景下的室内定位人流量分析系统</h4>
<p><img src="//image.lceda.cn/pullimage/bv5KkBEzYACIa1TbiS1umiUqn023a74TZTsOtV3K.png" alt="image.png"></p>
<p><img src="//image.lceda.cn/pullimage/ESuiRxUjKUduurnlZNunSNmHLsowqx2k1EoDRY0a.png" alt="image.png"></p>
<h2>七、项目优势</h2>
<ol>
<li>可以根据实际应用需要组件定位系统,利用多基站相互协同的方式来覆盖大型场地。</li>
<li>可容纳多个标签,并且其定位过程相互独立,互不干扰。</li>
<li>硬件组成不复杂,便于拓展开发,基站及标签的硬件电路小巧,仅有硬币大小。</li>
<li>软件设计结构灵活,易于移植和兼容不同平台,并且可以根据实际需要拓展不同功能模块,各单元的执行效率高。</li>
</ol>
<h2>八、系统性能指标</h2>
<ol>
<li>测距距离范围 0.2m~66m(采用陶瓷天线、无运放电路)</li>
<li>定位误差范围 半径0.5m~1m</li>
<li>定位更新频率:30hz (超过此频率会使UI界面掉帧严重,卡顿明显)</li>
<li>系统最大负载标签数量:3 (只有三块标签了。。。)</li>
<li>UI显示帧数FPS:24</li>
<li>基站电路板功耗--5V-0.77w,标签电路板功耗--4.1V-0.44w。</li>
</ol>
<h1>2、项目属性</h1>
<p>第一代定位系统曾参加的比赛:</p>
<ol>
<li>深圳大学电子设计大赛(深圳市立创软件开发有限公司赞助举办) ---- 获校赛一等奖</li>
<li>广东省计算机设计大赛 ---- 省赛三等奖</li>
<li>第五届全国大学生集成电路创新创业大赛(航天微电子杯) ---- 一等奖(企业大奖)</li>
</ol>
<p>此项目是在团队第一代项目的基础上进行迭代改进的第二代版本,为首次公开。</p>
<h1>3、开源协议</h1>
<pre><code>GPL3.0
所有资料开源,欢迎交流指点!
禁止将项目任何资料放到任何平台以任何方式售卖!
</code></pre>
<ul>
<li>[OneTag 代码部分] <a href="https://gitee.com/HaveALitttleSao/uwb_stm32_base_station" target="_blank">https://gitee.com/HaveALitttleSao/uwb_stm32_base_station</a></li>
<li>[Tag_HMI 代码部分] <a href="https://gitee.com/cyril0124/uwb_stm32_tag_v3.0" target="_blank">https://gitee.com/cyril0124/uwb_stm32_tag_v3.0</a></li>
<li>[QT上位机] <a href="https://gitee.com/opsang/uwb_-qt" target="_blank">https://gitee.com/opsang/uwb_-qt</a></li>
<li><strong>注:由于Tag_HMI的代码包含GUI,所以大小超过20M无法在附件中上传,请自行到Gitee中查看下载</strong></li>
</ul>
<h1>4、硬件部分</h1>
<h4>第一代硬件版本</h4>
<p>第一代硬件我们采用STM32驱动DWM1000,利用TI的CC1310用来进行定位数据传输,根据实际用途,设计了三款的基站标签二合一板:
<img src="//image.lceda.cn/pullimage/dAZLeizMHJSfxVthbHPpEPtAzm9AyyqAnCvz0ZFo.png" alt="image.png">
Model 1 (STM32+CC1310+DWM1000)</p>
<pre><code>能够完成基本的UWB定位功能,添加了CC1310,能够在898MHZ的频段下传输UWB定位数据,具有独立通讯能力
</code></pre>
<p><img src="//image.lceda.cn/pullimage/C1DiVceFMrKQMxnY3TivASY4ke652FBnISq0Ruzf.png" alt="image.png">
Model 2 (STM32+CC1310+DWM1000+ESP32+IMU+AP+MOTOR)</p>
<pre><code>双层叠板设计,底板是一个单独的定位模组,顶板集成ESP32以及CC1310等,能够根据需求更换顶板,具有高可适用性
</code></pre>
<p><img src="//image.lceda.cn/pullimage/9ovWw7yBmVnmHP1oixMGbsIcaMzrN2xuKN2bhdLF.png" alt="image.png">
Model 3 (STM32+CC1310+DWM1000)</p>
<pre><code>相比于Model1 UWB天线采用胶棒天线,CC1310采用IPEX外接天线,具有更强的射频性能,抗干扰能力强,适合长距离应用
</code></pre>
<p>这些初代硬件版本的体积小,安装足够方便,携带足够便携,便于部署到各种应用场合,但是考虑到旧版硬件的可升级性、可扩展性、可玩性、以及数据的可视化做得并不理想所以就有了下面的这些第二代的硬件</p>
<h4>第二代硬件版本 (OneTag & Tag_HMI)</h4>
<p><img src="//image.lceda.cn/pullimage/Y5xj6V6P0ISAiuBKjEPGRX1K3W2EnEQ9K58CQmZe.png" alt="image.png"></p>
<h5>(1) OneTag</h5>
<p>受到APPLE的AirTag启发,我们设计了一款只有一个一元硬币大小的UWB定位板(基站/标签),具有超高集成度,所以命名为 OneTag,包括下面这些硬件模块以及接口:</p>
<ul>
<li>STM32F4</li>
<li>ESP32</li>
<li>UWB定位模组 (DWM1000)</li>
<li>运动传感器(BMI160)</li>
<li>震动马达</li>
<li>USB串口 (CH340E)</li>
<li>LED</li>
<li>按键</li>
<li>ESP32与STM32的扩展IO</li>
</ul>
<p>在能够完成基本的定位功能之外,提供的ESP32可利用蓝牙与手机端进行交互,利用WIFI可将数据直接上传至互联网,提供的IMU能够完成轨迹估计以及定位导航,提供的按键、LED、震动马达能够提供良好的非视觉交互体验,同时板上的两排扩展IO能够支持更多功能的扩展,充满可扩展性!</p>
<p>PCB 3D仿真图:</p>
<p><img src="//image.lceda.cn/pullimage/eGylsKn27kdvm4oHk2EPqUnADGwWawIIa5KrlHKu.png" alt="image.png"></p>
<p>硬件实物图:</p>
<p><img src="//image.lceda.cn/pullimage/n86jvUyLxa9jDFKHChfMjw9q0NMKpDIkMWQwMYZf.png" alt="image.png"></p>
<p><img src="//image.lceda.cn/pullimage/RdlxvPnwaREaA1hFCp9IaVUDKBwl1Wd3ncEIXsVK.png" alt="image.png"></p>
<p>原理图:</p>
<p><img src="//image.lceda.cn/pullimage/e5vxUGXWE9HdN9x9MaXkZmIYPY5aLEKiVGvYCKwI.png" alt="Snipaste_2021-09-16_18-19-45.png"></p>
<p>PCB:</p>
<p><img src="//image.lceda.cn/pullimage/FBYuYdSxcZSWC61Tkz3JPw2frvfshi0o2qu8tR8e.png" alt="Snipaste_2021-09-16_18-21-10.png"></p>
<h5>(2) Tag_HMI</h5>
<p>为了演示我们的算法功能,以及定位算法,我们设计了一款同样比较小巧的定位标签,主要用来进行数据可视化与人机交互,因此命名为Tag_HMI,包括下面这些硬件模块:</p>
<ul>
<li>STM32F4</li>
<li>ESP32</li>
<li>UWB定位模组 (DWM1000)</li>
<li>运动传感器 (MPU9250)</li>
<li>震动马达</li>
<li>USB串口(CH340E)</li>
<li>LED</li>
<li>按键</li>
<li>电子罗盘 (HMC5983)</li>
<li>1.3寸 触摸LCD屏幕</li>
<li>锂电池充电
通过LCD触摸屏幕结合LVGL制作的GUI,可以显示各个基站的在线信息,显示地图坐标位置</li>
</ul>
<p>PCB 3D仿真图:</p>
<p><img src="//image.lceda.cn/pullimage/2TVShPDMtTsFpeqxQ4CN4o4xMnZxrFEoqQfPL958.png" alt="image.png"></p>
<p>硬件实物图:</p>
<p><img src="//image.lceda.cn/pullimage/CyTiusVwbia3X9b48lbYd4aBeWyJMiBh4XvptbB6.png" alt="image.png"></p>
<p>基于LVGL的GUI界面:</p>
<p><img src="//image.lceda.cn/pullimage/nvTWFnbedWAccRNJowfYgslgGu7XzZP737tI4CEj.png" alt="image.png"></p>
<p>原理图:</p>
<p><img src="//image.lceda.cn/pullimage/5pc6VUChKtCp1o8vxuD3NO9YvtxZFHRsw51Uathb.png" alt="Snipaste_2021-09-16_18-21-57.png"></p>
<p>PCB:</p>
<p><img src="//image.lceda.cn/pullimage/sNznto99YeBXVaUKreJYHTVK4joB2heXhARS3tgm.png" alt="Snipaste_2021-09-16_19-41-17.png"></p>
<h1>5、软件部分</h1>
<h2>1.系统上位机</h2>
<ul>
<li>上位机设计框图:</li>
</ul>
<p><img src="//image.lceda.cn/pullimage/rPrpWwEFTuLe9rzeth5FvIhw3uapKQMXUwp4Lwye.png" alt="1992ab7b69998df7d0b5703299be898.png"></p>
<ul>
<li>设计流程如下:</li>
</ul>
<p><img src="//image.lceda.cn/pullimage/ZjBP0lU7cfOPHiNUyDPj90QGlbZIWMIZUP1CIAOJ.png" alt="image.png"></p>
<p>上位机通过QT5开发,其中使用了TabWidget作为核心控件,同时分为三个子Tab,Tab1中使用了TableWidget,用于记录此套系统中标签和基站的各种参数与状态,方便对此套系统的运作情况进行实时的监控。Tab2则绘制了一张地图,其中包含了标签和基站,默认情况下基站会呈现红色状态(离线),当插入基站时相对于的基站会呈在线状态(蓝色),如果网络中扫描到标签时,则会显示标签当桥相对与各个基站的相对位置,同时对标签进行监听,当鼠标悬浮时会显示标签的状态和坐标。并且集成了标签轨迹绘制等功能,完善了系统的应用。Tab3则在TextEdit中记录接收到数据,同时显示一些后台的日志信息。</p>
<p><img src="//image.lceda.cn/pullimage/ecyX5o6i2km7fF2rIStKCnSvVrlEh9fvZ6ydo3KZ.png" alt="image.png"></p>
<p>终端基站与软件上位机通过UART通信,二者有自己独立的通信协议。上位机会下发“设备搜索包”给终端基站。终端基站收到该请求包后,则会对此网络中的所有基站和标签进行一次搜索,若得到响应,则将所有的数据打包成“设备响应包”,并通过特定的通信协议再上传到上位机。上位机接收到这一包数据之后对该数据包进行解码,判断此时有几个基站有几个标签,以及它们各自的坐标信息以及信道信息。最后通过Tablewidget控件以列表的形式可视化呈现出来,实时的记录其信道、坐标、地址、是否在线等等。以大局的角度来管理这一套系统中的各个基站和标签。 在解算“设备响应包”后,上位机后台会对各个标签当前的位置进行实时的刷新绘制,显示其与各个基站之间的相对距离,将坐标数据转化为图像,作为可视化的接口。此外,上位机集成了轨迹绘制、保存等功能。开始后会对各个标签的运动轨迹进行实时绘制更新,同时有需要的话可直接将坐标数据以txt文件保存到本地。</p>
<h2>2. 定位算法</h2>
<h3>(1)TOA定位算法</h3>
<p>TOA定位算法原理是通过测算标签到基站之间电磁波的飞行时间从而得到标签到基站的距离,再以这个距离为半径,基站的坐标为圆心分别作圆,建立一个坐标模型,如下图。</p>
<p><img src="//image.lceda.cn/pullimage/KBuv0F0ANE2ERiAk14C0rxfSLsLYiSBil3G7y70E.png" alt="图1.png"></p>
<p>理想状态下,所有测距数据均准确,作出的各个圆会有一个共同的交点,这一点的坐标即是标签的坐标。但在实际应用中由于各种因素干扰会使得测量出现误差,这个误差会导致结果会偏大或者偏小,因此利用实际测得的数据建立的模型中,三个圆不会有一个共同的交点,而是更有可能是以下这些情况。</p>
<p><img src="//image.lceda.cn/pullimage/2tS2ZnLgbifI95tekEWkeKPsHxObdCJq5yPkFJTQ.png" alt="图2.png"></p>
<p>在这些情况中,虽然三个圆没有严格地相交于一点,但是依然蕴含着标签的坐标信息,我们需要设计一个可以从这些数据中估算出标签坐标的算法,并且能够兼容以上不同的情况。</p>
<h3>(2)算法设计</h3>
<p>算法的目标是从以上的这些情况中估算出一个最可能的坐标点,步骤如下:</p>
<h4>步骤一 :求参考点</h4>
<p>对于坐标模型的三个圆形,我们首先任意选择两个进行考察。
对于两个圆,他们之间的关系有四种:相交,相切,相离,内含。在两个圆的情况下,无论他们之间是什么关系,我们都能取到一个我们认为最接近标签真实坐标的参考点。取法如下:</p>
<h5>相交时</h5>
<p>两圆相交时,会有两个交点,我们选择其中一个交点作为参考点。选择的依据是这两个交点到另外一个圆的圆心与这个圆站的半径的差,谁更小则取谁作为参考点(图中的红点)</p>
<p><img src="//image.lceda.cn/pullimage/kOvxTtSIPaTD6JKaxR1fQu0jFOfKUWNKNJxUt1Gx.png" alt="图3.png"></p>
<h5>相切时</h5>
<p>选择切点作为参考点(图中的红点),(内切外切都一样)</p>
<p><img src="//image.lceda.cn/pullimage/coYthALBtPIXk1QWxayICdWFLZekoeUQKPBtrLju.png" alt="图4.png"></p>
<h5>相离时</h5>
<p>在圆心连线上,选择一点,该点能将线段按半径的比例进行分割,该作为参考点(图中的红点)</p>
<p><img src="//image.lceda.cn/pullimage/FvqYu1EoiNYxGkiFq9TdoAd5Lhwif5s2FhSMT5rM.png" alt="图5.png"></p>
<h5>内含时</h5>
<p>找到圆弧到圆弧的线段中最短的那条,取其中点作为参考点(图中的红点)。</p>
<p><img src="//image.lceda.cn/pullimage/LToFHiYICcFweOXeF1FgOySPQOzRUuJDftVzb0L7.png" alt="图6.png"></p>
<h4>步骤二:由从参考点估计标签坐标</h4>
<p>将三个圆两两组合,分别求出他们的参考点,于是可以得到三个参考点。
用这样的寻找参考点的策略可以对所有情况都能找到三个参考点(图中的红点)。</p>
<p><img src="//image.lceda.cn/pullimage/ux9Cv9OXVtnrP0kU01dt61LEvvIuEdXKZsp5LlBo.png" alt="图7.png"></p>
<p>三个参考点形成一个三角形,用三角形的质心作为标签坐标(图中的蓝色点).</p>
<h1>6、BOM清单</h1>
<h2>OneTag & Tag_HMI BOM清单</h2>
<p><img src="//image.lceda.cn/pullimage/qdrxWZOmiAAAyLEpM7j2QVGyccox8ENAJrFb1mDW.png" alt="Tag_HMI_1~29.png">
<img src="//image.lceda.cn/pullimage/RWCOLn9qj3uiw3n02A64hwzx1PdIpp23pZapemsi.png" alt="Tag_HMI_30~59.png"></p>
<h1>7、大赛LOGO验证</h1>
<p><img src="//image.lceda.cn/pullimage/Vh2jOov4OZA5CaOiqPLpznygctDDkIkVIK5JFwcx.png" alt="image.png"></p>
<h1>8、演示您的项目并录制成视频上传</h1>
评论(10)