草庐IT

基于可见光通信的室内定位与导航及物联网应用

gwpscut 2023-05-25 原文

本人从2014年起从事可见光通信(Visible Light Communication, VLC)相关研究,主要包括:基于光电二极管(PD)、图像传感器(camera)的高精度可见光定位算法(Visible Light Positioning, VLP)、基于可见光通信的移动机器人定位与导航、成像可见光通信(Optical Camera Communications, OCC)、基于可见光通信的物联网(Internet of Things, IoT)应用、水下可见光通信等。

本博文为本人在可见光通信领域的工作及系列demo的总结。本人一直希望能促进可见光通信技术的进一步发展及产业化落地,希望能遇到更多从事可见光通信的朋友,多交流、合作。也希望此博客可以给大家一些motivation,共同促进行业的发展💪

特别鸣谢:华南理工大学-发光材料与器件国家重点实验室-文尚胜教授、华南理工大学-创新创业孵化基地、及R&C工作室历年学生的共同努力。

科研非一人之科研   As a researcher, I think there are two responsibilities: on one hand, to make a major breakthrough in my own research field; on the other hand, to vigorously cultivate a large number of talents in this professional field.

目录

项目演示

基于可见光通信的移动机器人定位与导航

基于可见定位的人机交互

基于可见光通信的物联网应用

实时LiFi通信及通显一体化系统

基于可见光通信的室内定位

可见光成像通信 (OCC)

代表性论文

已授权的可见光通信相关发明专利

更多关于可见光通信的介绍


项目演示

基于可见光通信的移动机器人定位与导航

下面演示为:本人受邀IEEE Photonics Journal Club session做的基于可见光通信的移动机器人定位与导航的讲座。

受邀出席IEEE Photonics Journal Club

下面演示为:本团队搭建的基于移动机器人的可见光通信与激光雷达融合定位系统,该系统在光通信顶会2022 Conference on Lasers and Electro-Optics (CLEO) 上做展示。

2022 CLEO Demo

下面演示为:本人给香港科技大学搭建的,基于可见光通信的移动机器人定位系统,该系统在光通信顶会2021 Optical Fiber Communication Conference and Exhibition (OFC) 上做展示。

本系统多次参与各类比赛与展示。最初搭建于2018年,参加《华南理工大学第十六届“挑战杯”大学生课外学术科技作品竞赛》并获终审决赛一等奖。其后,代表华南理工大学参加《2019年广东省第十五届“挑战杯”大学生课外学术科技作品竞赛》的作品,并获得广东省决赛的特等奖(请见下一演示)。同年,获《第五届中国“互联网+”大学生创新创业大赛》广东省决赛铜奖。2020年,本人将本系统引进华为,在公司内部进行展示。此后,本人再带到香港科技大学,同时把技术无偿给团队去进行各类产业化及科研应用。本系统亦曾连续两年(2020与2021)入选OFC Demo Zone。

PS:HKUST某团队的leader想霸占此技术(学术霸凌),强迫本人交出在华工期间开发的代码,本人拒绝,就反咬我曾经的demo图片的背景是他的公司场地,属于侵权,同时以美国人姿态侮辱我们中国人。故本人离开该团队。虽然后来此人求我回去(“still can offer***, if you help my company to do ***”),但士可杀不可辱!

2021 OFC Demo

一种具有通信与定位功能的智能LED灯具及其机器人定位系统——2020神灯奖申报技术 - 新品发布 - 阿拉丁-网上光亚展

下面演示为:我们搭建的世界首套基于移动机器人的可见光定位系统。该系统虽然比较简漏🤭(机器人同一时刻需要观察到至少两个LED,且覆盖LED数、高度均有限),但却是我们团队所搭建的移动机器人可见光定位与导航的原型体。此作品算是我们团队承上启后的工作,既涵盖了数年在可见光定位领域的积累,而后续大量工作基本都是基于此系统进行了LED-ROI Tracking、LED-ID detection、VLP算法层面的改进。

广东省第十五届“挑战杯”大学生课外学术科技作品竞赛决赛特等奖

此作品荣获广东省第十五届“挑战杯”大学生课外学术科技作品竞赛决赛特等奖(全省116所参赛高校,共有1260项作品获奖,其中特等奖126项、一等奖191 项、二等奖245 项、三等奖698 项),此处展示当年的展板及查新报告。

下面演示为:我们实现的基于LiDAR-SLAM及VLP的高精度机器人定位系统,在大小的场景下,仅仅通过4盏LED即可实现2cm左右的定位误差,且场景会有遮挡等情况。进一步地,此工作结合了障碍物检测及路径规划等算法,真正意义上的实现了高精度定位与导航功能。

Multi-sensor fusion for VLP-SLAM localization and navigation

下面演示为:我们提出的基于RGB-D camera,轮式里程计以及VLP的多传感器紧耦合SLAM系统,该系统在实现高精度的可见光定位的同时,可以构建环境的地图(3D点云地图及LED-landmark地图)。

对于可见光定位而言,目前的工作均需要预先知道LED在环境中的位置(所谓的LED-ID识别就是通过VLC解码获取LED在世界坐标系下的位置)。但是对于大场景而言,如场景中有1000个LED,人为记录及测量这些LED的位置是非常的不现实的,为此我们提出的方法可以有效解决这一痛点。在实现高精度定位的同时,实时的记录及构建LED-landmark的地图,LED的位置无需预先知道,自动的把LED-ID序号与地图位置相关联,同时通过多传感器紧耦合进行联合优化提高定位与建图的精度。

Tightly-coupled SLAM for the VLP Landmark, Wheel Odometer and RGB-D camera

基于可见定位的人机交互

下面演示为:基于ROS-Android交互框架,开发了一款安卓APP,可实现基于可见通信的机器人与行人同时定位。

通过可见光定位分别实现机器人与手机的高精度定位,同时基于ROS-Android交互框架,实现机器人与手机之间的位置共享。

人机交互

基于可见光通信的物联网应用

下面演示为:我们自主研发的基于可见光通信的光二维码应用。可通过APP扫灯接入链接,实现猜灯谜、信息接入等。

该系统亦在团队的广东省光电技术协会作科创分享:【科普作品】一盏有故事的月球灯

具有信息的“月亮”——光二维码

下面的演示为:我们自主研发了基于蓝牙调控的可见光调制驱动芯片,可通过手机APP用蓝牙直接改变LED灯具的VLC编码,而不同的编码对应不同的网络接口。通过另外一台手机的APP扫灯具,实现光二维码扫码接入不同的网页。

蓝牙+VLC物联网应用

下面的演示为:基于可见光通信的光二维码技术,扫灯接入网页。

光二维码

实时LiFi通信及通显一体化系统

下面演示为:我们测试战略合作伙伴(深圳华创芯光科技有限公司)的LiFi产品。该系统可以实现实时的LiFi上网。如有需求,欢迎私信商业合作。

实时LiFi通信

下面演示为:我们团队与深圳利亚德光电有限公司合作的广东省科技计划项目(500万资助项目)《高带宽微芯片覆晶封装小间距显示器件开发与产业化》,项目主要探索了通信与显示器件相结合(通显一体化)的可见光通信系统。

项目简介:本项目开发了一种具有高带宽小间距的显示阵列器件。采用深沟槽蚀刻技术与新型覆晶技术对LED芯片的精确切割和小间距封装,制作出高清晰度的微型显示器件;同时,通过对芯片内部进行材料改性与结构优化实现芯片的高光效与高带宽;最后,设计出双重调制信号,实现显示器件通显一体化。

下面演示为:采用所述高带宽覆晶封装LED芯片设计的,基于STM32F4的,具有可见光通信功能的LED阵列的演示。演示中包含了如何测量带宽的过程。但由于采用的STM32F4的限制,发射信号的频率估计不超过0.5MHZ。但通过MIMO以阵列并行通信的形式,亦可保证通信速率。

基于stm32的具有可见光通信功能的LED阵列

下面演示为:采用FPGA实现的,具有可见光通信功能的LED阵列演示。可输出1MHZ频率的信号并加载到LED上。不同的LED芯片可以以不同的频率发射不同的OOK信号,进而实现空间、频率复用。

基于FPGA的具有可见光通信功能的LED阵列

基于可见光通信的室内定位

下面演示为:仅仅基于一盏LED即可实现高精度可见光定位,与此同时,与PDR (Pedestrian Dead Reckoning) 相结合,在没有LED覆盖的区域(LED短缺或NLOS问题)仍然可以实现定位,而当检测到至少一盏LED时,即可实现PDR位置的矫正。

单灯VLP+PDR

下面的演示为:基于可见光通信的同时定位与校正算法。在实现高精度室内可见光定位的同时,可以矫正手机摄像头的参数,进一步提定位系统的稳定性与精度。虽然也是需要camera至少观测到两盏LED,但无需借助角度等传感器即可实现倾斜三维定位(六自由度定位)。

同时定位与相机参数校正

下面的演示为:我们自主开发的可见光室内定位App,该算法可实现倾斜状态下的可见光定位(基于两盏LED灯)。

可见光倾斜定位

下面演示为:基于可见光通信的室内定位及基于不同位置的信息推送。主要演示demo为视频的后半段,通过PDR+VLP融合,在无LED的区域通过PRR进行定位,而检测到LED时,通过基于VLP的临近法进行粗定位(与前面提到的单灯定位算法不同,此处仅仅采用临近法定位)。看到在不同的LED灯下,通过VLC接收信号,实现基于位置信息的服务(location-based service),进而实现基于不同的位置给用户推送不同的信息。

基于可见光通信的室内定位及信息推送

可见光成像通信 (OCC)

下面演示为:我们搭建的水下可见光成像通信系统,该工作发表于2021年光通信顶级会议 Optical Fiber Communication Conference and Exhibition (OFC)。

2021 OFC Demo 

下面演示为:本团队搭建的,实时可见光成像通信系统(基于C-OOK调制)。

实时可见光成像通信

代表性论文

希望有更多小伙伴一起学习交流,也希望多多引用我们的工作🤭

ESI高被引论文

  • 截至 2022 July/August,下论文被引频次已进入Physics学术领域最优秀的 1% 之列。

  •  截至 2022 July/August,下论文被引频次已进入Engineering学术领域最优秀的 1% 之列。 

PS:有点不太懂这个ESI高被引😂,比如《High-Accuracy Robot Indoor Localization Scheme Based on Robot Operating System Using Visible Light Positioning》的citation更高,而且是IEEE Photonics Journal历史最受欢迎论文之一(第三位,截止到2023年03月),却没进入到ESI高被引行列(不过也可能往年进入了我没留意吧hhh)。 

已授权的可见光通信相关发明专利

专利详情及原文的获取,请见PatentGuruSooPAT中国知网Google Patents

  1. 基于关键帧选取的可见光定位与深度相机的紧耦合方法
  2. 一种基于室内可见光通信的视觉追踪定位系统和方法
  3.  基于卷积神经网络的自编码算法
  4. 一种基于ROS系统的机器人室内可见光定位导航方法和装置
  5. 基于粒子滤波器的移动机器人多传感器融合定位方法
  6. 基于双重调制技术的可见光通信方法及其可见光通信系统
  7. 一种基于神经元网络的可见光通信接收方法及其系统
  8. 一种基于CDMA调制的可见光通信三维定位方法
  9. 一种基于CDMA调制的RSS三角定位迭代方法及系统
  10. 基于CDMA调制的可见光通信定位方法及其定位系统
  11. 一种基于光二维码的多址接入方法及其可见光通信系统
  12. 一种基于粒子群优化的高精度可见光定位方法及系统
  13. 基于脉冲振幅调控的可见光通信方法及其可见光通信系统 
  14. 一种基于地磁传感器辅助的可见光单灯定位方法及系统
  15. 基于空间划分多通道分光束流装置VLC系统及实现方法
  16. 一种用于减少可见光定位时ID量的LED排列方法
  17. 一种用于PAM调制的可见光通信LED灯具
  18. 基于VLC‑Zigbee融合通信技术的自助打印系统
  19. 基于可见光通信技术的电梯轿厢信息传输系统
  20. 基于VLC与IMU的粒子滤波融合定位方法
  21. 一种较高精度可见光室内机器人定位装置
  22. 一种基于模糊效应的视觉可见光通信检测方法
  23. 基于区域匹配算法的ITS-VLC信源检测方法
  24. 一种基于光流法检测与贝叶斯预测的可见光动态定位方法
  25. 一种基于禁忌搜索的可见光定位方法
  26. 一种基于可见光室内定位的CDMA编码方法
  27. 基于卷积神经网络的可见光成像通信解码方法
  28. 基于粒子滤波的VLC-ITS信源追踪提取方法
  29. 一种基于可见光通信的光学天线
  30. 一种融合高斯混合模型和H-S光流法的视频前景目标提取方法

更多关于可见光通信的介绍

有关基于可见光通信的室内定位与导航及物联网应用的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  3. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  4. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  5. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  6. ruby - 即时确定方法的可见性 - 2

    我正在编写一个方法,它将在一个类中定义一个实例方法;类似于attr_accessor:classFoocustom_method(:foo)end我通过将custom_method函数添加到Module模块并使用define_method定义方法来实现它,效果很好。但我无法弄清楚如何考虑类(class)的可见性属性。例如,在下面的类中classFoocustom_method(:foo)privatecustom_method(:bar)end第一个生成的方法(foo)必须是公共(public)的,第二个(bar)必须是私有(private)的。我怎么做?或者,如何找到调用我的cust

  7. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  10. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

随机推荐