技术标签: 移动机器人 可见光通信 可见光定位 物联网 Li-Fi
本人从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.
目录
可见光定位(Android Phone,Localization-based Service)
下面演示为:本人受邀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年,本人将本系统引进华为创新实验室(iLab),在公司内部进行展示。此后,本人再带到香港科技大学。无偿把技术给公司评各类奖项,同时也把技术奉献给团队去进行各类产业化、商业化及科研。本系统亦曾连续两年(2020与2021)入选OFC Demo Zone。
2021 OFC Demo
一种具有通信与定位功能的智能LED灯具及其机器人定位系统——2020神灯奖申报技术 - 新品发布 - 阿拉丁-网上光亚展
下面演示为:我们搭建的世界首套基于移动机器人的可见光定位系统。该系统虽然比较简漏(机器人同一时刻需要观察到至少两个LED,且覆盖LED数、高度均有限),但却是我们团队所搭建的移动机器人可见光定位与导航的原型体。此作品算是我们团队承上启后的工作,既涵盖了数年在可见光定位领域的积累(包括:LED-ROI Tracking、LED-ID detection、VLP算法),而后续大量工作基本都是基于此系统进行深层算法的改进。
广东省第十五届“挑战杯”大学生课外学术科技作品竞赛决赛特等奖
此作品荣获广东省第十五届“挑战杯”大学生课外学术科技作品竞赛决赛特等奖(全省116所参赛高校,共有1260项作品获奖,其中特等奖126项、一等奖191 项、二等奖245 项、三等奖698 项),此处展示当年的展板及查新报告。
下面演示为:我们将大挑战杯版本的简陋地图及定位显示改为基于ROS的UI,由激光雷达来预先绘制地图,并且加入路径规划等功能,实现了可见光通信提供准确的位置信息,同时基于避障及路径规划算法实现导航。
基于ROS的移动机器人可见光定位系统实验展示
下面演示为:我们实现的基于两盏LED的移动机器人VLP定位系统(属于大挑战杯获奖的升级版本),采用的更高以及可移动的LED灯杆方便移动展示,于此同时,通过开发Android App实现与ROS机器人更好的交互。
基于两盏LED的移动机器人可见光定位
下面演示为:我们实现的基于单盏LED灯的移动机器人VLP定位系统。对于平面上运动移动机器人,共有3个自由度,通过退化PnP(Perspective-n-Point)问题的分析,相机只需要观察到两盏LED即可实现定位。然而,这一要求会限制LED的间距不能太远,为此我们设计出基于角度传感器辅助的VLP定位系统,仅仅需要一盏LED即可实现移动机器人的高精度室内定位。除此以外,引入室内布局的地图作为map以达到更好的可视化效果。
基于角度传感器与单个LED的移动机器人可见光定位
下面演示为:我们实现的多机器人可见光协同定位。通过多个机器人分别对LED的观测及机器人相互之间的约束,实现多个机器人协调定位。
多机器人可见光协同定位
下面演示为:我们实现的基于惯导(IMU)与VLP松耦合的高精度移动机器人室内定位系统。为了应对短暂的LED被遮挡、NLOS(非视距通信)、及没有LED的情况,我们提出了基于扩展卡尔曼滤波(EKF)的IMU与VLP 松耦合方法,实现了在有LED的情况下,厘米级别的高精度定位,而在没有LED的情况下,靠IMU保证短时间的稳定定位。
基于扩展卡尔曼滤波的VLP与IMU松耦合定位系统
下面演示为:我们实现的基于LiDAR-SLAM及VLP的高精度机器人定位系统,在大小的场景下,仅仅通过4盏LED即可实现2cm左右的定位误差,且场景会有遮挡等情况。通过VLP提供全局信息,odometry提供局部信息,LiDAR提供精确的局部地图测量,保证了整个系统的稳定性。进一步地,此工作结合了障碍物检测及路径规划等算法,真正意义上的实现了可见光定位与导航功能。
值得一提的是,前面的工作中我们用到的地图有两类:LiDAR构建的栅格地图,与人工绘制的室内平面图。但两种均需要人为干预来保证LED安装的位置与地图的原点相对应(因为LED的位置需要已知才可以实现VLP定位)。而此工作中,最大的创新是只需要人工绘制地图的原点跟LED安装位置对应,LiDAR的栅格地图会通过算法自动跟人工绘制地图相对应,这也是实现LiDAR-SLAM与VLP融合的关键。在视频的后半部分,也展示了在两种地图下定位结果是相对应的。而在下一个工作中,我们实现了完全不需要任何预先绘制的地图。
激光雷达与VLP融合定位系统
下面演示为:我们提出的基于RGB-D camera,轮式里程计以及VLP的多传感器紧耦合SLAM系统,通过图优化来耦合多个传感器的观测约束,以此来提升系统的鲁棒性。该系统在实现高精度的可见光定位的同时,可以构建环境的地图(3D点云地图及LED-landmark地图)。
对于可见光定位而言,目前的工作均需要预先知道LED在环境中的位置(所谓的LED-ID识别就是通过VLC解码获取LED在世界坐标系下的位置)。但是对于大场景而言,如场景中有1000个LED,人为记录及测量这些LED的位置是非常的不现实的,为此我们提出的方法可以有效解决这一痛点。在实现高精度定位的同时,实时的记录及构建LED-landmark的地图,LED的位置无需预先知道,自动的把LED-ID序号与地图位置相关联,同时通过多传感器紧耦合进行联合优化提高定位与建图的精度。
基于图优化的RGB-D与VLP紧融合定位系统
下面演示为:我们测试战略合作伙伴(深圳华创芯光科技有限公司)的LiFi产品。该系统可以实现实时的LiFi上网。
实时LiFi通信
下面演示为:我们团队与深圳利亚德光电有限公司合作的广东省科技计划项目(500万资助)《高带宽微芯片覆晶封装小间距显示器件开发与产业化》,项目主要探索了通信与显示器件相结合(通显一体化)的可见光通信系统。
此外,本团队还与中山市木林森电子有限公司合作中山市重大科技专项资金项目(200万资助)《可见光通信高带宽全光谱LED封装关键技术攻关与产业化》
下面演示为:本团队研发的基于光电二极管(PD)的可见光定位算法,获国家级大学生创新创业训练计划优秀项目,并入选“国创计划十周年”庆典暨第十届全国大学生创新创业年会;
此外,本团队还荣获学生项目如下:
下面演示为:仅仅基于一盏LED即可实现高精度可见光定位,与此同时,与PDR (Pedestrian Dead Reckoning) 相结合,在没有LED覆盖的区域(LED短缺或NLOS问题)仍然可以实现定位,而当检测到至少一盏LED时,即可实现PDR位置的矫正。
单灯VLP+PDR
下面的演示为:基于可见光通信的同时定位与校正算法。在实现高精度室内可见光定位的同时,可以矫正手机摄像头的参数,进一步提定位系统的稳定性与精度。虽然也是需要camera至少观测到两盏LED,但无需借助角度等传感器即可实现倾斜三维定位(六自由度定位)。
同时VLP定位与相机参数校正
下面演示为:基于ROS-Android交互框架,开发了一款安卓APP,可实现基于可见通信的机器人与行人同时定位。通过可见光定位分别实现机器人与手机的高精度定位,同时基于ROS-Android交互框架,实现机器人与手机之间的位置共享。对于机器人VLC定位采用单灯+IMU定位算法,对于手机VLC定位采用单灯+PDR定位算法。
基于可见通信的机器人与行人同时定位导航系统(人机交互)
下面的演示为:我们自主开发的可见光室内定位App,该算法可实现倾斜状态下的可见光定位(基于两盏LED灯)。
可见光倾斜定位
下面演示为:基于可见光通信的室内定位及基于不同位置的信息推送。主要演示demo为视频的后半段(1分13秒之前的均为概念演示,之后的为实测效果),通过PDR+VLP融合,在无LED的区域通过PRR进行定位,而检测到LED时,通过基于VLP的临近法进行粗定位(与前面提到的单灯定位算法不同,此处仅仅采用临近法定位)。看到在不同的LED灯下,通过VLC接收信号,实现基于位置信息的服务(location-based service),进而实现基于不同的位置给用户推送不同的信息。
基于VLC的室内定位及信息推送
下面演示为:我们自主研发的基于可见光通信的光二维码应用。可通过APP扫灯接入链接,实现猜灯谜、信息接入等。
该系统亦在团队的广东省光电技术协会作科创分享:【科普作品】一盏有故事的月球灯
具有信息的“月亮”——光二维码
下面的演示为:我们自主研发了基于蓝牙调控的可见光调制驱动芯片,可通过手机APP用蓝牙直接改变LED灯具的VLC编码,而不同的编码对应不同的网络接口。通过另外一台手机的APP扫灯具,实现光二维码扫码接入不同的网页。
基于蓝牙及可见光通信融合的光二维码
下面演示为,我们将上面的基于蓝牙调控的可见光驱动调制芯片进一步的扩展到较大功率的LED(不再是小灯泡,而是日常照明用的LED,以及改为采用后置摄像头来检测),同样可以实现扫灯接入图片或者网页等IoT的功能。
Optical Camera Communications for IOT
下面演示为:我们用合作伙伴英飞凌(Infineon Technologies)所提供的VLC-LED模块进行扫灯获取图片或网页等信息的实验。但他们的硬件模块目前的版本没有我们所设计的驱动调制芯片模组稳定,故此解码的流畅度不如其他几个视频。
OCC Testing using the Light from Infineon
下面的演示为:基于可见光通信的光二维码技术,扫灯接入网页(这是我们早期的设计版本,并不能像上面几个demo一样通过手机蓝牙远程修改LED的编码,还需要重新做读写操作)。
可见光通信在IOT上的应用
下面演示为:我们搭建的水下可见光成像通信系统,该工作发表于2021年光通信顶级会议 Optical Fiber Communication Conference and Exhibition (OFC)。
2021 OFC Demo
下面演示为:本团队搭建的,实时可见光成像通信系统(基于C-OOK调制)。
实时可见光成像通信
下面演示为:我们搭建的基于FPGA驱动的LED阵列可见光成像通信系统,通过MIMO的阵列通信来实现数字信号的传播。接收端通过手机的摄像头进行解码,实现基于CMOS图像传感器的MIMO通信系统。实验中通过手机APP扫灯获取网页信息(类似前面IOT应用)。
基于LED阵列的OCC
希望有更多小伙伴一起学习交流,也希望多多引用我们的工作
ESI高被引论文
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)。
专利详情及原文的获取,请见PatentGuru,中国知网或Google Patents
此处仅仅列出:已授权的发明专利
PS:发明授权真的是来之不易,不少专利都是历时3~6年的审核才被授权。
专利的原文及对应的专利证书请见Link
中国电子热点解决方案创新峰会(20230324):可见光通信技术在智能照明中的应用
第44届AIoT&智能照明与驱动技术研讨会(20230420):LED通信功能是使LED照明和显示产业迭代升级的关键
第22届(中山)LED通用照明驱动暨智能照明技术研讨会(20170610):VLC在LED智能照明中的应用
文章浏览阅读136次。其他题目详见:浙大版《C语言程序设计(第3版)》题目集一.题目描述:习题6-3 使用函数输出指定范围内的完数 (20 分)本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数接口定义:int factorsum( int number );void PrintPN( int m, int n );其中函数factor_本题要求从小到大输出小于n(2≤n≤10000)的所有完数。所谓完数就是该数恰好等于除
文章浏览阅读1.2k次,点赞4次,收藏4次。1)非约束模板的友元函数,在每创建一个类的具体对象时,会自动生成多个友元模板函数(适应多种数据类型),在实际开发中不科学,因为有些生成的也没有用到;3)非约束模板友元:模板实例化时,如果实例化了n个类,也会实例化n个友元函数,每个实例化的类都拥有n个友元函数;非模板友元:友元函数不是模板函数,而是利用模板类参数生成的函数,只能在类内实现。②第二步:在模板类中,再次声明友元函数模板,让编译器知道需要实例化的友元函数模板。①第一步:在模板类定义的前面,声明友元函数,为了让模板类知道友元函数模板的存在。_类模板与友元
文章浏览阅读410次,点赞14次,收藏5次。在蛋糕甜点选购方面,传统的购买方式都是到店铺进行挨家选购,有时候购买某个蛋糕的时候,要跑好几个门店,用户的体验度就会急剧下降,很多商家也开始开发蛋糕预订及选购平台,这样的系统给用户带来了新的体验,尤其是在时间和空间上,让使用者不管身在何处,只要连上网就能够进行交易。此Springboot蛋糕店预订及购买小程序的开发项目以Springboot框架为基础,采用JavaWeb的开发方法,使用MySQL数据库,对本Springboot蛋糕店预订及购买小程序的各个功能以及用户的需求做出了解释,然后根据用户蛋糕甜品交易
文章浏览阅读1.5k次,点赞5次,收藏17次。接触COMSOL也有一年时间了,相信很多朋友都有这样的感触,那就是完全不知所措,无从下手。根据网上的一些经验,参考案例,看用户手册,折腾了几个月甚至大半年的时间,对于模型计算的各种错误一头雾水,完全不知所云,胡乱的瞎改,盲目的调试,在电脑前一坐就是一小天,茶饭不思,那叫一个折磨。甚至有几天下定决心要翻译用户手册,因为有关COMSOL的教程或者知识实在是少的可怜。不过,对于我个人研究方向的模型,经历..._comsol研究中没有全耦合
文章浏览阅读30次。选题背景:随着计算机技术的迅猛发展和互联网的普及,计算机课程在线培训学习成为了一种越来越受欢迎的学习方式。传统的面对面授课存在时间和空间限制,而在线学习可以突破这些限制,使学习者可以根据自己的时间和地点进行学习。然而,传统的在线学习平台往往存在一些问题,如学习资源不够丰富、学习进度跟踪困难等,给学习者的学习体验带来了一定的挑战。因此,开发一款计算机课程在线培训学习管理系统具有重要意义。选题意义:首先,计算机课程在线培训学习管理系统可以提供丰富的学习资源。传统的在线学习平台往往只能提供基础的学习资料,
文章浏览阅读304次。来源:微软研究院概要:如果到了2030年,人工智能将给北美城市的面貌带来怎样的平均标准变化呢?如果到了2030年,人工智能将给北美城市的面貌带来怎样的平均标准变化呢?专家们对人工智能进行了一个世纪的研究,而他们认为其影响将比我们想象的更加深远。以下是他们认为未来十五年人工智能将影响城市生活的8个关键变化。1、交通运输传统交通运输系统向智能交通系统转化过渡的速度可能会让公众大吃一惊。例如无人驾驶汽车_未来人工智能将广泛用于哪些地方
文章浏览阅读559次。Spring利用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在控制器中声明组件扫描。实现Controller接口定义控制器时比较老的方法,还是更推荐使用注解定义的放法,相比之下通过注解定义代码量较少,更加便捷。ler是一个接口,在org.springframework.web.servlet.mvc.Controller包下。缺点:一个控制器只写一个方法,如果需要多个方法则需要定义多个控制器,定义的方式比较麻烦。在springMVC.xml配置文件中声明。_controller xml配置
文章浏览阅读3.6k次,点赞10次,收藏66次。阅读目录编译环境与开发流程 QT项目的构成及原理 QT中的布局 QT中的通用控件 QVariant 类型 QComboBox控件 QTableWidget控件 QTabWidget控件 QWebview控件 使用QSS 编码问题 QT的内存管理 QT的信号槽 QT中绘图 QT的线程 QT中使用第三方的dll QT中为控件添加右键菜单的方法 结束语编译环境与开发流程开发QT有两种IDE可以使用,一种是使用 VS + Qt 的插件,另一种就是使用QtCreator工具_qt项目实践
文章浏览阅读883次。谈任何一种新技术,都应该放到当时的时代大背景下,今天谈区块链,也要放到整个时代变迁的角度来看,当下处于信息时代。随着互联网+的深入发展,大数据、云计算、人工智能以及新一代的移动通信等技术发挥的作用日益突出,互联网所创造和承载的价值快速增长。信息时代发展到现阶段,无论是PC互联还是移动互联,都面临着传递的信息可能被篡改、被拦截的威胁。如何构建一个更加可信的互联环境是新时期的重要使命,这个时期是信息时_区块宝 聚维融资情况
文章浏览阅读3.4k次,点赞2次,收藏7次。滑动时间窗口先不说sentinel的算法实现,先说什么是滑动时间窗口,我们在进行限流的时候,比如通过QPS进行限流,那假如我们以秒为单位,举个例子:我设置了限流规则,qps是10如果不使用滑动窗口算法,在统计qps的时候,就有可能会有问题,比如:在0 - 500ms中的请求数是0,但是在500ms - 1000 ms的请求数是10;在1000ms - 1500ms 之间又进来了5个请求,此时只判断了1000ms - 2000 ms之间的请求数因为没有把1S进行拆分多个窗口,所以在1000ms之后_滑动时间窗口
文章浏览阅读750次,点赞8次,收藏6次。在使用树莓派的过程中,DHCP往往会自动分配树莓派的IP,因此树莓派的IP地址并不是固定的,那么每次在远程登录树莓派前都需要查看一下树莓派的IP地址,非常麻烦。因此,我们手动给树莓派设定一个静态IP地址后,树莓派的IP地址就是固定的了。修改完成后按ctrl+x,“y”,“enter”保存并退出文件。注意:手动设置的静态IP不能跟路由器DHCP所自动分配的IP重复,否则树莓派就有可能无法正常联网。测试树莓派是否能联网: sudo apt-get update。_树莓派固定ip地址怎么设置
文章浏览阅读704次。Unity(C#)和Android(java)通过反射相互调用(不在需要classes.jar文件,导入AndroidStudio,包名也可以随意)**1, Android studio(java)**新建一个类库 ——> 新建java脚本import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Unity2Android { /**_c #u3d 调用 安卓 依赖包