首页
学习
活动
专区
工具
TVP
发布

乐高官方额外12个机器人精解:猜球机器人

哈喽大家好

我是玩具探长

微信号:us-52wu

期待我们成为朋友

猜球机器人是乐高官方12个额外机器人中的一个,它的可玩性非常强,类似我们平时生活中猜骰子游戏。

我们先看下演示视频:

点击边框调出视频工具条

它通过B、C两个电机带动横杆随机拨动罩杯的位置带动球移动15秒,然后让我们猜测球在哪个位置,我们通过红外传感器远程模式选择球的位置,假如猜对了,程序块会发出欢呼声,如果猜错了,程序块得会发出Boo的声音。

乐高官方额外12个机器人普遍都有些难度,但是对于乐高机器人的学习者来说,它是非常好的练习材料,是非常锻炼综合能力的。

像这个猜球机器人,里面用到了非常多的自定义模块,如何设置电机的任意旋转,让机器人分辨自己是否可猜中的球,如何编程选关难度等等,知识点是非常多的,其中最复杂的也是这个机器人的难点应该是如何让电机自由旋转带动杠杆波动小球这个动作,所以接下来我们就详解这个动作是如何实现的。

两个杠杆,拨动三个罩杯,其中只有一个有球,你能知道球在哪吗?

大家可能很难明白为什么当电机向不同的方向运转的时候可以同时运行,而向同一方向运行的时候需要分情况,当B电机处于垂直状况下先转B再转C,否则先转C再转B。

之所以这样处理的原因是因为防止两个杠杆打架,但是我们如何知道两个杠杆什么时候打架呢?这就需要一步步的分析了 。

我们的分析分为三步:

第一步:分析杠杆的运行轨迹;

第二步:电机如何执行动作才能避免打架情况的出现;

第三步:编写程序。

第一步:分析杠杆的运行轨迹

它的初始位置是这样的:

球一共有四种运动方式:

当杠杆带动球运动后杠杆一共有3种情况:

总结一下,理论上有36种运动轨迹。

但是因为我们设置的电机运行的情况是B、C里面至少有一个最后的状态是垂直的,所以我们可以排除掉其中16种情况,如下图:

第二步:分析杠杆间打架的情况

从上图我们可以看到,当杠杆在以下三种情况下运行是不会打架的:

当BC电机向相反的方向运行的时候,可以同时旋转不会打架;

当B电机处于初始位置的时候先运行B,再运行C也不会打架;

最后当B电机没有在初始位置的时候先运行C再运行B也不会打架。

第三步:编写程序。

先看第一种情况,C电机有三种初始位置,如下图:

分析完成后编写程序就非常简单了:

B电机运转方式:

这里offset自变量值给出的是60度,因为电机旋转的是以60度为基础的。

我在编写的时候也遇到一个问题,电机旋转必需以60度为基础通过函数加减两个杠杆才不会打架,如果省去函数直接给出具体的数值杠杆还是会打架,目前,还没有找到原因,如果你知道原因希望可以告诉我。

C电机运行的方式:

将B电机C电机运行的方式做成我的自定义模块,然后编入主程序:

然后再来编写执行动作的情况:

最终程序如下:

到此电机带动杠杆移球的程序就编写完成了。

把程度导入程序块,运行看是否正确,假如正常运行,恭喜你,猜球机器人难点和重点你就学会啦,你又向成为机器人高手迈进了一步啦!然后把你的作品分享给我们,我们一起学习进步!

PS:

1:分享方式:

把作品上传到微博@玩具探长family就可以了;

2.如果你需要这个简单程序可以回复“猜球”。

3.如果你需要猜球机器人的图纸和原程序也可以回复“猜球”。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180619G0GI3000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券