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传感器包装应该是:
-
准确的:准确提供WiFi感知测量,
-
可操作的:快速启动和易于校准,
-
多功能的:在配备WiFi的空间中广泛可用
相反,WiROS利用广泛使用的802.11ac WiFi协议,提供了2倍的感知带宽(提高了准确性)。我们在先前的工作[11]基础上构建了一个WiFi感知框架,做出了以下贡献并克服了先前工作的局限:
图2: CSI可测得的信号参数。可以在接入点的本地坐标系中测量直射路径(实线)和多径(虚线)的到达和离开角度。还可以测量机器人的速
-
可扩展的WiFi感知框架:我们提供了一个ROS节点(“CSI-Node”),作为对用于收集CSI的硬件的简单抽象,以便简单集成和利用基于ROS的时间同步。随后,WiROS提取各种物理参数(信号到达和离开的角度,环境中反射的角度位置),以帮助机器人操作。例如,WiROS可以测量单个接收到的WiFi数据包中其他机器人或任意发射器(WiFi AP、笔记本电脑、手机或物联网设备)的方位,而无需与现有网络进行关联或认证。这可以避免网络拥塞,无需与网络基础设施合作,并允许在多个室内空间广泛部署我们的系统。显然,WiROS实现了多功能的WiFi感知,更多细节可在第3节中找到。
-
易于校准和设置:商用AP带有独特的硬件偏差,可能会使信号测量产生偏差[17]。这些偏差需要事先测量,并且需要校准测量以估计各种物理参数,包括传输信号的方位。过去的工作[18],[19],[16]需要拆卸设备并手动测量这些偏差,严重降低了传感器平台的可操作性。相反,我们提供了一种自动校准机器人上的相位偏移的解决方案,扩展了[17]中的工作。这允许无忧、实时的无线校准,第4节提供了更多细节。
-
感知算法:最后,我们提供了一个ROS节点(“特征提取节点”),使用最先进的技术[20],[21]来估计WiFi信号的到达和离开角度。此外,我们提供了接收到的WiFi信号的直观可视化,以帮助调试。提供此节点有两个关键目的。首先,它允许直接使用WiFi测量进行SLAM和其他导航目的。其次,它为使用WiFi CSI执行更广泛任务(如多普勒估计或飞行时间测量)提供了一个蓝图[22]。这些概念在第5节中进一步阐述。
2. 使用WiROS
首先,我们将演示如何使用Asus RTAC86U [23]与WiROS,然而,其他芯片组也可以轻松使用,并且我们将提供更多关于如何将其他芯片组集成到WiROS框架中的细节。要设置硬件,我们需要按照以下三个简单的步骤进行操作:
- 使用catkin编译开源ROS软件包。
- 通过刷写提供的固件设置接入点。
- 配置提供的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
ai))。这些数据可以输入到校准框架中,以生成无线校准矩阵,该矩阵由“特征提取”节点2提供。