草庐IT

Wi-Fi感知:你家的下一个传感器未必是传感器

潘晓宇 2023-03-28 原文

Part 01 Wi-Fi感知的原理 

Wi-Fi感知是一种使用Wi-Fi信号来检测给定环境中物体和人的存在、位置和运动的技术。通过分析Wi-Fi信号的反射和衰减,Wi-Fi感知算法可以确定物体和人的位置、存在和运动,甚至可以穿透墙壁和其他障碍物。要了解Wi-Fi感知的原理,得先了解什么是CSI。

当无线信号在发射器和接收器之间传播时,会被视线路径上的物体阻挡、反射,导致信号发生变化,包括幅度衰减和相位偏差。通信系统需要根据这种变化来对系统参数进行调整,进而保证有效可靠的数据传输,因此就有了CSI。

CSI(Channel State Information),信道状态信息,是一种表征信道变化的参数。其通过对每个子载波信道的频率响应进行采样,来表示信道的幅值和相位信息,一般可表示为:

其中,表示无线信号传输的第条路径(由于无线信号传输有多径效应,所以传输路径不止一条),和表示时刻在第条路径上的信号衰减和时延,表示载波频率。CSI的幅度和相位收到无线发射器和接收器的位移、环境中物体的摆放、和人员活动的影响。所以当我们测量得到了CSI数据,就可以利用对无线系统建模或者机器学习的方法,来推断出环境的变化和人体的活动,包括人员活动强度、类型、人员位置等信息。

Part 02 Wi-Fi感知的应用 

Wi-Fi感知可以探测到人员的移动和行为,具有广泛的潜在应用,包括:

① 室内导航:在大型建筑、机场、购物中心和其他公共空间中,通过Wi-Fi感知,用户可以接收基于位置的实时信息和方向,这可以帮助他们更轻松有效地在环境中导航。

② 智能家居自动化:Wi-Fi感知可使家庭更智能、更高效。例如,Wi-Fi感知可用于在房间无人时自动关灯,或根据人的存在来调节温度。

③ 健康监测:Wi-Fi感知可用于监测老年人和残疾人的健康和安全。例如,Wi-Fi感知可用于跟踪老年人的活动状态,及时检测出异常行为(如跌倒)并报警。

④ 安防:Wi-Fi感知可用于家庭和公共空间的安全防护,如家中无人时,可以利用Wi-Fi感知对家庭区域进行检测,当检测到有人侵入时可报警。

⑤ 零售分析:Wi-Fi感知器可以为商店提供有关消费者行为和偏好的数据。例如,可以用Wi-Fi感知来跟踪购物者的移动和活动,并确定商店的哪些区域最受欢迎,这可以帮助零售商优化运营,改善顾客的购物体验。

在2022年中国移动智慧家庭中心就基于Wi-Fi感知的能力推出了敬老宽带服务,利用Wi-Fi智能感知产品和中国移动宽带组网产品的融合,形成了一套完整的居家安全宽带网络解决方案,能有效地探测家中老年人的活动状态,对老年人的长时间不活动、生活习惯异常等情况进行持续监测,并能够及时告知家人,保障独居老人的安全。

Part 03 Wi-Fi感知的优势 

目前传感手段众多,Wi-Fi感知有着其独特的好处。以上述敬老宽带服务为例,其优势主要体现在以下两点:

  • 隐私保护:不同于摄像头等光学传感器利用图像和视频对人体活动进行探测的方式,Wi-Fi感知利用Wi-Fi设备间的信道状态信息进行感知,不采集图像,不存在侵犯隐私的风险,因此可以用在一些比较敏感的场景,如浴室、卧室等。
  • 成本较低:对于同样具有隐私保护特性的毫米波雷达、红外热成像等人体活动探测手段,都需要集成专用的探测器件,设备价格昂贵,一般都在千元左右;但Wi-Fi感知设备其利用两个Wi-Fi设备间(一般为STA和AP)的信道状态进行感知,无需专用探测设备,成本更低,更有利于大规模部署。
Part 04 Wi-Fi感知的挑战 

尽管Wi-Fi感知有很多好处,但要实现其全部潜力,还需要解决一些挑战,主要包括:

  • 干扰:Wi-Fi感知信号会受到其他Wi-Fi网络以及其他电磁干扰源的干扰。这可能会影响Wi-Fi感知的准确性和可靠性;
  • 场景复杂性:不论是家庭还是公共区域,都是非常复杂的场景,其环境布置、人员活动的类型、强度等都可能有较大的变化,所以如何能让Wi-Fi感知适用于大部分场景,也是需要努力的方向。
Part 05  结语 

总体而言,虽然目前Wi-Fi感知需要克服一些挑战,如干扰、复杂性等,但我们能看到在学术界越来越多的研究团队开始在Wi-Fi感知领域进行研究,产业界各个厂商也开始为Wi-Fi感知开始布局,IEEE也将在2024年发布针对Wi-Fi感知的新标准。所以我们仍然可以相信Wi-Fi感知是一项很有前途的技术,它很有可能改变人们与环境互动的方式。

? 参考文献

[1] Tan S, Ren Y, Yang J, etal. Commodity WiFi Sensing in 10 Years: Status, Challenges, and Opportunities[J]. IEEE INTERNET OF THINGS JOURNAL, 2022(3164569).

[2] Ma, Yongsen, Gang Zhou, and Shuangquan Wang. "WiFi sensing with channel state information: A survey." ACM Computing Surveys (CSUR) 52.3 (2019): 1-36.

有关Wi-Fi感知:你家的下一个传感器未必是传感器的更多相关文章

  1. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  2. Ruby:数组中的下一个/上一个值,循环数组,数组位置 - 2

    假设我有一个没有特定顺序的随机数数组。假设这些是参加马拉松比赛的人的ID#,他们按照完成的顺序添加到数组中,例如:race1=[8,102,67,58,91,16,27]race2=[51,31,7,15,99,58,22]这是一个简化且有些做作的示例,但我认为它传达了基本思想。现在有几个问题:首先,我如何获得特定条目之前和之后的ID?假设我正在查看运行者58,我想知道谁在他之前和之后完成了比赛。race1,runner58:previousfinisher=67,nextfinisher=91race2,runner58:previousfinisher=99,nextfinishe

  3. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

  4. ruby-on-rails - Ruby:给定日期找到下一个第二或第四个星期二 - 2

    我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案

  5. ruby - 用于删除下一个/尾随字符的转义序列? - 2

    除了使用\x08删除前导字符外,是否可以同时删除尾随字符?是否有一个转义序列将删除下一个字符而不是前一个字符?我看到delete显然映射到ASCII127,即Hex7F,但以下代码:puts"a\x08b\x7fcd"产生b⌂cd我预计\x7f会删除它后面的'c'字符,但它没有。 最佳答案 您实际上并没有使用\x08删除任何内容,您只是用“b”覆盖了“a”。想象一下您使用电传纸质终端的过去。您实际上会在纸上看到的是打印的“a”,电传打字机会备份一个空格,然后在其上打印“b”。所有非打印的ascii码都是为了控制电传纸终端的移动而发明

  6. ruby-on-rails - 在 Rails 中计算到下一个生日的天数 - 2

    我有一个模型,其中有一个名为birthday的date列。我如何计算距离用户下一个生日还有多少天? 最佳答案 这是一个简单的方法。你要确保捕获今年已经通过的案例(以及尚未通过的案例)classUser=bday(bday-Date.today).to_iendend并证明这一点!(我添加的是timecopgem以保持计算截至今天(2012-10-16)的准确性require'test_helper'classUserTest 关于ruby-on-rails-在Rails中计算到下一个生日

  7. Ruby 在数组中查找下一个 - 2

    有没有办法在Ruby数组中找到下一个项目?代码:#FindALLlanguagesif!debuglang=Language.allelselang=Language.where("id=?ORid=?",22,32)end#Getallelementselements=Element.where("human_readableISNOTNULL")lang.eachdo|l|code=l.code.downcaseifFile.exists?(file_path+code+".yml")File.delete(file_path+code+".yml")endt1=Time.nowi

  8. ruby-on-rails - 如何计算 Rails 中的下一个、上一个工作日? - 2

    如何在Rails中计算下一个和上一个工作日? 最佳答案 据我了解,这就是您要找的东西?(测试过)require'date'defnext_business_day(date)skip_weekends(date,1)enddefprevious_business_day(date)skip_weekends(date,-1)enddefskip_weekends(date,inc=1)date+=incwhiledate.wday==0||date.wday==6date+=incenddateend您可以按如下方式进行测试:beg

  9. ruby - 我如何在 Nokogiri 中获取下一个 HTML 元素? - 2

    假设我的HTML文档是这样的:NewsSomeinterestingnewshereSportsBaseballisfun!我可以使用以下代码获取标题div:require'rubygems'require'nokogiri'require'open-uri'url="mypage.html"doc=Nokogiri::HTML(open(url))doc.css(".headline").eachdo|item|putsitem.textend但我如何访问以下p标签中的内容,以便News与Someinterestingnewshere等相关? 最佳答案

  10. ruby 在每个循环中获取下一个值 - 2

    我可以在每个循环中获取下一个值吗?(1..5).eachdo|i|@store=i+(nextvalueofi)end答案在哪里..1+2+2+3+3+4+4+5+5=29我还可以获得下一个值的下一个吗? 最佳答案 早在Ruby1.8.7,Enumerable模块有一个方法each_cons这几乎完全符合您的要求:each_cons(n){...}→nileach_cons(n)→an_enumeratorIteratesthegivenblockforeacharrayofconsecutiveelements.Ifnoblock

随机推荐