无人机寻迹要两个单片机吗_基于OpenMV的循迹无人机设计

2023-05-16

基于OpenMV的循迹无人机设计

发表时间:2020-08-24

基于OpenMV机器视觉模块进行目标识别算法的研究。利用图像的滤波、二值化等算法对摄像头采集的图像进行预处理;利用边缘检测和形状识别算法获得引导线的路线信息,拟合计算得到无

26461c442989df1b993e1b9766caee33.gif

基于OpenMV机器视觉模块进行目标识别算法的研究。利用图像的滤波、二值化等算法对摄像头采集的图像进行预处理;利用边缘检测和形状识别算法获得引导线的路线信息,拟合计算得到无人机正面方向与地面轨道路线的转向角度; 将该角度数据传输给STM32控制无人机实现寻迹行驶。

3ed733cece0232a8b76afdb1b163dec1.png

本文源自《电子世界》 2020年第4期175-176,共2页《电子世界》杂志由中国电子学会主办,创刊于1979年,读者遍及全国30个省、市、自治区。本刊全方位推崇E时代大众电子科学意识,传播电子与信息领域的新知识、新技术,发表最新科研成果和展示技术进展状况,始终注重扶持学术新人,尤其关注广大青年科技工作者,优先发表理工科青年教师和研究生中的优秀学术稿件。

目前自动循迹无人机的研究取得了极大的发展,我们研制了一种基于openMV的自动循迹无人机。其主要功能是实现针对地面上的黑线自主飞行。循迹无人机是一个集有环境感知、规划决策、自主飞行等功能于一身的光机电一体化系统(刘杰,蒋沁宏,基于OpenMV的寻的赛车,电子技术与软件工程,2018年第14期)。目前,循迹无人机已在许多行业得到广泛应用。本文利用 OpenMV机器视觉模块进行图像采集与处理,通过 STM32模块控制无人机实现自主循迹飞行。

1 控制工作原理分析

1.1 OpenMV

OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上高效地实现了核心机器视觉算法,提供Python编程接口。OpenMV采用的STM32F427拥有丰富的硬件资源,可用于扩展UART,I2C,SPI, PWM,ADC和 GPIO等接口。带有Micro Python解释器的OpenMV可以提供的Python语言机器视觉,包括寻找颜色,面部检测,眼睛跟踪,边缘检测等功能。

1.2 STM32

STM32是由意法半导体推出的一款基于 ARM Cortex-M 系列内核的高性能32 位单片机。STM32微控制器包括一系列 32位产品,集高性能、实时功能、数字信号处理、低功耗与低电压操作等特性于一身。

1.3 无人机整体结构

该循迹无人机控制部分采用STM32为主控芯片,以飞控模块、OpenMV模块、动力模块构成硬件系统。数字摄像头将无人机采集的图像信息传给OpenMV模块进行处理,将无人机控制在合理运动速度内。经过一系列算法,输出无人机应该移动的距离, 通过串口通讯,将控制信息传输给STM32 主控板, 控制电机速度。整体结构图如图1所示。

2 系统软件设计

2.1 图像预处理

图像采集或传输过程产生噪声干扰直接影响了后面我们的分析,改善图像数据,抑制不需要的变形或者增强某些对后续处理重要的图像特征,要求我们在对图像进行识别与检测时要对采集的图像进行预处理。

2.1.1 图像灰度化

图像灰度化的处理就是对这个像素点矩阵的操作,只要在这个像素点矩阵中找到这个像素点的位置,灰度图像上每个像素的颜色值又称为灰度,指黑白图像中点的颜色深度。所谓灰度值是指色彩的浓淡程度,灰度直方图是指一幅数字图像中,对应每一个灰度值统计出具有该灰度值的象素数,也即灰度值,在OpenMV视觉模块中包含灰度化的算法函数。

2.1.2 图像滤波

噪音,这主要由于平时的工作和环境引起的,图像滤波可以在保证细节的情况下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作。

2.2 直线寻迹识别

巡线时,采用拟合识别条纹边缘方法,使用简单角度和距离的计算方法。返回条纹底色边界线的拟合直线,此函数的计算结果为拟合直线距离画面左边界距离和中心线的偏离角度。当检测到条纹边界的时候,会计算拟合出条纹边界的直线。

由OpenMV采集的图像经图像滤波后,对图像进行色块检测(张毅,高进可,王琪 等,视觉导引智能车的自适应路径识别及控制研究,测控技术, 2017年第11期23页)和二值化图像处理,寻找到引导线,之后对引导线进行回归处理(刘义亭,董梦超 等,基于OpenMV的目标跟踪系统设计,南京工程学院学报(自然科学版),2019年第 3期),得到该引导线的直线参数,判断是否匹配到直线,若没有匹配到,则放弃该帧图像,返回上一步,取出下一帧图像;若匹配到了,则计算出该直线与无人机的偏角,转换成无人机应该转角的角度。通过串口将对应的数据帧发送给飞控,在飞控端再进行帧格式解析,得出对应的数据后,再进行飞机相应的姿态调整(梅妍玭,傅荣,基于openMV的小车定位系统研究,扬州职业大学学报,2017年第12 期)。程序流程如图2所示。

2.3 圆点寻迹识别定特定颜色的原点时,运用颜色识别函数返回色块其中心坐标即可。对于不同的颜色的色块,需要实地测试得到不同的阈值。这里的返回值为圆点中心坐标、像素大小和标志位(庄琼云,基于 OpenMV的智能寻迹小车设计与实现,黎明职业大学学报, 2018年第12期)。

3 结束语

基于 OpenMV机器视觉模块和STM32控制模块设计了循迹无人机系统,并研究目标识别算法。利用边缘检测和形状识别算法得到的路线信息,拟合计算得到路线与无人机正面方向的转向角度,最后由STM32控制实现了循迹无人机沿引导线快速、稳定地行驶。

基金项目:2019年江苏省高等学校大学生创新创业训练计划项目“基于OpenMV的自主循迹无人机设计”(课题编号:201912920028Y);2017年度院级课题项目“自动重量稀释仪”(课题编号:NHKY-2017-01)。

作者简介:吴松元(1998—),男,南京科技职业学院,无人机专业学生;牛宗超(1980—),男,南京科技职业学院,教师。

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

无人机寻迹要两个单片机吗_基于OpenMV的循迹无人机设计 的相关文章

随机推荐

  • 20191003

    A 把字典树建出来 xff0c 问题就转化成要选择m个节点 xff0c 使得它们能覆盖所有叶子节点 xff0c 且不存在两个节点使得一个是另一个的祖先 于是可以在字典树上跑树形dp xff0c 复杂度 O n 2m 或 O nm 2 xff
  • 20191004

    A 解 1 我们发现只需要关心处于结果字符串前 k 位的字符 因此考虑从后往前处理 对于一个询问区间 xff0c 我们暴力连边 xff0c 用并查集维护 xff0c x 的父亲等于 y 相当于位于 x 的字符是从位于 y 的字符处复制过来的
  • git 如何解决 (master|MERGING)

    git 如何解决 master MERGING git reset hard head 回退版本信息 git pull origin master 转载于 https www cnblogs com 651434092qq p 110188
  • linux ping 指定次数

    ping 192 168 0 1 c4 转载于 https www cnblogs com sea stream p 10345600 html
  • java 解决 java.lang.Integer cannot be cast to java.lang.String

    1 在执行代码打印map的value时 xff0c 提示错误java lang Integer cannot be cast to java lang String xff0c 这个错误很明显是类型转换错误 查看表字段的数据 解决方案 1
  • DBoW2应用

    图像对应的bag of words向量 v t 假设词典总共有 W 个单词 xff0c 那么每一幅图像能够用一个 W 维的向量表示 xff08 t 1 t 2 t 3 t W xff09 其中 t i 61 frac n id n nd l
  • 平衡车终于成功了

    说来惭愧2017 12 0118 13 27 并非原创 xff0c 代码资料也是从论坛搜刮的 自己做了适配性的调整 这个小车断断续续造了将近1个月 xff01 1 include 34 Wire h 34 96 2 include lt U
  • 彻底解决 Jenkins Slaver 节点无法执行 Git-LFS 命令

    最新配置新增一台iMac当作持续集成构建的Slaver节点 xff0c 添加节点很顺利 xff0c 但是拉取代码的时候发现无法正常 出现以下提示 xff1a hudson plugins git GitException Command 3
  • FreeRTOS

    在嵌入式领域中 xff0c 嵌入式实时操作系统正得到越来越广泛的应用 采用嵌入式实时操作系统 RTOS 可以更合理 更有效地利用CPU的资源 xff0c 简化应用软件的设计 xff0c 缩短系统开发时间 xff0c 更好地保证系统的实时性和
  • 使用固定的公网TCP端口地址远程桌面【内网穿透】

    文章目录 1 为远程桌面保留一个TCP地址2 配置远程桌面隧道2 1 登录cpolar web ui2 2 修改远程桌面隧道信息2 3 查看公网地址 3 使用固定TCP地址远程桌面总结 在上一篇文章中 xff0c 我们通过cpolar映射远
  • [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗

    Openwrt项目开发笔记 系列文章传送门 xff1a http www cnblogs com double win p 3888399 html 正文 xff1a 昨晚上熬夜写了 Openwrt项目开发笔记 Openwrt平台搭建 xf
  • Mac下IDEA启动Springboot项目慢

    经过百度以及google查询发现 xff0c 启动时调用了java net InetAddress getLocalHost 方法 以此排查调用此方法慢的问题 网上的解决方法都是修改hosts xff0c 后来有人提出 xff0c 慢的原因
  • 关于varnish缓存

    目录 引言 xff1a 缓存的概念一 varnish缓存 1 简介2 总体结构 2 1 两个主进程2 2 Varnish的日志2 3 VCL varnish配置缓存策略的工具二 Varnish的工作模式 more 1 状态引擎的处理流程2
  • varnish6.X安装

    目录 1 rpm方式2 编译安装 2 1 依赖包2 2 编译Varnish 本文提供了两种安装方式 xff0c 但建议使用编译安装 官方链接 xff1a https varnish cache org 部署文档 xff1a https va
  • 安装ANSYS19.0的正确方法(附下载)

    安装ANSYS19 0的正确方法 卸载干净旧版本ANSYS 安装或重新安装之前必须先卸载干净 xff0c 安装过旧版本ANSYS的也要确保卸载干净 电脑环境准备参考以下内容 ANSYS 卸载后重装需要注意的问题 百度经验 https jin
  • 软件设计师 - 错题笔记

    2018 年 5 月 上午题 1 浮点数 浮点数对接时 xff0c 先对阶 xff0c 将小阶向大阶对齐 xff0c 同时尾数右移 n 位 xff08 n 为阶差的绝对值 xff09 2 流水线吞吐率 1 t 单位时间流水线处理的任务数 流
  • CAtia_打开提示:许可证过期怎么办

    CAtia 许可证过期怎么办 xff1a 进计算机管理 xff0c 点开服务和应用程序 xff0c 点服务 xff0c 找到DS License Server xff0c 在启动此服务的地方点启动 xff0c 从而开启DS License
  • 小米手机 fastboot 方式刷入 TWRP recovery 教程,以红米4X(santoni)为例

    最新版TWRP下载链接 xff1a https twrp me xiaomi xiaomiredmi4x html platform tools下载地址 xff1a https developer android google cn stu
  • 远程登录DSM,显示“您没有权限使用本项服务?

    远程登录DSM xff0c 显示 您没有权限使用本项服务 xff1f https www chiphell com thread 825297 1 1 html 有可能你单位用的是多wan接入 一般synology不让多个ip同一帐号同时接
  • 无人机寻迹要两个单片机吗_基于OpenMV的循迹无人机设计

    基于OpenMV的循迹无人机设计 发表时间 xff1a 2020 08 24 基于OpenMV机器视觉模块进行目标识别算法的研究 利用图像的滤波 二值化等算法对摄像头采集的图像进行预处理 利用边缘检测和形状识别算法获得引导线的路线信息 xf