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

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

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

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

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

        

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

        判断图像明暗的一个重要标准就是最大灰度值。这个灰度值可以是整个图像的灰度值,也可以是某一个区间的灰度值。不管是哪一种方法,都需要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.mfbz.cn/a/121990.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

音乐免费下载mp3格式+音频格式转换+剪辑音频+合并音频教程

1.在qq音乐网页版搜索想要的歌曲 qq音乐网站:https://y.qq.com/ 如果你是vip可以直接下载vip的歌曲,如果不是选择不是vip的歌曲进行第一步的操作 2.点击播放进入页面后F12拿到音频地址 然后双击src里面的音频地址复制 网页新标签打开赋值的这个链接&a…

『 MySQL数据库 』数据库基础之表的基本操作

文章目录 创建表🗡查看表🗡✒ 查看表内所有信息(描述\表结构等)✒ 根据条件查看表内数据✒ 查看表的具体详细信息: 修改表🗡✒ 修改表名:✒ 修改表的存储引擎、编码集(字符集和校验集):✒ 表内插入数据:insert into✒ 在表中新添一个字段(列)…

Python基础入门----Python文件操作:文件读写、文件对象方法、with语句

文章目录 文件读写模式文件对象方法with语句在Python中,文件操作是一项基本技能,它允许你读写文件,并与文件系统进行交互。这篇文章将详细介绍如何使用Python进行文件读写,涉及不同的文件模式,文件对象的方法,以及如何使用with语句来管理文件资源。 文件读写模式 在Pyt…

11-2 mybatis入门细节

mybatis Mybatis 单表CURD细节 ${} 与#{} 区别(面试题) ${} 拼接sql 造成sql注入 #{} 使用?占位 如果作为值, 推荐使用#{} ${} 实现一些动态排序,使用 #{column} select * from tb_userinfo order by ? desc column: id 赋值 sql: select * from tb_userinfo order by id …

MFC串口通信(SerialPort)

目录 1、SerialPort类的介绍和使用: (1)、SerialPort类的功能介绍 (2)、SerialPort类提供接口函数的介绍 1)、InitPort函数 2)、控制串口监视线程函数 3)、获取事件&#xff0c…

基于JavaWeb+SpringBoot+微信小程序的酒店商品配送平台系统的设计和实现

基于JavaWebSpringBoot微信小程序的酒店商品配送平台系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 本章内容概括了基于微信小程序的酒店商品配送平台的可行性分析、系统功…

Linux安装Python3.10与部署flask项目实战详细记录

java开发新手入门Python,创建flask后端服务对外提供访问.记录一下在阿里云服务器部署flask项目的操作过程,简单介绍一下使用的阿里云服务器系统配置:ubantu16.04,其他内核版本操作部分命令会有所区别,下面开始详细操作过程! 1.pycharm创建flask项目并打包 2.Python3.…

Apache Storm 2.5.0 单机安装与配置

1、下载storm 2.5.0 2、需要安装python3,并且设置python3的环境变量 3、修改storm.yaml配置 storm.zookeeper.servers:- "node4" # - "server2" # # nimbus.seeds: ["host1", "host2", "host3"] # nimbus…

javaSE学习笔记(五)集合框架-Collection,List,Set,Map,HashMap,Hashtable,ConcurrentHashMap

目录 四、集合框架 1.集合概述 集合的作用 集合和数组的区别 集合继承体系 数组和链表 数组集合 链表集合 2.Collection 方法 集合遍历 并发修改异常 3.List List集合的特有功能(核心是索引) 集合遍历 并发修改异常产生解决方案ListIterato…

ubuntu下Anaconda环境安装GPU的pytorch(docker镜像)

实验室需要给每个人分配docker的container环境,为了节省系统的空间,打算把anaconda和深度学习的开发环境配置好拉取镜像以省时间。 基础环境配置 apt更新了清华源 安装了基础环境 gcc vim Linux文本编辑库 openssh-server ssh远程连接库 net-tools 包含…

Visual Leak Detector 2.5.1 (VLD)下载、安装与使用

目录 1 软件介绍 2 下载与安装 2.1 工具下载地址 2.2 工具安装 3 配置与使用 3.1 配置环境变量 3.2 配置vs 3.3 VLD的配置 4 测试代码与报告生成 1 软件介绍 Visual Leak Detector 2.5.1 (VLD)是一个小巧内存检测工具,是为Visual C用户设计的。其特色为&a…

基于开源项目OCR做一个探究(chineseocr_lite)

背景:基于图片识别的技术有很多,应用与各行各业,我们公司围绕电子身份证识别自动录入需求开展,以下是我的研究心得 技术栈:python3.6,chineseocr_lite的onnx推理 环境部署:直接上截图&#xff…

ARMday2(环境创建+工程配置+创建文件+单步调试)

目录 一、汇编环境的创建 二、为工程配置链接脚本(map.lds) 三、为工程创建汇编文件 start.s 编程调试 接下来我们需要建立一个 start.s 汇编文件添加到我们的工程中去 四、对汇编代码进行单步调试(仿真) 五、汇编工程的编译 …

手握“发展密钥”,TCL科技或迎价值重估?

在高度竞争且快速变化的泛半导体产业,每一次周期性或结构性的变化,都会对企业经营策略带来深远的影响。 2023年前三季度,泛半导体产业迎来结构性复苏。其中,主流显示领域供需关系趋向健康化,半导体显示行业整体上量价…

iOS 16.4 之后真机与模拟器无法使用Safari调试H5页面问题

背景 iOS 16.4之后用真机调试H5时候发现,Safari中开发模块下面无法调试页面 解决方案 在WKWebView中设置以下代码解决 if (available(iOS 16.4, *)) {[_webView setInspectable:YES];}然后再次调试就可以了

redis持久化和Redis事务

一)Redis持久化之RDBredisDataBase: 什么是持久化: 1)持久性:和持久化说的是同一回事,衡量持久性的前提是重启进程或者是重启主机以后数据是否还存在 持久:把数据存储在硬盘上,那么就是持久性 不持久:把数据存储在内存中 2)redis是一个内存级别的数据库&…

一个“Hello, World”Flask应用程序

如果您访问Flask网站,会看到一个非常简单的示例应用程序,只有5行代码。为了不重复那个简单的示例,我将向您展示一个稍微复杂一些的示例,它将为您编写大型应用程序提供一个良好的基础结构。 应用程序将存在于包中。在Python中&…

在 Vue3 中使用 mitt 进行组件通信

npm 包地址 mitt 是一个轻量级的 JavaScript 事件触发器, 只有200b。有基本的事件触发、订阅和取消订阅功能,还支持用命名空间来进行更高级的事件处理。 功能特点: Microscopic —— weighs less than 200 bytes gzippedUseful —— a wil…

抖店怎么做才会快速起店?跟着这个思路来,一周搞定!

大家好,我是电商糖果 有不少朋友,自己开了一家抖店。 因为不懂运营,店铺一直没有流量,也不出单。 糖果做抖店三年多了,不敢自吹有多么优秀,但是做店还是有一套自己的方法的。 按照糖果这个思路做店&…

edge浏览器无法进入中国知网,但可以进入其他网站需要怎么解决

最近使用edge浏览器进入中国知网,加载了很长时间都打不开,好不容易打开了,结果出现:“嗯...无法访问此页面”。即使无法进入知网,但可以进入哔哩哔哩或其他网站,甚是苦恼,下面是一个方法&#x…