本帖最后由 rmq 于 2024-12-7 13:52 编辑
【导语】
在科技日新月异的今天,智能送餐机器人已经悄然走进了我们的社区生活。 只需简单输入对应的门牌号码或座位号,这些机器人就能精准无误地沿着预设路线,将餐食准时送达顾客手中,为我们的生活带来了极大的便利。 基于此,小喵在仿真环境中模拟了输入门牌号进行送餐的过程,那么具体要如何编写此次的程序呢,下面就让我们来揭开智能送餐机器人程序的神秘面纱吧!
【编程软件使用】
【前期准备】
素材准备: 由于不涉及硬件部分,我们需要准备送餐车和地图素材。
制作好之后分别放置在角色和舞台上,调整好合适的大小和方向,就可以对小车进行编程了。
【功能概述】
通过地图上的白线大家可能已经猜到了,这次的送餐小车是通过巡线的方式去送餐到指定地点的,实现的大致方法是先将所有门牌号和对应路线规划好,然后再根据规划选择路线。 具体怎么规划呢,举个例子,以上面的动图为例,小车从地图左边出发,将餐送到105号房,小车的路径就是先通过2个路口,然后右转直走,我们可以用抽象思维的把路径提炼为【2右】,这样105号房的路径就设置好了。 通过输入门牌号查找预先设定好的路线进行巡线,进而把餐品送货顾客手中。
而小车巡线的具体方法则是通过车头的两个不同颜色的色块进行检测,浅蓝色色块检测到白线时说明车身要左转;深蓝色色块检测到白线则说明要右转,如果都没碰到就走直线。
如果基本原理看懂的话,接下来就可以开始编写程序了!
【程序编写】
【初始化】
编写小车的程序初始化时除了设置好方向和大小外,需要使用两个列表来分别记录好地图上出现的门牌号,以及小车到达门牌的路径指令,一共6个指令,编写指令的方法在【功能概述】中已经说明过了。 这两个列表的门牌号和行驶指令的顺序需要一一对应,不能混放,如105是【门牌列表】中第五项(Kittenblock图形化编程中列表的第一项的序号为1),则【门牌指令】列表中第五项存放的就是105的路径指令——2右,所有的门牌指令顺序皆是如此。
【巡线基础程序封装】
由于小车是巡线行驶到指定位置的,我们可以先把小车的基础巡线程序给封装起来,一共是四种基本状态:前进、路口左转、路口右转、掉头。注意左右转幅度不能太大,转2度就可以了,以免影响检测效果。
【主程序】
完成上述步骤后就可以开始编写主程序了,首先机器人会询问配送的门牌号,这里需要设置两个变量均为0,如果我们回答的门牌号是地图上的门牌号时,机器人会回答开始配送至XXX号, 同时使【开始配送】变量=1跳出当前循环;而如果回答的不是地图上的门牌号,机器人回答“未找到此门牌”并再次提问。
在机器人配送时,需要知道怎么才能巡线到该地址,而巡线的指令在【门牌指令】列表中,我们可以使用一个循环来查找门牌号对应的序号,并把序号存储在【指令序号】变量中。 这一步非常重要,也是机器人能够行驶到准确地点的关键。 至于【路口数】变量的作用,我们可以往下继续分析来逐步解密。
小车在接收到命令后首先会开始巡线到门牌号对应的路口,实现的方法为每经过一个路口,【路口数】变量+1, 如果路口数和对应指令的第一个字符相等,则说明已经到达该路口了,机器人会在这里停下,如果没有则一直巡线。 在碰到路口时会移动比较多的步数(如6步),直到两个探测色块超过路口的位置,这么做的目的是为了在转向时不会受到干扰。
在路口处停下时需要根据门牌号进行左转或右转,这个时候需要根据指令的第二个字符继续判断,并把相关程序封装放在【巡线到路口 (路口数)】的后面。这步比较简单,就不详细说明了。
在完成转向后机器人就可以把餐送货到家了,地图中家门口处也是存在一条白线的,以这条白线为依据检测是否到达。到达后先往前行驶超出白线距离,随后调转方向准备返回。
如果前面的都能理解,那么返回的步骤也很容易理解,这里我就把剩余的3个步骤放在一起来讲解。 首先从送货地点返回时先巡线到路口,如果机器人是右转进来的,那么想要原路返回在路口处就要左转,反之则右转,最后根据【路口数】变量返回起点并掉头。到此所有程序已完成。
【功能演示】
演示视频
【程序文件】
登陆后即可下载源文件:
送餐机器人.sb3
(182.42 KB, 下载次数: 10)
|