26073| 17
|
[麦昆 V4.0] 人工智能(障)——麦昆人体识别与追踪(一) |
人工智能(障)——麦昆人体识别与追踪(一) 在当我亲自体验DJI的Robomaster S1人体检测与跟踪的功能时,彻底被它灵敏的侦测效果和麦轮驱动的“魔鬼步伐”折服,当然还有不服不行的瞄准我的炮筒。 不得不感叹,人工智能的发展速度早已超越了我的认知范畴。对于研发团队和开发者而言,能够做成这样优秀的效果已是费尽周折,作为像我这样自定义刚刚入门或许还在门外徘徊的小白创客,如何能够快速DIY一个人体识别与追踪的小车呢?不要着急,我们一起来琢磨琢磨,哪些物件适合我们“搞事情”。 搞事情准备: 方案选择 很久之前就对“小麦昆”有了很深刻的印象,虽然没有全向轮可以“横行霸道”,作为一个小巧灵活坚韧不拔任劳任怨的移动机器人,它要是疯狂起来或许也能让Robotmaster S1 看的一脸懵逼。麻雀虽小,五脏俱全,只要你能想到,或许让它背上核弹追火箭都是有可能的吧(请自行脑补这个画面)。“麦昆脑洞全开赛”中各路玩家就让小麦昆的职业开挂生涯“起飞了”,在这我只想说:它还是你认识的麦昆吗?它这么小你们忍心吗?你的良心不会痛吗? 还有更厉害的,直接将组成麦昆兵团:https://mc.dfrobot.com.cn/thread-280380-1-1.html 就不能让小麦昆安安静静地做个会读书的“美少年”吗? 哦,不,它竟然还能外加一个低(大)音(菊)炮(花)。预防近视麦昆陪读机器人: https://mc.dfrobot.com.cn/thread-280499-1-1.html 看来小麦昆扛个能够识别人体的视觉传感器灵活走位应该是小菜一碟了。移动平台有了,那么能够识别人体的“眼睛”是什么呢?虽然PIXY、openMV等视觉传感器很早出现,并且被很多玩家和工程师用来实现颜色识别、小球跟踪以及更复杂的项目,相信对于传感器的校准和标定,用过的人都经历一番折腾。前段时间偶然看到一款叫做小MU的视觉传感器,不仅能够实现颜色识别与检测、球体识别、数字图形卡片、交通标志,还能实现人体识别。 不禁让我YY:这货和其他极客类型传感器是一条船的吧?只能我认识它,它不认识我? 打开官网,发现官方提供了开发手册和库文件,还同时支持Arduino、Makecode等平台的开发。看来小白的我也是玩得转的。不仅如此,我经常使用的图形化编程软件Mind+也早已将小MU集成在传感器库,供我灵活调用。 硬件器材: 小麦昆虽然扛得动小MU,但是想把这只“眼睛”架起来,似乎还少点啥,手头没有乐高等积木件,索性就直接画一个支架3D打印吧,打印多个中间的铰链件可以扩展长度。附件可直接下载STL文件。 机械组装: 整体组装好以后如下图,看起来还是蛮“英俊”的, 这里我用的是麦昆锂电池版本,3D支架可以直接通过M3*30mm铜柱固定在锂电池电路板的孔位。如果你是电池盒版本的小麦昆,也可以使用铜柱将支架固定在电池盒下面或者超声波两侧的固定孔。我开始也纠结支架放在前面还是后面,经过一番思想斗争后发现: 放在前面便于USB给microbit下载程序,但是整体重心会前移,还会挡住点阵表情; 放在后面整体重心大概在小车中心位置,但是下载程序可能要将microbit拔下来。 为了避免“翻车”,我选择现在的结果。当然大家都可以进行尝试。 硬件设置: 小麦昆和小MU通过4pin PH2.0—杜邦线进行连接,虽然官方给出了IIC和UART两种接口,习惯性选择更灵活好用的IIC方式,同时小麦昆超声波后面也经集成了 IIC接口,貌似是“姻缘巧合”。 注意:选择IIC模式,需要将左侧的模式拨码开关1拨到下面,开关2拨在上面。如果设置出错可能切换到UART模式或图传模式,小麦昆就拜你所赐“人为致盲”了。 开始搞事情: 编程初探: 1、打开Mind+软件(1.5.6版本),选择“上传模式”。 2、打开“扩展”,在“套件”下选择“麦昆”。 3、再次打开“扩展”,在“传感器”下选择“视觉识别摄像头”。也可以直接在右上角搜索栏搜索物料号SEN0314查找。 视觉传感器初始化配置: 添加完后,返回主界面,在左侧功能区域可以查看视觉识别摄像头的指令模块。本次项目使用的是人体识别功能,只需要简单的5个指令模块就可以将小MU视觉传感器配置好。 指令简介: 初始化MU00端口I2C:这个不用介绍了,直接将micro:bit和小MU的通信方式设置为IIC; 恢复默认设置:将以前的设置恢复默认。当恢复后,小MU摄像头上面的两颗LED在检测到人体时亮蓝色,没有检测到时亮红色。 启用算法:开/关选择的算法。人体识别、颜色识别、小球识别等识别算法通过这个模块设定。当同时开启多个检测算法时,检测时间会稍微延长。 设定算法性能:可以结和实际需要,选择速度优先、均衡等,为了识别更准确,这里选择准确率优先。 设定高帧率模式:开启高帧率模式后,识别速度增加,同时功耗、发热量增加。 人体识别主循环程序: 当搭载了小MU视觉传感器的小麦昆检测到人体后,虽然我们可以从正面看到小MU摄像头上方两个LED蓝色-红色闪烁,也可以通过小麦昆上micro:bit点阵显示是否检测到人体,但是对于一个好奇心很重的小白,让我只看到是否检测到人体,这是很难让我满足的。仔细查找一下其他模块,果不其然,还有一个可以输出检测到人体后的横、纵坐标、宽度和高度。有了这些信息,好像距离实现小麦昆追踪人体又近了一步。 表面看上去,这几个参数好像是关于检测到人体以后输出的坐标信息,那么这些数据具体是什么含义?又该使用呢? 检索小MU摄像头的技术规格书很快有了答案,不多说直接上图。横、纵坐标0-100的矩形区域为小MU的视野区域,当检测到人体时,传感器模块可以输出人体图像在小MU视野中的坐标位置、宽度高度。 需要多嘴的是,起点是左上角,终点在右下角,和我们熟知的平面直角坐标系的Y轴正好相反,隐隐感觉后面使用的时候有个大坑哦。 废话少说,直接让麦昆通过串口来告诉我,我在它“眼里”的位置和“分量”,或许它眼里根本没有我。 通过四个变量来存放X坐标、Y坐标、宽度、高度。并把四个变量通过串口打印在同一行显示。将变量转换为整数打印,可以去掉小数点后的数字。 循环程序如下: 下载程序后,当我在小麦昆前面3M左右扇形区域活动时,小麦昆的眼里还是有我的。心理顿时安慰了不少。但是想想后面让小麦昆一边识别我是不是个人,还要让它一边追我,而且在它拖着一条USB线的情况下,它会不会自缢而亡? 问题总结: 这让我深感不安。由此我经过一番反思后,又引申出以下问题: 1.串口打印功能,虽然能够输出检测到人体后的X轴、Y轴、宽度、高度信息,但是必须要连接USB数据线。即使可以通过蓝牙模块模块进行无线串口打印,但这还需要发送端和接收端都要有蓝牙模块,硬件上算是比较麻烦了,有没有更加简单的方法呢? 2.即使无线蓝牙能够避免小麦昆“自缢而亡”,串口打印的信息也是单纯的数值数据。像我这样眼神不好的人,看着密密麻麻的数字眼神就更不好了。有没有更加直观的方式,比如通过图形的方式,实时显示坐标和宽度高度信息呢? 升级调试方案: 如何才能实现让小麦昆实时直观准确地告诉我,我在它眼里的位置,同时避免小麦昆被“锁喉”呢? 绞尽脑汁,突然想起来micro:bit有无线Radio功能,而且Mind+还有实时模式,顿时想到:能否让小麦昆的micro:bit无线发送数据给Mind+实时模式下的另外一个micro:bit,让Mind+告诉我,我在小麦昆眼中的位置呢? 经过一番折腾,终于实现了我想要的效果。当我(哦,是我的照骗(人体和照片都可以识别))在小麦昆面前左右晃悠时,看看小麦昆眼中的我: 额,这让我有点慌啊。。。不过X、Y坐标、宽度高度信息都有的,而且位置实时跟随,动态变化。看来离实现小麦昆跟踪我的目标越来越近了。 升级调试程序: 小麦昆micro:bit程序:由于这个程序宽度较大,直接截图分辨率较低,我将程序分成两部分截图上传,附件可以直接下载完整Mind+程序。 初始化设置部分: 主循环部分: Mind+实时模式microbit程序: 确保按钮切换到Mind+实时模式: 关于以上两个程序在这一贴暂时不分解,在下一贴结合麦昆的追踪帖子中进行详细介绍。感兴趣的小伙伴可以先尝试验证,也恳请看到此贴的小伙伴,给与更好的优化建议。 以下是用到的固定小MU视觉传感器支架的STL文件、对应的Mind+(V1.5.6版本)程序、小MU视觉传感器技术规格书: |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed