Mecanum-based-on-k210

An open NCUT laboratory project

很早以前的开放实验室项目,资料丢了很多,最近有空做一些整理,这是我最早搭建的四轮麦克纳姆轮,犯了很多错误,各位捡有用的看。

设计目标

  1. 机器视觉相关算法和程序设计,对于目标进行识别与跟踪,实现对于活动物体(比如人类或者小车)的跟踪。

  2. 智能小车的控制算法,掌握麦克纳姆轮的控制方法并利用PID法尽可能的加快小车的速度响应

  3. 人机交互程序,通过人工控制来干预小车的运动,同时返回速度、方向等基本参数,拟设计一套无线调参和一套无线图传系统

  4. 造车技术,通过绘制PCB,3D打印等方式,优化小车的稳定性、集成度、外观等。

核心部件

  1. k210image-20200902185546935

一款比较有"想象力"的MCU,自主研发,RISC-V架构,主频400MHz,巅峰1Tops的算力。

外设基本满足我们的需求

  1. 麦克纳姆轮

【学渣的自我修养】麦克纳姆轮浅谈

img

这是关于麦克纳姆轮小车 文档的链接。

麦克纳姆轮是一种非常有趣的装置,可以在不调转车头的情况下进行全向的运动,它有非常鲜明的缺点,它价格高,不耐磨损,各个方向的力矩都有损耗,但是在智能小车领域,它依旧拥有很高的地位,我们在制造的过程中,尽可能规避一些缺陷,把优点充分的发挥出来。

  1. 从控芯片

最终使用的是STM32F103ZET6的核心板作为从控,废了很大功夫才引出控制编码器和电机H桥的PWM,本来希望只使用K210的,但是K210一旦调用KPU就非常卡,代码经常卡在DELAY层,搞的我很没脾气,项目有DEADLINE没办法,就索性加了一层从控,效果还可以。在代码中也提供了zet6怎么引出并使用一堆PWM,采用了裸机带刷新的方式,反应蛮快的。

一些坑

  1. 关于K210

我是K210芯片最早的一批使用者,市面上有的没有的开发板我都基本有,我自己做项目的时候经常用的是widora家的核心板,芒果哥也不产了,挺可惜的,大家要是想用可以联系我,我手上还有几个核心板,给有缘人。K210问题不少的,目前我也就是把它当OPENMV来用,它DVP摄像头带宽简直稀碎,我推荐用OV7725和OV2640,像素够低,可以使用,官方给的例程里有DMA的方法加速的,我也没细研究,整个使用下来我的感觉就是完全被IO拖累的一款芯片,没有USB,没有高速串行总线,没有能把数据打通的手段,我曾经尝试过用他上面的OSPI和stm32 I2S通信,但是CLK时钟完全没办法捕获,如果可以做到的话至少有8线12M的并行的实力,当然理论是100M完全达不到就是了。官方那个模型转换工具很好用,但是模型大小容易超标,模型训练时的大小要严格控制,输入照片的大小越小越好(最好是QQVGA或者是QVGA),处在能识别的边界才行。我建议你使用ONNX,各大框架都可以直接转,综合下来看ONNX算子最高效,总体还是受带宽的限制,烦烦烦。

  1. 关于麦轮

麦轮的代码我是直接搬的RM实验室的轮子,他们那群dio人实在是太肝了,我真佩服。但是主要的问题是代码我分了好几个版本,早期的我不知道git怎么用,把早期盘的shi山丢的一干二净,现在总结起来非常后悔。不过旧的不去,新的不来,让它去吧。

麦轮一定要上环!!!哪怕只有速度环,不然非常容易跑歪,PID的参数很好写,也很好调,主要调P参数就可以了。