1.资源分配
串口通讯
PA.9 USART1_TX
PA.10 USART1_RX
OLED显示
PB8,PB.9
状态指示灯
PC.13
按键
PA0光标向下
PA1光标向上
C15确认
C14返回上一级菜单
舵机PWM
PA2左右舵机
PA3上下舵机
剩余引脚
PA4,5,6,7,8,11,12,15
PB0,1,3,4,5,6,7,12,13,14,15
2.硬件部分
12v锂电池转3.3和5v给控制部分和舵机系统供电
比赛还是需要用性能好的Openmv,在使用过程中,OpenmvH7plus比OpenmvH7识别效果好得多!!!!
3.控制部分
3.1菜单显示部分
使用按钮来操控各个任务的执行
3.2舵机控制方式
PID控制:存在的问题就是响应过快,速度过快,无法控制舵机的转向速度,并且在发挥部分就无法使用,因此PID控制是不可行的。但是如果在PID控制中加上延时会不会好很多呢?会好一点,但是不是主要的,延时只会去减缓舵机的控制效率而不会减缓舵机的速度,
PID,P是影响响应速度的主要参数,当误差大时由于P的作用会在起步是迅速靠近目标位置,当接近目标时误差减小,系统的移动也就变得缓慢,
I积分系数主要用于消除稳态误差,积分系数小会延长系统到达目标位置的时间,当靠近目标时误差小P对系统的影响已经小于积分带来的作用,此时主要依靠积分来调节。
注意的问题
1.pid的运算过程数值全都为有符号类型
2.PID计算完成后,数值整合需要考虑极性问题。中值是加上PID输出,还是减,是要考虑到硬件结构的,比如增舵机顺时针转动,减舵机逆时针转。
3.2通讯部分
openmv和stm32之间采用串口通讯,由于需要发送不同的数据,我们对接收buffer进行提取,由于每次接收到的数据形式不同,比如命令,坐标,这些数据类型每次发送的数据个数是不同的,我们就需要分类再获取。
3.3识别部分
铅笔框是无法识别到的,因此我们换换个思路,让激光先打在铅笔框的四个顶点,这样让就能记录下铅笔框的坐标位置,摄像头识别也就有了感兴趣域范围,在识别矩形框的时候发现识别矩形框并不是很稳定,因此我们采用了边长判别滤波。
4.视觉部分
基础部分:
1,2先用摄像头采样铅笔框坐标,采样完成后就可以执行1,2问
3,4先用采集到的铅笔框作为感兴趣域,避免了摄像头识别到外界矩形
在使用斜边与框的结合过滤掉识别错误的矩形
最后发送红外激光给控制
发挥部分
1.要求两秒追踪成功
5.问题分析与解决
6.1需要解决的问题
菜单显示:这个很简单,就是利用按键来实现显示,清屏就OK。
Openmv与STM32通讯:由于OpenMV要给32发送各种数据,因此我们需要讲解收到的数据Buffer进行处理,处理方式基于我们的通讯协议
如何采样铅笔框:利用激光打在铅笔框的四个角利用摄像头对这四个点进行采样。
6遗留问题
OpenMV脱机显示:lcd屏幕花屏的问题,已解决,在淘宝买个屏幕自己回来焊接。嘎嘎爽,立创有开源。
7.题目要求
8.总结
一切的不合理都是有原因的,有原因必有源头,顺着现象找原因解决问题才能成长起来!