零散的小tip
- 对于云台机构,单自由度的升降机构上限有限,笔者建议加入前伸的自由度,实现转盘的任意位置抓取,笔者在想,合适的前伸机构能否实现色环区域不通过移动底盘而放置三个物料,车油们可以尝试一下感觉如果我们的车加上前伸机构可能可以进2分的时间。
- 双层爪抓取效果更好,但单层爪干涉情况更少,工作空间更大。5.夹爪部分,笔者这两年也尝试过单层爪和双层爪,感觉各有利弊。
- 正弦加减速 由于速度突变会导致一定程度的打滑出现,对于工训赛这种对定位要求极高的赛事中会有很大影响,于是笔者采用正弦加减速来缓和不同速间的切换。 计算公式如下: $$ vi=v_1+(v.2-v_1Neft(cfrac(]2)-cfrac(1]2)cosfleft(cfracNpilNtimes NvightNright) 表示加的周期数,表示加减速过程中的第个周期
- 漂移所谓漂移,也只是实现了边转弯边直走的功能,不同路径再通过正弦加减速加以过渡。
西安视觉代码(暴力调参)
项目gitee开源: blog.csdn.net/m0_74056439…
视觉部分(文章开头有其他部分的开源): blog.csdn.net/2303_802771…
关于定位的准确性
- 许多队伍遇到陀螺仪或OPS有累积误差的问题,我们是通过视觉校准的方式解决的,每次机器人看到三色环,通过左环与右环相减校准Z轴,中间环坐标与左环右环中点坐标加权校准OPS位置,整个比赛过程中校准2次,达到了比较好的精度效果。
- 底盘主任务分为自动模式与遥控模式,自动模式又分为场地位置闭环和视觉校准闭环,得益于RTOS的多任务调度,底盘可以和其他模块并行运行,互不干扰。(注:我个人的理解是在自己调试的时候使用遥控模式)
圆环识别
- 借助HSV阈值筛选识别指定物料的函数,同时由于识别物料和决赛时有可能的在物料盘上识别色块两种情况的色块大小不一,添加面积限幅实现对不同目标的追踪。
- 经过对原图像腐蚀膨胀后做限制对比度自适应直方图均衡整体计算形态学梯度后经过多次的高斯模糊得到非常稳定的二值化后的圆环图像,最后利用霍夫圆变化得到三个色环的准确的目标。
- 本算法的核心思想在于,以前传统算法对于色环的识别,都是先进行色域分割,再进行后续处理。但是在环境光线复杂多变的情况下,色域分割会使得圆环信息在第一步就被丢失。而本算法对所有圆环没有进行颜色的区分,只针对圆环和非环底色之间的色彩差进行放大,从而实现了超强抗干扰。
- 我们对于视觉函数返回的值都采用了卡尔曼滤波算法,其实这个算法只是比较好的滤波算法中的一种,如果大家有能力可以考虑使用滑动滤波算法来滤掉抖动
串口通讯与整体调度
- 使用Python多线程持续接受串口,下位机用RTOS实现串口通信增加了通讯的实时性,当没有任务就切换为空闲状态,有任务根据任务码进行状态机的切换 (包含串口的函数和部分主函数中的调用示例)
- 所有串口使用空闲中断+DMA传输实现了不定长度数据包接收,当空闲中断触发,DMA搬运完成,把缓冲区指针通过队列传输给解包任务,进行相应的数据解包。
贺州学院b站轻风雨
gitee链接:gitee.com/qingfengyu2…
硬件资源
- 主控:stm32f407zgt6 标准库
- 电机:张大头42步进电机以及他的闭环模块 foc脉冲模式
- 舵机:普通的MG995舵机
- 电源:格式12V航模锂电池 + 降压电源模块
- 摄像头:省赛树莓派opencv,国赛openmv + v831
- 扫码:串口二维码模块
- 引脚接线
- A1.A2.A3.A4.A6.A7
- B6.B7.B8.B9.B10.B11
- C0.C1.C2.C6.C7.C8.C9 **
- 二维码: TX:A2 RX:A3
- 陀螺仪:TX:G14 RX:G9 | 舵机:爪子TIMER13_CH1:A6 | 云台TIMER14_CH1:A7 | 转盘TIMER2_CH2:F6 |E:B3 | S:C6.C7.C8.C9 | D:B6.B7.B8.B9 //E:C0 | S:A1,D:C2 | 二维码TX--A3 | A2--openmv RX | openmv TX--B11 |