国赛----可见光室内定位

2023-05-16

#初期试探
拿到题目后,反复读了题目。首先队内结合网上资料形成了两种方案,原理相同就是利用光信号到达的强度来定位。两者差距在于算法不同而已,一种利用计算得出位置,另一种就是经过测量得到一种位置与光强对应的表,然后通过查表得到位置。
##方法
产生三个不同频率的方波作为信号驱动三个LED灯发亮,然后再用光电二极管接收。(这里光电二极管、光电三极管、光敏电阻都考虑过。我们的光电三极管识别角度太小,光敏电阻形状不规整,容易造成旋转不对称不利于计算和精度的实现)。接收到的信号经过FFT(快速傅里叶变换)将频率幅度信息还原回来,就像下图
FFT图
这是我做过的最漂亮的一次,之后做的是后都有很大的杂波。(最后发现这个应该不是我们的实验数据而是直接用三个正弦波叠加做的fft,orz)


我们想通过不同频段对应幅度与距离的关系,确定LED距离传感器(光电二极管)的位置从而实现定位。


但这些是在极度理想的情况下,事实上灯的亮度很难保证是一个定值,这种装置也不一定具有旋转对称性(距离相同,不同方位强度可能不同),二极管以及发光装置都存在这一定程度的不对称性。
根据实际的测试发现,FFT的结果有很大的抖动,相同的测试环境下幅值甚至会有30%的差别,当然这里有一些是我们自身做的不到位,但是这种方法经过实验证明精度十分的堪忧。于是我们舍弃了这种方法。

#最终方案----摄像头定位
上一个方法我们尝试了接近了两天,最后抛弃了。于是我们的时间仅剩下了一天半,我们有先见之明提前买了摄像头当我们宣布上一个方案死亡时,我们就去尝试了摄像头的方案 摄像头是openmv 附带一个F7的芯片作为处理器,内部跑Python代码。
这里写图片描述
剩下的就是算法
##算法
核心是定位到光源的位置。然后自己(传感器)的位置就是图像中心的位置,已知三个点的位置和自已与三个点的相对位置,剩下的计算就不难了。

##障碍
当然实际上不可能只有这么简单,但也不难克服
我们的方案是,让摄像头的方向固定,然后利用算法,消除一些固定不准确造成的误差
1. 摄像头旋转造成的误差
2. 摄像头位置不水平造成的误差
3. 摄像头没有拍到全部光源,特殊情况的处理
4. 外界光源的干扰

前两个使用算法消除,后两个则是考虑到漏光面只有一处,还有相对的光源几何关系来消除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

国赛----可见光室内定位 的相关文章

随机推荐

  • si4438使用stm32f103配置调试成功!

    刚拿到si4438时候在网上找了一大波资源 xff0c 发现能使用的并没有多少 xff0c 于是自己配置一发 经过不懈努力配置成功 xff0c 现在将一些配置过程分享给大家 xff01 源码已上传 尽情下载 xff01 1 首先打开工程文件
  • 教你如何使用stm32发送一帧数据(结构体中的数据)

    在这篇文章中我介绍一下如何通过串口发送一帧存在结构体中的数据 通过串口接受一帧数据请参考的我博客中的文章 教你如何使用stm32接收一帧数据 xff01 一 xff1a 在 h首先定义一个结构体 typedef struct uint8 t
  • 浅谈线性稳压电源和开关稳压电源(开关电源)

    目前现有电源主要分为两大类 xff1a 线性稳压电源和开关稳压电源 xff08 开关电源 xff09 线性稳压电源 线性稳压电源经过变压 整流 滤波 稳压实现电源稳压 优点 xff1a 稳定性好 xff0c 瞬态响应速度快 xff0c 可靠
  • c++ #define 用法

    1 用于表示将两个参数连在一起 xff0c 其中宏的 前后空格会被省略 define CONNA a b a b define CONNB a b a b int main string a 61 CONNA 34 one 34 34 tw
  • MySQL第五课 Table has no partition for value

    场景 MySQL由于安全性要求 xff0c 版本升级之后 xff0c 执行插入数据出现Table has no partition for value 错误 已有版本5 7 20 log升级到5 7 26 log 说明 建表过程中 xff0
  • DSP数据安全平台

    数据安全平台 xff08 DSP xff0c Data Security Platforms xff09 的概念来源于Gartner的 2021数据安全技术成熟度曲线 xff0c DSP定义为以数据安全为中心的产品和服务 xff0c 旨在跨
  • c++ 数学库

    链接 link
  • vscode使用restClient实现各种http请求

    vscode使用restClient实现各种http请求 一 xff0c 安装插件 首先 xff0c 我们要在vscode的扩展中 xff0c 搜索rest Client xff0c 然后安装它 xff0c 这里我已经安装过了 安装后 xf
  • K210和STM32串口通信(亲测有效)

    声明 最近想做一个K210数字识别和寻迹 xff0c 方便完成2021年电赛F题 xff0c 完成了数字训练和脱机运行就想赶紧进行一次通信 xff0c 调了好几天 郁闷 xff0b 自闭几天 按照官方的历程看 xff0c 配置的没问题但是会
  • 简单Rabbitmq 发送消息和接收消息

    简单Rabbitmq 发送消息和接收消息 1 先在Rabbitmq配置文件中预先创建好交换器 xff0c 队列 xff0c 路由等信息 2 创建生产者发送消息 64 Autowired private RabbitTemplate rabb
  • Elasticsearch(ES6)------(4) ES设置用户名密码访问

    Elasticsearch ES xff08 1 xff09 下载 安装 43 kibana 下载 xff08 2 xff09 本机多节点启动 43 ElasticSearch head插件使用 xff08 3 xff09 索引 文档概念和
  • Elasticsearch(ES6) --根据条件修改字段值

    POST index name doc update by query 34 query 34 34 match 34 34 version 34 34 12 22 34 34 script 34 34 inline 34 34 ctx s
  • redis限流使用lua脚本

    lua脚本 xff0c 计数器限流 5秒内限流10次 64 param key 64 return public boolean acquire String key long now 61 System currentTimeMillis
  • ES6分页from+size、search_after两种查询

    1 from 43 size 分页查询 64 RequestMapping value 61 34 get 34 method 61 RequestMethod GET public BaseResponse lt List lt Obje
  • 使用activiti总结--bpmn画流程图

    假期结束 xff0c 赶紧总结一下前几天使用的Activiti工作流的一些方法 简单介绍一下Activiti Activiti一套完整的方便的业务流程管理 xff08 BPM xff09 框架 xff0c 它是覆盖了业务流程管理 工作流 服
  • clock函数 使用以及问题

    使用 clock 函数是一个计算程序运行时间 xff08 其实简略的理解为占用CPU的使用时间 xff09 其实如果使用sleep函数 xff0c 程序是放弃CPU的使用权 xff0c 直到某个时间的到来 xff0c 当然就不会存在占用CP
  • 使用activiti总结--发布,办理,查询

    接上一篇文章 xff0c 使用创建好的流程图 xff0c 总结一下activiti发布到查询使用的方法和测试代码 流程图 1 引用配置文件 activiti cfg xml xff0c 不引用或者引用失败的话在创建流引擎的时候会报空指针异常
  • Could not open JDBC Connection for transaction

    操做 xff1a 访问20次数据库没问题 xff0c 超过20次调用后报如下错误 详细报错 xff1a org springframework transaction CannotCreateTransactionException Cou
  • 【可信计算】第八次课:可信软件栈编程开发

    TPM2开源软件包 目前在github上TPM2开源软件一共包含六个项目tpm2 tools tpm2 tss tpm2 pkcs11 tpm2 tss engine tpm2 abrmd tpm2 totp 1 tpm2 tools 这一
  • 国赛----可见光室内定位

    初期试探 拿到题目后 xff0c 反复读了题目 首先队内结合网上资料形成了两种方案 xff0c 原理相同就是利用光信号到达的强度来定位 两者差距在于算法不同而已 xff0c 一种利用计算得出位置 xff0c 另一种就是经过测量得到一种位置与