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

news2024/10/1 6:01:49

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 幕后

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MicoZone-Maven

一、理论 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供项目构建和依赖管理支持的工具。 通过Maven管理依赖的优势: 1、通过在pom.xml中指定jar包坐标即可自动从仓库下载依赖 2、如果jar包存在子依赖会自动下载子依赖包 3、如果jar包之间存在冲突…

Web安全 - 服务端请求伪造SSRF(Server-Side Request Forgery)

文章目录 OWASP 2023 TOP 10SSRF 导图SSRF 概念SSRF的工作原理SSRF攻击场景SSRF防御策略1. 严格验证用户输入2. 禁用或限制对内部网络的访问3. 强制使用外部API代理4. 禁止直接访问敏感资源5. 输入内容长度限制6. 检测和监控7. 确保对HTTP请求的处理安全 SSRF防御实现方案1. 白…

【鸿蒙开发】05 登录Demo解析

文章目录 一、功能介绍 在鸿蒙开发中,一个完善的登录功能是许多应用程序的基础需求。本文将详细介绍一个鸿蒙 App 登录 Demo,包括其功能介绍、代码解析以及代码 demo 的下载地址。 本文初始代码从华为开发者网站下载,根据该Demo进行内容调整。…

【Fast-LIO系列】Fast-LIO、Fast-LIO2、Faster-LIO系列特点分析

【FAST-LIO】Fast-LIO系列特点分析 1. FAST-LIO核心贡献1.将IMU和Lidar特征点紧耦合在一起2.使用反向传播考虑到了运动补偿3. 基于IESKF中的 卡尔曼增益更新 K 2. FAST-LIO2核心贡献(2021年)1. 不用线,面特征点而使用全局点云2. 使用ikd-tree存储点云3. ikd-Tree 3.…

P3131 [USACO16JAN] Subsequences Summing to Sevens S Python题解

[USACO16JAN] Subsequences Summing to Sevens S 题目描述 Farmer John’s N N N cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to ta…

C语言 | Leetcode C语言题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {for (int i 0; i < numsSize; i) {int x (nums[i] - 1) % numsSize;nums[x] numsSize;}int* ret malloc(sizeof(int) * numsSize);*returnSize 0;for (in…

特征工程——一门提高机器学习性能的艺术

当前围绕人工智能(AI)和机器学习(ML)展开的许多讨论以模型为中心&#xff0c;聚焦于 ML和深度学习(DL)的最新进展。这种模型优先的方法往往对用于训练这些模型的数据关注不足&#xff0c;甚至完全忽视。类似MLOps的领域正迅速发展&#xff0c;通过系统性地训练和利用ML模型&…

ZYNQ: GPIO 之 MIO 控制 LED 实验

GPIO 之 MIO 控制 LED 实验目的 使用 GPIO 通过两个 MIO 引脚控制 PS 端两个 LED 的亮灭&#xff0c;实现底板上 PS_LED0、PS_LED1 两个 LED 灯同亮同灭的效果。 简介 ZYNQ PS 中的外设&#xff08;如 USB 控制器、UART 控制器、I2C 控制器以及 GPIO 等等&#xff09;可以通…

亲测无限坐席在线客服系统源码/二开版/基于ThinkPHP+搭建教程

源码简介&#xff1a; 亲测了一款实用的无限坐席在线客服系统源码&#xff0c;这可是基于ThinkPHP框架开发的二开版哦&#xff01;里面还附带了一份超详细的搭建教程。 安装过程简直不能更简单&#xff0c;只需一键操作&#xff0c;启动两个端口就搞定了。而且&#xff0c;它…

动态库的加载全过程

区分一组概念&#xff1a;逻辑地址&#xff0c;虚拟地址&#xff0c;物理地址。 逻辑地址&#xff1a;是我们的代码在编译过程&#xff0c;编译器帮对每一条代码所生成的指令所编写的地址。 物理地址&#xff1a;当程序被放入到内存中时&#xff0c;内存与每一条指令所对应的…

回执单识别-银行回单识别API-文字识别OCR API

银行回单是一种由银行提供的交易凭证&#xff0c;记录了账户资金的交易明细。它通常包括存款、取款、转账、汇款、支付等各种类型的资金往来信息。银行回单可以是纸质的&#xff0c;也可以是电子版的&#xff0c;内容详尽记录了交易的相关信息&#xff0c;具有法律效力&#xf…

CSS 效果:实现动态展示双箭头

最近写了一段 CSS 样式&#xff0c;虽然不难&#xff0c;但实现过程比较繁琐。这个效果结合了两个箭头&#xff0c;一个突出&#xff0c;一个内缩&#xff0c;非常适合用于步骤导航或选项卡切换等场景。样式不仅仅是静态的&#xff0c;还可以通过点击 click 或者 hover 事件&am…

【机器学习(五)】分类和回归任务-AdaBoost算法

文章目录 一、算法概念一、算法原理&#xff08;一&#xff09;分类算法基本思路1、训练集和权重初始化2、弱分类器的加权误差3、弱分类器的权重4、Adaboost 分类损失函数5、样本权重更新6、AdaBoost 的强分类器 &#xff08;二&#xff09;回归算法基本思路1、最大误差的计算2…

JavaSE——面向对象2:方法的调用机制、传参机制、方法递归、方法重载、可变参数、作用域

目录 一、成员方法 (一)方法的快速入门 (二)方法的调用机制(重要) (三)方法的定义 (四)注意事项和使用细节 1.访问修饰符(作用是控制方法的使用范围) 2.返回的数据类型 3.方法名 4.形参列表 5.方法体 6.方法调用细节说明 (五)传参机制 1.基本数据类型的传参机制 …

C++模拟实现vector容器【万字模拟✨】

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 项目实战C系列_Stark、的博客-CSDN博客 数据结构与算法_Stark、的博客-CSDN博客 座右铭&#xff1a;梦想是一盏明灯&#xff…

idea2023-快速搭建一个本地tomcat的javaWeb项目(从0到1保姆教学)

前言 如何在新版idea中搭建一个javaWeb项目&#xff0c;并且应用在物理的tomcat中&#xff0c;本文将进行从零到一&#xff0c;完成搭建步骤&#xff0c;以及相关注意事项的讲解。 为什么需要配置tomcat&#xff1f; 我们开发的javaWeb项目&#xff0c;最后都需要打包部署到真正…

了解华为计算产品线,昇腾的业务都有哪些?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 随着 ChatGPT 的现象级爆红&#xff0c;它引领了 AI 大模型时代的深刻变革&#xff0c;进而造成 AI 算力资源日益紧缺。与此同时&#xff0c;中美贸易战的持续也使得 AI 算力国产化适配成为必然趋势。 …

Flet介绍:平替PyQt的好用跨平台Python UI框架

随着Python在各个领域的广泛应用&#xff0c;特别是在数据科学和Web开发领域&#xff0c;对于一个简单易用且功能强大的用户界面&#xff08;UI&#xff09;开发工具的需求日益增长。传统的Python GUI库如Tkinter、PyQt虽然功能强大&#xff0c;但在易用性和现代感方面略显不足…

ZYNQ:Hello World 实验-PS-串口打印“Hello World”

Hello World 实验目的 PS-串口打印“Hello World” 创建 Vivado 工程 设置工程名为“hello_world” 使用 IP Integrator 创建 Processing System 搜索栏中键入“zynq”&#xff0c;找到并双击“ZYNQ7 Processing System” 串口配置 配置完成后的 ZYNQ7 Processing Sys…

微信小程序 图片的上传

错误示范 /*从相册中选择文件 微信小程序*/chooseImage(){wx.chooseMedia({count: 9,mediaType: [image],sourceType: [album],success(res) {wx.request({url:"发送的端口占位符",data:res.tempFiles[0].tempFilePath,method:POST,success(res){//请求成功后应该返…