31679| 31
|
[项目] 小尚,别跟丢了!——自动跟随的麦克纳... |
小尚,别跟丢了! ——自动跟随的麦克纳姆轮小车 【制作背景】 前段时间动手搭建了一辆麦克纳姆轮小车,主要通过遥控器来控制小车的运动,实现了遥控小车的前进、后退、左平移、右平移等功能。最近又入手了一个小MU视觉传感器,它是一款用于图像识别的传感器,其内置的深度学习引擎可以识别多种目标物体,例如颜色检测,球体检测,人体检测,卡片识别等。于是就萌发了制作一辆人工智能的麦克纳姆轮小车,它不需要通过遥控器来控制,通过小MU的人体检测功能,让麦克纳姆轮小车自动识别人体,跟着人走,有了想法后,马上动手实践。 【硬件清单】 micro:bit 电机驱动扩展板 1 小MU视觉传感器 1 电机 4 麦克纳姆轮 4 电池及电池盒 2 乐高积木 若干 杜邦线 若干 由于之前已经完成了遥控手柄控制麦克纳姆轮小车的项目,在这里麦克纳姆轮小车的搭建不再具体展开(这个项目的教程下次补上)。 【小MU视觉传感器安装】 1、用扎带把小MU视觉传感器固定在乐高积木的O型框架上,如下图: 2、用两个乐高的5孔4销连接器把小MU视觉传感器固定在小车的前方,这里采用这种形式固定主要是为了根据实际情况可随时调节小MU视觉传感器的角度,提高识别效率。如下图: 【线路连接】 由于小MU视觉传感器有IIC和UART两种接线方式,而micro:bit电机驱动扩展板上有两个IIC接口,所以这里选择了灵活好用的IIC接线方式,我们用一根4pin PH2.0—杜邦线把小MU接到micro:bit电机驱动扩展板上其中一个IIC接口上,注意:选择IIC模式,需要将左侧的模式拨码开关1拨到下面,开关2拨在上面。 利用8根公对公的杜邦线把四个电机分别与micro:bit 电机驱动扩展板上的电机接口相连接,把一节18650电池安装到电池盒里,并把电池盒的两根线分别接到扩展板相对应的电源输入口上。注意:4个电机与扩展板连接的顺序,我们以白色双拐角梁为车头方向,前左电机接在M1电机接口上,前右、后左、后右电机分别接在M2、M3、M4电机接口上,我们可以先写一个让4个电机都正转的程序传到micro:bit板上测试一下,看看4个电机是不是都是往前转动的,如果哪个电机不是,就把这个电机的两根线位置对换一下。 【编程平台】 编程平台:Makecode,在线网址:https://makecode.microbit.org。 【麦克纳姆轮相关知识】 在编写程序之前我们先来了解一下麦克纳姆轮相关知识。 麦克纳姆轮与普通轮子的区别在于麦克纳姆轮旋转时,由于存在斜向的从动轮,会同时产生一个斜向的力,当我们控制轮子旋转的速度与方向时,将斜向的力增强或抵消,从而实现小车的全向移动。可以完成横移、斜方向移动等普通小车无法完成的高难度动作,轮子的转动方向与小车的运动方向关系如下图: 【项目一】小车跟随人前进或后退 我们先来个简单的,要实现的效果是人站在小车前,面向小车,当人前进时,小车就后退,当人后退时,小车就前进。 1、打开Makecode在线编程平台,选择新建项目。 2、添加扩展包 在模块工具箱中点击“高级”——“扩展”,打开添加扩展包页面,然后再在输入框内输入扩展包网址进行查找并添加相应的扩展包。 micro:bit电机驱动扩展板扩展包网址:https://github.com/DFRobot/pxt-motor 小MU视觉传感器扩展包网址:tianli/MuVisionSensor-MakeCode 3、任务分析:要完成小车跟随人前进或后退的效果,我们只要让小MU视觉传感器识别出人是靠近它还是远离它,如果靠近它就让小车后退,反之则让小车前进。而判断人离小MU的远近主要依据是小MU识别人体检测时获取到的纵向坐标的值,所以我们可以先编写一个程序,检测人体在小车前方不同位置的纵向坐标的值,这样我们就可以根据不同的值来指挥小车是前进还是后退。 检测程序如下: 检测结果:检测时让小MU的摄像头大致对准人的颈部位置,获取到纵向坐标的值是50左右,人走近小MU,纵向坐标的值就变小,远离小MU值就变大。 4、从检测程序我们得出了纵向坐标值的变化规律,这样我们就可以设置判断条件了,当纵向坐标的值大于60时就让小车前进,当纵向坐标的值小于40时就让小车后退,如果值在40—60之间,小车就停止不动。 完整程序如下: 【项目二】小车跟随人左右平移 麦克纳姆轮小车的特点是全向移动,可以完成横移、斜方向移动等普通小车无法完成的高难度动作,接下来我们就来完成小车的左右平移效果:人还是面向小车,当人向左移时,小车也向左平移,当人向右移时,小车也向右平移。 1、任务分析:要完成小车跟随人左右平移的效果,我们只要让小MU视觉传感器识别出人是在小车的偏左边还是偏右边,如果在小车的偏左边就让小车往左平移,反之则让小车往右平移。而判断人在小MU的偏左或偏右主要依据是小MU识别人体检测时获取到的横向坐标的值,所以我们还是先编写一个程序,检测人体在小车前方不同位置的横向坐标的值,这样我们就可以根据不同的值来指挥小车是往左平移还是往右平移。 检测程序如下: 检测结果:检测时在站在小MU的摄像头的正前方,获取到横向坐标的值是48左右,人体位置越往小车的左边偏,横向坐标的值就逐渐变大,人体位置越往小车的右边偏,横向坐标的值就逐渐变小。 2、从检测程序我们得出了横向坐标值的变化规律,这样我们就可以设置判断条件了,当横向坐标的值大于58时就让小车往左边平移,当横向坐标的值小于38时就让小车往右边平移,如果值在38—58之间,小车就停止不动。 完整程序如下: 【项目三】小车跟着人走 上面两个项目实现了小车能跟随人前进后退和跟随人左右平移,那么如何实现小车跟着人走呢?在这里我们还是利用小MU视觉传感器检测到人体的横向坐标和纵向坐标的值来决定小车接下去的行驶方向。当小车沿直线跟着人走的情况下,程序可以直接用项目一的程序,如果人要转弯行走时,小车应该怎么办呢?这时我们可以让小车根据实际情况先向左或向右旋转(转动)一定的角度再去判断人与小车的距离来决定是否前进。要注意的是让车旋转(转动)的角度一定要小,不然角度太大了可能就检测不到人了,那么如何控制旋转(转动)的角度呢,在这里我们用减慢旋转(转动)的速度来实现。 完整程序如下图: 作者其它帖子 ◆ 小尚,别跟丢了!——自动跟随的麦克纳姆轮小车 https://mc.dfrobot.com.cn/thread-296803-1-1.html ◆ 来吧!一起动手制作一台架子鼓 https://mc.dfrobot.com.cn/thread-289948-1-1.html ◆ 炫彩电子钢琴的设计与制作 https://mc.dfrobot.com.cn/thread-280116-1-1.html ◆ [micro:bit×OBLOQ物联网挑战赛第三轮] 坐姿矫正仪 https://mc.dfrobot.com.cn/thread-269139-1-1.html ◆ 【挑战2】基于物联网的智能闸道、人数统计与安全预警系统 https://mc.dfrobot.com.cn/thread-268643-1-1.html ◆ 物联网比赛第一关:远程监测温度和亮度 https://mc.dfrobot.com.cn/thread-268162-1-1.html ◆ 来来来,让我们一起来打地鼠! https://mc.dfrobot.com.cn/thread-268413-1-1.html |
神经质 发表于 2020-1-15 21:31 编程平台:Makecode,在线网址:https://makecode.microbit.org。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed