当前位置: 首页 > news >正文

经典文献阅读之--WiROS(用于机器人的WiFi感知工具箱)

0. 简介

近期的许多研究探索了使用基于WiFi的感知技术来改善SLAM(同时定位与地图构建)、机器人操控或探索。此外,WiFi的广泛可用性使其成为最具优势的射频信号。但WiFi传感器缺乏一个准确、易处理、多功能的工具箱,这限制了它们与机器人感应器堆栈的广泛应用。我们开发了WiROS来满足这一迫切需求,为许多与WiFi相关的测量提供了易于消费的ROS主题。具体而言,WiROS是一个即插即用的WiFi感知工具箱,提供了粗粒度的WiFi信号强度(RSSI)、细粒度的WiFi信道状态信息(CSI)和其他MAC层信息(设备地址、数据包ID或频道信息)。此外,WiROS开源了最先进的算法,以校准和处理WiFi测量,为接收到的WiFi信号提供准确的方位信息。代码已经在Github上开源了。

在这里插入图片描述

图1:传感器硬件,如摄像头和激光雷达,已广泛支持ROS节点。本工作发布了WiROS,一个与WiFi传感器兼容的类似ROS节点。

1. 主要贡献

为了在机器人传感器堆栈中提供可访问的WiFi感知信息的广泛目标,我们遵循三项设计原则。WiFi传感器包装应该是:

  1. 准确的:准确提供WiFi感知测量,

  2. 可操作的:快速启动和易于校准,

  3. 多功能的:在配备WiFi的空间中广泛可用

    相反,WiROS利用广泛使用的802.11ac WiFi协议,提供了2倍的感知带宽(提高了准确性)。我们在先前的工作[11]基础上构建了一个WiFi感知框架,做出了以下贡献并克服了先前工作的局限:

    在这里插入图片描述

    图2: CSI可测得的信号参数。可以在接入点的本地坐标系中测量直射路径(实线)和多径(虚线)的到达和离开角度。还可以测量机器人的速

  4. 可扩展的WiFi感知框架:我们提供了一个ROS节点(“CSI-Node”),作为对用于收集CSI的硬件的简单抽象,以便简单集成和利用基于ROS的时间同步。随后,WiROS提取各种物理参数(信号到达和离开的角度,环境中反射的角度位置),以帮助机器人操作。例如,WiROS可以测量单个接收到的WiFi数据包中其他机器人或任意发射器(WiFi AP、笔记本电脑、手机或物联网设备)的方位,而无需与现有网络进行关联或认证。这可以避免网络拥塞,无需与网络基础设施合作,并允许在多个室内空间广泛部署我们的系统。显然,WiROS实现了多功能的WiFi感知,更多细节可在第3节中找到。

  5. 易于校准和设置:商用AP带有独特的硬件偏差,可能会使信号测量产生偏差[17]。这些偏差需要事先测量,并且需要校准测量以估计各种物理参数,包括传输信号的方位。过去的工作[18],[19],[16]需要拆卸设备并手动测量这些偏差,严重降低了传感器平台的可操作性。相反,我们提供了一种自动校准机器人上的相位偏移的解决方案,扩展了[17]中的工作。这允许无忧、实时的无线校准,第4节提供了更多细节。

  6. 感知算法:最后,我们提供了一个ROS节点(“特征提取节点”),使用最先进的技术[20],[21]来估计WiFi信号的到达和离开角度。此外,我们提供了接收到的WiFi信号的直观可视化,以帮助调试。提供此节点有两个关键目的。首先,它允许直接使用WiFi测量进行SLAM和其他导航目的。其次,它为使用WiFi CSI执行更广泛任务(如多普勒估计或飞行时间测量)提供了一个蓝图[22]。这些概念在第5节中进一步阐述。

2. 使用WiROS

首先,我们将演示如何使用Asus RTAC86U [23]与WiROS,然而,其他芯片组也可以轻松使用,并且我们将提供更多关于如何将其他芯片组集成到WiROS框架中的细节。要设置硬件,我们需要按照以下三个简单的步骤进行操作:

  1. 使用catkin编译开源ROS软件包。
  2. 通过刷写提供的固件设置接入点。
  3. 配置提供的ROS参数并将WiFi测量数据作为ROS主题进行传输。

为了详细说明这些步骤,我们将使用这个Asus现成的接入点作为WiFi接收器或发射器来设置WiROS的CSI节点。如图3所示,CSI节点接收蓝色的ROS参数作为输入,稍后将对其进行简要讨论。

在这里插入图片描述

图3:WiROS的模块图:从图1中可看到WiROS中的两个主要模块——CSI节点和特征提取节点,用于提取原始WiFi测量值,并对这些测量值进行校准和处理。蓝色文字表示控制平面参数,红色文字表示公开的测量值。WiROS扩展了底层黑盒‘CSI提取工具包’的功能。

2.1 设置接收器

首先通过“channel”参数配置特定的WiFi频率通道和带宽。还可以通过“packet”参数包括特定MAC地址的过滤器。如果使用全通滤波器,WiROS将监视并提供指定WiFi频道和带宽上所有WiFi设备发出的接收信号的WiFi测量数据。配置完成后,可以通过rosrun wiros csi node csi node命令启动接收器。另外,我们还提供了简单的启动文件以进一步提高可操作性。

然而,如前所述,从特定频道和带宽接收WiFi信号可能会降低在野外环境中的可用性。大多数企业WiFi网络部署多个接入点(AP),为建筑物内的用户提供服务。这些网络中的相邻AP通常部署在不同的频道上,以减少干扰。因此,WiROS将无法获取配置在其他频道上的AP的CSI测量数据。为了确保系统的多功能性,我们实现了一个ROS服务,允许用户切换WiFi传感器的频道。此外,WiROS还自动执行这种频道切换,以定期扫描所有WiFi频道来监视最近AP的频道。可以通过“setup”参数启用这种自动行为。

2.2 设置发射器

此外,研究人员经常需要稳定的WiFi传输源,需要配置WiFi频率通道、带宽或MAC地址。例如,稍后在第4节中,我们将需要配置WiFi接入点以连续发送数据包以计算硬件校准参数。可以使用“channel”和“setup”参数来配置发射器。配置完成后,可以通过与之前相同的rosrun命令启动接入点。接下来,我们将讨论通过以太网连接可用的ROS主题中的测量数据的概述。

2.3 公开的测量数据

一旦接收器设置好,它将捕获配置频率通道和带宽中的环境WiFi信号的测量数据。这些测量数据将通过ROS主题以自定义的WiFi传感ROS消息rf_msgs/Wifi公开,如图3所示。在各种公开信息中,信号强度(RSSI)和信道状态信息(CSI)是两种常用的测量数据。以分贝为单位的RSSI提供了发射器距离的粗略估计,并被广泛用作衡量通信吞吐量的代理,用于改善SLAM性能的特征,或者粗略地绘制发射器的特征。相反,CSI提供了更精细的信息。它是一个复数矩阵,指示了在一组发射频率和接收天线上接收信号的幅度和相位。传输频率的数量由带宽(20、40或80 MHz)控制,其中80 MHz带宽仅在802.11ac协议中支持。默认情况下,对于Asus硬件,有4个接收天线,而其他系统通常只有3个接收天线。更大的带宽和天线数量提供了更准确的感知能力。此外,如果发射器配置了多个天线,则还存在一个用于传输天线数量的附加维度。然而,这些CSI测量数据很难可视化。为了提高WiFi传感器的可操作性,我们将在接下来提供WiROS中包含的实时可视化的更多细节。

2.4 测量数据的可视化和处理

通过部署特征提取节点2,可以处理和可视化通过ROS主题可用的CSI测量数据。该节点提供了两种重要的可视化方式——幅度-相位剖面和方位-距离似然剖面。幅度-相位剖面(见图4(a))提供了CSI测量数据的可视化,分别提供了接收信号的幅度(顶部图像的y轴)和相位(底部图像的y轴)的分贝和度数,以及各种子载波频率(x轴)和四个接收天线(作为不同线条)。方位-距离剖面(见图4©)指示了WiFi信号通过直线直接路径和多个反射路径到达的情况。剖面的峰值指示了发射器的方位(在垂直轴上)以及直接路径信号及其反射路径回波的相对距离。此外,这些剖面的可视化也在补充视频中提供。如图3所示,这两种可视化方式以sensor_msgs/Image的形式导出,可用于调试无线信道,检查所有接收天线是否表现一致,或者调整处理参数,如要使用的算法、平均时间窗口或RSSI阈值。此外,图4(b)中还显示了在接入点的本地坐标系中接收信号的方位(白色箭头)的简单可视化。

在这里插入图片描述

图4:(a) 幅度-相位剖面,顶部图显示了4个接收器和234个子载波频率上的幅度,底部图显示了相位。(b) 信号在接入点本地坐标系中预测方向的简化可视化(白色箭头)。© 方位-距离似然剖面,红线表示最强的接收路径,因此也表示了信号的方向。这些图像通过ROS RViz软件实时可视化。

此外,特征提取节点开源了最先进的方位估计算法[20],[1],[21],以测量接收信号的到达和离开角度。这些测量值实时处理,并通过自定义的WiFi方位消息rf msgs/Bearing暴露为ROS主题。这简要描述展示了WiROS的WiFi传感器在实时数据采集、处理和调试方面的易用性,改进了需要繁琐数据文件后处理的最新系统。除了这一描述,代码存储库中还提供了详尽的设置和使用文档。接下来的部分将提供有关实施细节的进一步具体信息,并讨论图3中的特定流程块。

3. CSI节点:与ROS集成的中间件

“CSI节点”以模块化的C++编写,允许其与多个CSI提取工具包(图3中的黑匣子)进行接口。目前已经在Nexmon-CSI的[11] Asus RT-AC86U [23]平台上进行了测试,因为它是目前最适合商用CSI提取的解决方案。CSI节点已在ROS Kinetic、Melodic和Noetic上进行了测试。它可以直接在树莓派上运行,或者通过专用以太网连接到中央服务器上运行。

3.1 数据路径

WiROS从黑匣子(红色箭头所示)通过以太网连接配置的UDP套接字接收原始CSI数据包。 “解码数据”块将这些原始WiFi数据包解码,以便以易于消费的rf_msgs/WiFi格式呈现测量结果。

3.2 控制路径

CSI节点还通过API调用提供不同的无线电配置。这为最终用户抽象出了特定的硬件实现。专用的“传感器配置”子模块配置底层WiFi无线电。它需要“登录”参数以访问WiFi AP,“通道”参数以配置WiFi频率通道和带宽,“数据包”参数以配置发射机的信标速率或过滤WiFi数据包。
同时运行的两个子模块(如果通过“设置”参数启用)负责跟踪和调整AP使用的频率通道。 “AP扫描器”定期扫描不同的通道,并确定最接近的WiFi AP,以通过rf_msgs/AccessPoints消息呈现信息来重新配置WiFi无线电。 “通道切换”子模块处理最小感知停机时间(小于500毫秒)的通道切换。

4. 快速简便的校准

校准传感器是必要的第一步,必须易于执行。通常,校准可能因不同的频率通道而异,并且对于每个硬件都是独特的。这需要一个易于部署且准确的校准框架,以便跟踪WiFi传感器的可行性。本节将详细介绍通过“特征提取”节点中的Python3脚本提供的一次性无线校准系统。

4.1 用法

为了校准我们在上一节中收集的原始WiFi消息,我们必须在每个天线和频率测量上应用独立的相位校正。为了计算这个校准,首先,按照第2节中讨论的内容,将接收器和发射器配置到特定的WiFi频率通道。接下来,通过将WiFi传感器“接收器”放置在机器人上,将WiFi传感器“发射器”放置在空间中的静态预定义位置,收集原始CSI测量。在这个设置中,我们试图校准WiFi传感器接收器。在相对自由的空间中以任何模式运行机器人,在距离发射器5米半径范围内收集机器人的航迹测量( r t → \overrightarrow{r_t} rt ))作为nav_msgs/Odometry和来自CSI节点的WiFi测量( W t W_t Wt)作为rf_msgs/Wifi。注意发射器( t → \overrightarrow{t} t ))在机器人生成的地图中的位置(通常在使用LiDAR时可见),并测量接收器上的相对天线位置( a → i \overrightarrow{a}_i a i))。这些数据可以输入到校准框架中,以生成无线校准矩阵,该矩阵由“特征提取”节点2提供。

4.2 幕后

…详情请参照古月居

相关文章:

  • AutoSar 通信服务架构,CAN通信诊断详解
  • WPS使用越来越卡顿
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69
  • Vue 3中进行组件开发
  • vue3中< keep-alive >页面实现缓存及遇到的问题
  • OpenAI o1与GPT-4o究竟强在哪里
  • 乱改计量单位引出的问题-《分析模式》漫谈35
  • k8s搭建一主三从的mysql8集群---无坑
  • 数字化那点事:一文读懂数字孪生
  • 详解 Spring Boot 的 RedisAutoConfiguration 配置
  • ide 使用技巧与插件推荐
  • web前端(本地存储问题超过5MB不继续保存解决办法)
  • Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】
  • 网络安全中的 EDR 是什么:概述和功能
  • Leetcode Hot 100 | 543.二叉树的直径 | 递归+优化
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 10个确保微服务与容器安全的最佳实践
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • CSS实用技巧
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Python十分钟制作属于你自己的个性logo
  • Vue 2.3、2.4 知识点小结
  • 闭包--闭包作用之保存(一)
  • 力扣(LeetCode)21
  • 聊聊directory traversal attack
  • 前端学习笔记之观察者模式
  • 新书推荐|Windows黑客编程技术详解
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 怎样选择前端框架
  • 你对linux中grep命令知道多少?
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • # Apache SeaTunnel 究竟是什么?
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #define
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (6)设计一个TimeMap
  • (day 12)JavaScript学习笔记(数组3)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (转)LINQ之路
  • (转)平衡树
  • (转载)利用webkit抓取动态网页和链接
  • ***测试-HTTP方法
  • .Net Core与存储过程(一)
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 解决重复提交问题
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .net分布式压力测试工具(Beetle.DT)
  • .Net各种迷惑命名解释
  • .py文件应该怎样打开?
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [4.9福建四校联考]