文章目录

  • 前言
  • 1. 第一径检测算法描述
    • 1.1 问题的提出
    • 1.2 实现过程
    • 1.3 参数配置
  • 2. 总结
  • 参考文献

前言

使用超宽带进行测距,对抗多径是一个非常重要的问题,其本质是在最强径不是第一径(如LOS信号不是直达径)的情况下还能找到真正的第一径,而且可以准确的测量第一径的上升沿时刻。本文对Decawave的芯片中所实现的一种第一径检测算法进行介绍。


1. 第一径检测算法描述

1.1 问题的提出

该问题基于类似802.15.4a中描述的UWB测距HRP模式展开。该模式下测距的基本原理是读取信道CIR,并根据CIR找到最强径,作为到达时刻(RMARKER)的测量。由于多径信号的存在,导致找到的最强径不一定是真正的直达径。同时,多径信道也可能将最强径展宽,从而影响测量精度。
一个典型的多径信道下测得的CIR如下图所示:

对于直射信号而言,其信号强度未必最强,但一定是最早出现的,其他多径信号由于反射路径带来的延时,必然落后于直达径。因此,可以依据该特点在CIR进行第一径检测,从而引出第一径检测算法LDE(Leading Edge Detection)。

1.2 实现过程

  • 对接收机经过相关和积分后的CIR结果进行循环移位,将最大值位置移动到整个CIR周期的大约3/4处。设移位完成后的CIR信号数组为cir[1:N],其中N为一个周期内得到的CIR点数,考虑目前典型的UWB芯片,在码片数位31的模式下,N=992,对应1us的符号周期。
  • 从这一个周期的CIR信号中选取一段噪声数据进行噪底估计。设选取的数据为cir[n1:n2]。理论上来说,n1可以选取接近1的数,n2则需要选取一个离最大值(即整个数据长度的3/4)较远,但又不是特别小的值。实际上,由于一个周期的CIR数据的尾部一般会有一个能量衰减的过程,而上一个周期的尾部可能会翻叠到当前周期的前部,因此噪底估计也不能从当前周期的头部开始,也就是说,n1需要选取一个合理的数。n1和n2可以根据实际情况进行调整。
  • 对cir[n1:n2]的噪声数据进行统计,得到噪声的均值 μ n \mu_n μn​和方差 σ n \sigma_n σn​,并记录噪声的最大值 ψ n m a x \psi_n^{max} ψnmax​
  • 根据噪声均值和方差计算峰值门限 t h p e a k = max ⁡ ( p × ψ n m a x , μ n + q × σ n ) th_{peak}=\max(p \times \psi_n^{max}, \mu_n + q \times \sigma_n) thpeak​=max(p×ψnmax​,μn​+q×σn​),其中p和q是可配的参数
  • 从cir[n2+1]开始,寻找幅度大于上述门限的第一个cir值,记录该值所在的位置为 i i i
  • 选取cir[i-3:i+4]共8个点,前后相减,得到7个一阶导数值:d_cir[1:7] = cir[i-2:i+4] - cir[i-3:i+3]
  • 从d_cir[1:7]中选取连续三个点v[1:3],满足v[2]>max(v[1], v[3]),对这三个点进行拟合,找到最大值所在的位置,该位置即是LDE算法所得到的第一径的位置: τ = 1 2 v ( 3 ) − v ( 1 ) v ( 2 ) − min ⁡ ( v ( 1 ) , v ( 3 ) ) \tau = \frac{1}{2}\frac{v(3)-v(1)}{v(2)-\min(v(1),v(3))} τ=21​v(2)−min(v(1),v(3))v(3)−v(1)​
#mermaid-svg-vC7zqK88dcuh2SUz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vC7zqK88dcuh2SUz .error-icon{fill:#552222;}#mermaid-svg-vC7zqK88dcuh2SUz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vC7zqK88dcuh2SUz .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-vC7zqK88dcuh2SUz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vC7zqK88dcuh2SUz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vC7zqK88dcuh2SUz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vC7zqK88dcuh2SUz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vC7zqK88dcuh2SUz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vC7zqK88dcuh2SUz .marker.cross{stroke:#333333;}#mermaid-svg-vC7zqK88dcuh2SUz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vC7zqK88dcuh2SUz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-vC7zqK88dcuh2SUz .cluster-label text{fill:#333;}#mermaid-svg-vC7zqK88dcuh2SUz .cluster-label span{color:#333;}#mermaid-svg-vC7zqK88dcuh2SUz .label text,#mermaid-svg-vC7zqK88dcuh2SUz span{fill:#333;color:#333;}#mermaid-svg-vC7zqK88dcuh2SUz .node rect,#mermaid-svg-vC7zqK88dcuh2SUz .node circle,#mermaid-svg-vC7zqK88dcuh2SUz .node ellipse,#mermaid-svg-vC7zqK88dcuh2SUz .node polygon,#mermaid-svg-vC7zqK88dcuh2SUz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vC7zqK88dcuh2SUz .node .label{text-align:center;}#mermaid-svg-vC7zqK88dcuh2SUz .node.clickable{cursor:pointer;}#mermaid-svg-vC7zqK88dcuh2SUz .arrowheadPath{fill:#333333;}#mermaid-svg-vC7zqK88dcuh2SUz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vC7zqK88dcuh2SUz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vC7zqK88dcuh2SUz .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-vC7zqK88dcuh2SUz .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-vC7zqK88dcuh2SUz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vC7zqK88dcuh2SUz .cluster text{fill:#333;}#mermaid-svg-vC7zqK88dcuh2SUz .cluster span{color:#333;}#mermaid-svg-vC7zqK88dcuh2SUz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vC7zqK88dcuh2SUz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

CIR估计
寻找噪声区间
对噪声区间的数据进行统计获得噪声均值和方差
用噪声均值/方差/最大值计算第一径门限
搜索第一个大于第一径门限的CIR位置
选取该位置附近8个点进行一阶导数的最大值的拟合
拟合处的最大值所在的位置即为最终计算所得的第一径位置

1.3 参数配置

上述过程中,有如下几个参数可以作为寄存器配置:

  • n1:进行噪声统计的数据区间的起始值
  • n2:进行噪声统计的数据区间的终止值
  • p:使用噪声峰值计算第一径幅度门限的乘性因子参数
  • q:使用噪声统计均值和方差计算第一径幅度门限的乘性因子参数

另,在统计噪声的时候,可以通过一个滑动窗进行平滑后再进行统计,该滑动窗的长度 w w w以及平滑的系数 α \alpha α同样可以作为可配置参数。

2. 总结

由上述算法描述可知,由于最终拟合的一阶导数最大值的位置为一个小数,因此第一径的拟合精度可以远大于CIR采样的分辨率。该算法不仅在很大程度上消除了多径信道带来的误差影响,也是超宽带芯片采用124.8MHz采样,但测距精度可以达到厘米级的一个内在原因。

参考文献

  • Receiver For Use In An Ultra-wideband Communication System, US patent, US10,090,879 B2, 2014

超宽带(UWB)学习笔记——消除多径误差的第一径检测算法相关推荐

  1. Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序

    Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...

  2. 【李宏毅深度强化学习笔记】5、Q-learning用于连续动作 (NAF算法)

    [李宏毅深度强化学习笔记]1.策略梯度方法(Policy Gradient) [李宏毅深度强化学习笔记]2.Proximal Policy Optimization (PPO) 算法 [李宏毅深度强化 ...

  3. OpenGL 学习笔记 II:初始化 API,第一个黑窗,游戏循环和帧率,OpenGL 默认垂直同步,glfw 帧率

    前情提要: 上一篇: OpenGL 学习笔记 I:OpenGL glew glad glfw glut 的关系,OpenGL 状态机,现代操作系统的窗口管理器,OpenGL 窗口和上下文 OpenGL ...

  4. AI学习笔记(四)相机模型、图像聚类算法

    AI学习笔记之相机模型.图像聚类算法 相机模型 相机与图像 坐标系 相机成像 世界坐标系到摄像机坐标系 摄像机坐标系到图像物理坐标系 图像物理坐标系到图像像素坐标系 摄像机坐标系到图像像素坐标系 世界 ...

  5. ESL2.5 高维问题的局部方法学习笔记(含泛化误差分解MSE分解)

    2.5 高维问题的局部方法 这是一篇有关<统计学习基础>,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻译成 ...

  6. 学习笔记16--环境感知实例之车道线检测

    本系列博客包括6个专栏,分别为:<自动驾驶技术概览>.<自动驾驶汽车平台技术基础>.<自动驾驶汽车定位技术>.<自动驾驶汽车环境感知>.<自动驾驶 ...

  7. 超宽带 (UWB) 解释 (以及为什么它在 iPhone 11)

    今年的一批iPhone中的新芯片之一是U1:它提供了超宽带(UWB)连接,与物联网(IoT)技术相结合,可以为企业和消费者提供无数新服务. 正如苹果所言,UWB技术提供了 "空间感知&quo ...

  8. Lombok学习笔记— 消除冗余java代码

    2019独角兽企业重金招聘Python工程师标准>>> lombok官网:http://projectlombok.org/ lombok开源中国连接:http://www.osch ...

  9. 一个后端开发人员的node.js学习笔记(一)安装与第一个服务器

    2019独角兽企业重金招聘Python工程师标准>>> 1.Node.js的下载和安装 Node.js安装包及源码下载地址为:https://nodejs.org/en/downlo ...

最新文章

  1. 微服务 Rpc和Rest协议
  2. C Primer Plus (第五版) 第十章 数组和指针 编程练习
  3. 20165219 预备作业3 Linux安装及学习
  4. 复现经典:《统计学习方法》​第17章 潜在语义分析
  5. ACM训练总结(大二)
  6. 实现了发动机功能,支持Slider Motor、Hinge Motor、Hinge2 Motor。
  7. 多实例kerberos_如何使用Kerberos链接两个SQL Server实例
  8. CREO图文教程:三维设计案例之一腔多模设计(定位参照零件导入模具模型)图文教程之详细攻略
  9. ARMv8-A架构基础之A64指令
  10. 「文档编写」- 常见序号写法 @20210412
  11. 小米平板2,Windows10与Android互刷教程,小米平板2 线刷教程
  12. 虚拟网络监控进阶之路-DeepFlow
  13. Ubuntu安装软件时报错(报错:dpkg: 处理软件包 xxx (--configure)时出错: 依赖关系问题 - 仍未被配置)
  14. 数学实验——函数绘图实验
  15. Python-print 函数之换行
  16. gradle离线下载
  17. 硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)
  18. 武汉云数时代网络科技有限公司代运营如何选择合适产品?
  19. 基于Java实现的一个FTP服务
  20. Unity 打开关闭外部的exe软件

热门文章

  1. 学计算机大专需要买笔记本吗,上大学该买电脑吗?学长:买的时候以为是刚需,买了变成“鸡肋”...
  2. C++ 窗口设计 实践项目2 个人所得税计算器
  3. 使用yolov3-tiny训练一个人脸检测器
  4. mysql RBA,Oracle RBA 浅谈
  5. 【MySQL系列】使用C语言来连接数据库
  6. 【Aegisub快速上手】ASS特效标签合集(仅供参考)
  7. 腾讯云智研发前端校招二面
  8. 《易中天中华史 - 第三卷 奠基者》读书笔记
  9. 贼简单的Android计时工具,老铁,还不试用起来。
  10. 微信小程序属性剖析:wx-key就这么重要吗?