IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Openmv+STM32F103C8T6视觉巡线小车 -> 正文阅读

[嵌入式]Openmv+STM32F103C8T6视觉巡线小车

Openmv巡线

机器视觉巡线处理是参考openmv官方代码

Openmv官网源代码:book. openmv.cc/project/follow-lines.html

根据官网视频及教程将源码注入openmv中。

小车巡的是黑线,所以颜色阈值要更改。

颜色阈值获取方法

在文件示例中打开helloworld.py。

打开工具/机器视觉/阈值编辑器/缓冲区。

将我们需要寻迹的黑线调至全白,背景全黑即可,环境光亮度不同阈值也会不同,调好后将LAB阈值复制粘贴到openmv上就行。

对于openmv来说,引脚是已经配置好了,将小车和硬件搭好就可以驱动,但是我们是想利用STM32来驱动,所以要将数据通过串口发送给STM32。关于openmv底层驱动原理可以去官网找底层函数学习。

Openmv与STM32串口对接问题

重点在于如何将openmv与stm32进行串口通信,只要完成好这一步,后面的调试都会很容易。

经过调试,小车在黑线左右不同边的时候openmv算出来的output数值是有正负数的(例如右正左负)

因为STM32不好处理负数,所以要将openmv计算出的负数值取绝对值+100,stm32通过判断其值是否大于100来判断其是否为负数。

STM32处理信息并驱动小车

Stm32配置好串口波特率,与openmv相匹配,串口代码是移植正点原子的,这里的话要注意正点原子的字符接收必须是以0x0d、0x0a结尾(必须以回车换行为结束符),否则接收不了,所以要在openmv发送OUTPUT后加上发送回车换行。

STM32接收到串口数据后存储到了USART_RX_BUF数组中,然后再定义一个数组source将BUF数据转移过去。

字符串转整形是C语言知识,网上百度也能找到相关代码,自己看着理解。

最后只需要将返回的sum放入电机控速的占空比中就可以修改速度了。

每辆车的电机转速、总量、电量等等因素都不一样,所以要调好巡线的话要在openmv中进行调整PID。

调节PID重点调节rhoPID的P参数就行了,下面的西塔PID可以不用更改。

偶然发现的良性BUG

在调试跑圆圈寻迹的时候,偶然发现了一个良性bug,可以很好地消除在寻迹过程中小车的过度摆动。

Bug是出现在STM32上的

当时在处理左偏数据的时候我是用num-100再赋给num这个变量,然后再加到TIM控制PWM函数里面去,但是调试出来的结果是无论怎样都无法改变TIM两个通道的PWM参数,于是就出现了只能向一边偏的现象,刚开始我也没有矫正左右轮的速率,所以一开始给相同PWM在两个轮子上时会发送微小偏移现象,这两个因素下就造成小车只能往一个方向跑圆圈,但神奇的是小车跑的特别丝滑,可以查看视频文件夹中《完美跑圆圈》这个视频,但是在调openmv的PID时需要把rho的P参数调得比较大。

由此看来,在以后遇到圆圈寻迹的问题时不妨采用这种方式,让小车跑的更加丝滑!

反过来思考,openmv是只用到了一边PID矫正,另外一边是完全无效的,扩展到传统寻迹中(红外对管寻迹)是否可以只用一个红外对管完成圆圈寻迹?留个坑,以后再去验证。

文件链接:

Bai度网盘

链接:https://pan.baidu.com/s/1VQxNPwaIz4AvJ7nZEJ75FQ

提取码:5642

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:22:24  更:2022-04-06 23:23:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:28:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码