威盛电子搞了一款威栗Camera,这是个即插即用的AI视觉传感器,能在本地搞定7种识别任务,从颜色组合到人脸都能搞定,而且还能连着创造栗平台去云端继续训练模型。IM5E这门课就是把这些家伙塞进小车里,让大家亲手感受一下“让机器看懂世界”的乐趣。 咱们这次的任务简单粗暴:看见蓝球就追,看不见就停。具体要求是摄像头里没有蓝球时,小车得乖乖待着;有蓝球出现了,小车就得立马动起来,还要调整姿势把球给框在中间。要想做成这事,得三步走起:先把硬件接好线,再梳理软件流程,最后用Arduino把流程变成代码。 说到小车底盘怎么选,市面上花样太多。咱这次用的是后轮单电机差速加上前轮舵机的方案,结构最像真车,调试起来逻辑也清晰,适合新手上手。至于目标物体嘛,锁定“蓝色海洋球”是最优解,这种球体平面识别起来最不容易出问题。 硬件连接这块也简单明了。威栗Camera接上创造栗扩展板的D6和D7那两个Grove口;扩展板再连到Arduino UNO上;UNO最后去控制小车主控的电机和舵机。记得用虚拟串口通信,得对应好端口号才行。 软件流程方面得先教会摄像头“看懂”。打开工具软件把模式切换成球体识别,勾上蓝色那一项应用一下。系统会给个识别编号(蓝色是4),以后就拿这个编号当判断依据。流程图画出来后就能直接写代码了。 代码实现其实没几行核心逻辑。如果czl.getBallID()返回的是4,就说明检测到了蓝球,这时候让电机跑起来;否则就直接停下来不追了。剩下的部分就是LED闪烁、速度调节和姿态微调的细节活儿了。 运行成功之后你就能看到小车像猎狗一样锁定蓝球了。不过光线、距离这些因素偶尔还是会捣乱的,这时候把摄像头重新校准一下或者调低识别阈值就能恢复正常。最后提醒一句:每次换电池或者重启电源后都得重新校准虚拟串口参数哦。