SLAM从入门到精通(光源的控制)

news2024/11/24 18:35:49

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们说过,图像在二维码、道路检测、故障物检测方面都有很重要的作用。但是,这里面就有一个前提,那就是图像本身的质量必须是非常ok的。对于高质量的图像,即使用简单的算法,都可以得到不错的结果。而对于质量不高的图片,既费时又费力,得到的结果还不是非常理想的。

        所以,到这里我们很自然而然地想到自己去补充光源。即,如果自然光很ok,那么可以通过减少曝光量地方法降低自然光的射入。而如果外面自然光不足,这个时候就需要补充光源去进行处理。目前光源控制这部分都是很成熟的,可以手动,也可以用232/485去调整pwm百分比。这里面的难点不在于如何设置,而在于应该设置什么样的数值。

        所以,要想在slam中使用到图像,那么就需要时刻对图像的灰度进行检测。亮了,降低曝光量;暗了,增加补充光源,标准一般就是最大灰度值。

        

1、用最大灰度值作为判断标准

        判断图像明暗的一个重要标准就是最大灰度值。这个灰度值可以是整个图像的灰度值,也可以是某一个roi区域的灰度值。不管是哪一种方法,都需要soc去进行判断和计算。此时,想要用mcu去计算最大灰度值,那是不切实际的。这种情况下,最好还是用arm soc + linux的方法来解决,直接用opencv去计算。如果资源富裕一点,用fpga也是可以的。

2、合理设置目标灰度值

        目标灰度值一般和实际场景有关,不通的实际场景有着不同的标定数值。当然,在不同的场景下面,适度微调目标灰度值也是可以的。这部分可以做灵活调整,不必教条和拘谨。

3、用pid去做反馈

        pid是实际工业生产中比较常见的一种反馈方法。p表示差分,i表示积分,d表示微分。调试的时候一般是先调试差分,然后调试积分,根据实际情况最后调试微分。有了pid的加持,就可以把灰度值的计算差,转换成对应的pwm数值,当然必要的范围约束也是少不了的。p、i、d各在什么范围内调整,这个也是慢慢尝试出来的。

4、编写一个上位机

        不同的pid调试,一般需要搭配一个上位机。不同的pid通常会有不同的调试效果,这个时候如果有一个合适的上位机,就可以帮助我们确定,什么样的pid参数才是适合我们的。或者说,不同的场景应该匹配什么样的pid参数。

5、将灰度值的统计当成图像处理的一部分

        图像处理肯定涉及很多步骤,灰度值的计算只是其中一个环节。所以我们要做的,就是将这个中间计算的结果发给光源控制器。对于固定场景,一般直接用补光代替自然光,但是对于行走的机器人来说,这个时候,最好用算法保证机器人得到的光源都是最佳区间内的。所以,这部分灰度值的统计、pid的计算就是整个算法能够稳定运行的前提。

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

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

相关文章

月销破30万辆后,比亚迪整了波大的

最近乘联会公布了 2023 年 10 月新能源乘用车厂商销量榜单。 其中最为亮眼犹如鹤立鸡群的榜首,没错依然是我们熟悉的那个迪子! 单月销量超 30 万辆,相较去年同期暴涨 38.4%,创下了比亚迪有史以来新高。 同时也成为了国内首个月销…

秋招进入尾声了,还有哪些公司和岗位可以投递?

24届秋招基本已经进入尾声了,接下来就是秋招补录了,最近在微信群看到一些同学再问哪些公司还在招人的。 在这里跟大家分享一份2024届秋招信息汇总表,目前已更新2000家,不仅有互联网公司,还有外企、国企、各类研究所&am…

基于SSM的个人网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

神奇工具!这7个软件让设计轻松起飞

作为一个设计小白,你还在问前辈们有没有好的设计软件吗?还是没地方问,只能去百度搜索?如果是这样,那么接下来的文章正好可以解决你的问题。本文将介绍7种常用的平面设计工具,每种平面设计工具都有自己的特点…

Sprint Boot 学习路线 3

嵌入式服务器 Spring Boot 的嵌入式服务器功能是一项方便而强大的功能,它允许你在应用程序中直接运行 Web 服务器,无需将其部署到单独的独立 Web 服务器中。这使得开发、测试和部署 Web 应用程序变得容易,而且它还是轻量级的、易于启动和停止…

基于SSM的游戏销售系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

用朴素贝叶斯实现垃圾邮箱分类实验报告

一、实验目的 1.会用Python创建朴素贝叶斯模型 2.使用朴素贝叶斯模型对垃圾邮件分类 3.会把文本内容变成向量 4.会用评价朴素贝叶斯模型的分类效果 二、设备与环境 Jupyter notebook Python3.9 三、实验原理 四、实验内容 1.把给定的数据集message.csv拆分成训练集和测试集&…

jsvascript使用dhtmlXTreeObject的loadJSONObject绘制目录树

文章目录 1,引入dhtmlXTreeObject的css和js文件2,创建一棵目录树2.1,let tree new dhtmlXTreeObject(id-dhtmltree-0, "100%", "100%", 0);2.2,设置图片根目录(后续使用到的图片都是相对于该目录…

基于insightface实现的人脸检测,人脸识别,insightface源码讲解。

目录 1.搭建insightface需要的环境 2.下载insightface工程 3.代码工程文件讲解 3.1 python-package 3.2 进行测试 3.3 examples 4. 人脸识别 5.代码理解: 1.搭建insightface需要的环境 埋个坑,后续再写,笔者在安装过程中遇到了一些问题。…

你知道Online DDL吗?

什么是Online DDL? 在线DDL(Online Data Definition Language)是指在数据库运行状态下执行数据定义语言(DDL)操作,例如创建、修改或删除表结构、索引等操作,而不会造成数据库的长时间锁定或无法…

C#动态拦截并覆盖第三方进程的函数,实现函数篡改(外挂)

今天在看之前收藏的一个pdf文档(介绍C#外挂的相关知识的),结合网上的东西及个人的理解才有了这篇文章。 参考文章: 【精选】一文带解读C# 动态拦截覆盖第三方进程中的函数(外挂必备)_zls365365的博客-CSDN博客 DotNetDetour - …

【经验模态分解】4.信号由时域向频域的转换

/*** poject 经验模态分解及其衍生算法的研究及其在语音信号处理中的应用* file 傅里叶变换与小波变换* author jUicE_g2R(qq:3406291309)* * language MATLAB* EDA Base on matlabR2022b* editor Obsidian(黑曜石笔记软件&#…

Git的进阶操作,在idea中部署gie

🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​ 🌟在这里,我要推荐给大家我的专栏《git》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…

CCIA数安委等组织发布PIA星级标识名单,合合信息再次通过数据安全领域权威评估

近期,“中国网络安全产业联盟(CCIA)数据安全工作委员会”、“数据安全共同体计划(DSC)”等组织共同发起“个人信息保护影响评估专题工作(简称“PIA专题工作”)”,并为入围企业颁发了…

交通信号标志识别系统 python 深度学习 YOLOv5

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 1、项目介绍 本系统基于YOLOv5,采用登录注册进行用…

查找或替换excel换行符ctrl+j和word中的换行符^p,^l

一、excel中 直接上图。使用ctrlh调出替换,查找内容里按ctrlj(会出现一个闪的小点),即为换行符。 二、word中 在word中,^p和^l分别代表换行符(enter)和手动换行符(使用shiftenter&…

Spring高手之路16——解析Spring XML配置的BeanDefinition源码

文章目录 1. BeanDefinition阶段的分析2. 加载xml配置文件2.1 XML配置文件中加载bean的代码示例2.2 setConfigLocations - 设置和保存配置文件路径2.3 refresh - 触发容器刷新,配置文件的加载与解析2.4 loadBeanDefinitions - 具体的BeanDefinition加载逻辑2.5 load…

java数据结构--阻塞队列

目录 一.概念 二.生产者消费者问题 三.阻塞队列接口BlockingQueue 四.基于数组实现单锁的阻塞队列 1.加锁方式 2.代码实现 3.解释说明 (1).offer添加元素 (2)poll取出元素 4.timeout超时时间 5.测试 五.基于数组实现双锁的阻塞队列 1.问题 …

数据的使用、表关系的创建、Django框架的请求生命周期流程图

目录 一、数据的增删改查 1. 用户列表的展示 2. 修改数据的逻辑分析 3. 删除功能的分析 二、如何创建表关系 三、Django的请求生命周期流程图 一、数据的增删改查 1. 用户列表的展示 把数据表中得用户数据都给查询出来展示在页面上 查询数据 def userlist(request):&qu…

luckysheet的使用——14.开启表格只读模式(所有单元格无法编辑)

开启只读模式后,所有的单元格都无法编辑,与非编辑模式做区分。 1.在src/global/api.js文件中,新增开启只读模式的方法: /*** 开启工作表只读模式(所有单元格无法编辑)*/ export function setWorkBookReadOnly() {Store.allowEdi…