31822| 35
|
[项目] 乒乓球收割机——AI捡球机器人 |
一、制作背景 上次我制作了一台遥控版的“捡球机器人”,运行的效果还是很不错的,大家感兴趣的可点击下面图片访问。 遥控版“捡球机器人”可以让学员一边玩一边捡乒乓球,这样不但能实现捡球的目的,也让学员在休息的时候即不浪费体力,又玩得尽兴,劳逸结合。但也有可能有的人不喜欢动手遥控或玩的时间长了不感兴趣了,那怎么办呢,我们就一起来把它改装成一台AI自动识别捡球机器人吧。 二、功能说明 在原有遥控的基础上增加AI自动识别、追踪、捡拾乒乓球。利用二哈识图(HuskyLens)AI 视觉传感器来识别乒乓球,当目标区别没有乒乓球时,小车自动转动一定的角度或前进一定的距离后进行再次识别,直到识别到乒乓球后,再转到相应的角度开过去,用捡拾装置把乒乓球捡起来。为了避免“撞墙”事件发生,还安装了一个超声波传感器用了判断前面障碍特的距离,当离障碍物一定距离时,它不会再向前行驶,会转弯后再判断。 三、硬件清单 在原有的基础上加上二哈识图(HuskyLens)AI 视觉传感器、超声波传感器后,发现二哈识图(HuskyLens)AI 视觉传感器经常会自动重启,PS2手柄与接收器也会经常自动断开,给它们单独供电后还是会出现类似情况,经过反复的测量,发现如果不用PS手柄就不会出现这样的情况,所以对硬件作了相应的变动,我们把PS2手柄去掉,改成利用micro:bit gamepad 遥控手柄来手动遥控小车的行走,经过测试,结果比较完美。所使用到的硬件如下: Micro:bit 2 电机驱动扩展板 1 二哈识图(HuskyLens)AI 视觉传感器 1 超声波传感器 1 micro:bit gamepad 遥控手柄 1 360度舵机 1 995舵机 1 TT电机 4 麦克纳姆轮 4 杜邦线及附材 椴木板切割部件 四、制作过程 1、在原来的捡球机器人上增加了超声波和AI 视觉传感器的安装架子,它的结构图纸如下图,设计好图纸后用激光切割机切割出来。 2、按下图组装好超声波的架子。 3、把超声波传感器安装在相应的位置并用热熔胶固定。 4、按下图所示组装好AI视觉传感器的安装架子。 5、用铆钉把AI 视觉传感器安装在架子上。 6、把AI 视觉传感器的架子与超声波传感器的架子用铆钉组装起来,它们。 7、再把组装好的架子用铆钉固定在机器人的相应位置。 8、再把各传感器、TT电机及电源与主控板进行连接。(由于遥控器部分采用了micro:bit gamepad 遥控手柄遥控,所以把PS2接收器模块去掉了) 9、这样整个结构部分就安装好了,效果图如下: 五、接线图 六、程序编写 遥控端程序编写。 1、在手动遥控控制机器人的行走功能时,由于把它改成了利用micro:bit gamepad 遥控手柄来控制,而它与机器人之间是通过micro:bit主控板的无线功能进行传感指令的,所以一开始先设置相应的无线频道,这里的频道设为17,并打开无线通信,再设置一个变量K,主要用于后面利用一个按键来控制360度舵的转动与停止,再显示一个爱心图标表示初始化已完成。 2、要实现的功能是按下遥控器某一按键时,机器人运行,当松开按键后机器人停止,所以这里要用到如果……否则如果……的积木块。比如按UP键(P8引脚)让机器人向前行走,按下DOWN(P13引脚)让机器人向后退……如果什么键也没按下就让机器人停止行走,程序我们可以这样写: 上面的程序中当按下UP键(P8引脚)时,就会发送一个字符8并显示相应的前进图标,这样当主控端micro:bit主控板接收到无线信号是字符8时就执行前进的程序,而当遥控端松开所有按键后,就会发送一个字符5并显示相应的停止图标,同样道理,当主控端micro:bit主控板接收到无线信号是字符5时就执行停止的程序。 3、由于遥控手柄的按键数量有限,我们就把机器人前面部分的捡球装置的运转与停止都用X键来控制,程序如下: 当按一下X键(P1引脚)先判断变量K的值,如果K的值为0就把K的值设为1,反之如果K的值为1则把K的值设为0,接下来再执行不同的K值无线发送不同字符,发送字符0表示停止,发送字符1表示运行,这样就实现了用X按键来控制运行及停止,按一下X键运行,再按一下就停止。 4、遥控端的完成程序如下: 主控端程序编写。 1、主控端程序一开始也设置一些初始化操作。 上面程序中无线频道设置要与遥控端的一致,不然它们之间无法有效通讯。再对HuskyLensAI摄像头进行引脚的初始化设置,由于HuskyLensAI摄像头是接在IIC接口上的,而初始化引脚默认也是IIC接口,所以这里不作变动,而在识别乒乓球的功能是用到物体追踪功能,所以把算法切换到物体追踪。变量“模式”是用来判断当前状态是手动遥控模式还是AI自动模式,变量“转”是让机器人没发现乒乓球时转动的次数统计用的。最后显示一个笑脸图标,因为HuskyLensAI摄像头的初始化需要一定的时间,如果笑脸显示出来了就说明初始化已经成功完成了。 2、通过按A键和B键来进行手动和自动模式的切换。 3、编写好前进、后退、左移等函数的程序。 4、编写接收到遥控器无线信号的相应程序。 因为手动遥控模式时变量“模式”的值应为0,所以在接收无线信号时要加一个判断,如果当前模式为手动模式则执行条件中的指令,不然是自动模式则不执行里面和程序。无线发送的值是字符串类型的,所以要把数字转化为字符串后再与无线数据进行匹配。 5、定义“定位捡球”函数并编写相应程序。当HuskyLensAI摄像头找到球后先判断球在屏幕中的X轴位置,如果X轴的值小于121就向左转直到大小等于121,如果X轴的值大于199就右转直到小于等于199,当球的中心的X轴值在121—199之间,再去判断Y轴的值,如果Y的值大于200,机器人就停止且捡球滚轮装置停止转动,否则超声波再检测障碍物的距离,如果大于30厘米就开启捡球滚轮装置并向前行驶,否则为了避免撞上障碍物,捡球滚轮装置停止转动,机器人向左转1秒后停止。 6、定义“定位捡球”函数并编写相应程序。当HuskyLensAI摄像头屏幕中没有球时,停止捡球滚轮装置转动,再去判断变量“转”的值,如果小于20则变量“转”的值增加1再向左转0.5秒后停止,这里的变量“转”主要为了避免无球时机器人总是在原地打转,当变量大于等于20且前面30厘米内无障碍物时,机器人就会向前行驶1秒再原地转动寻找球。 7、最后来完成自动捡球和主程序,只需要调用相关的函数就可以了。 8、所有程序写好了,我们上传测试,根据实际情况对相关数据进行修改。最终完整程序如下: 七、项目小结 本次项目我们完成了利用遥控器手动控制捡球和利用二哈识图(HuskyLens)AI 视觉传感器实现AI自动识别追踪捡拾球的功能,二哈识图(HuskyLens)AI 视觉传感器除了物体追踪,还有人脸识别、物体识别、颜色识别、巡线、标签识别等功能,在现实生活中,我们可以把这些功能加以应用,做出更多能解决生活中实际问题的智能作品出来。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed