本帖最后由 青岛张纯胜 于 2018-6-19 11:46 编辑
乐高EV3家庭版套装中官方一共有17个机器人模型,大厅里有5个,更多机器人中有12个,这些都是学习机器人最好的模型,大厅的5个机器人模型相对比较简单,而更多机器人中12个机器普遍比较复杂,对于小白玩家来说,要弄懂还是有些难度的,我也是一个小白玩家,弄懂这些程序花了不少心思,消耗了不少脑细胞,总算弄懂基中大半部分精髓,写下来一是验证自己的思考,二是与大家交流,毕竟还有少部分东西不太明白。
因为每一个程序都比较长,比较复杂,所以我只分析每一个机器人里的重点和难点,其它可以通信交流!
这个猜球机器人的重点和难点就是两个电机如何带动杠杆旋转,让球换位置,并且杠杆不打架。
先来看下他的演示视频:
所以我的分析分三个部分:
第一步:分析杠杆的运行轨迹; 第二步:电机如何执行动作才能避免打架情况的出现; 第三步:编写程序。 第一步:分析杠杆运行轨迹 杠杆初始位置是这样的:
球一共有四种运动方式:
当杠杆带动球运动后杠杆一共有3种情况:
所以,理论上杠杆一共有36种运行轨迹:
在纸上简单画了一下:
但是因为我们设置的电机运行的情况是B、C里面至少有一个最后的状态是垂直的,所以我们可以排除掉其中16种情况,如下图:
第二步:分析杠杆间打架的情况 从上图我们可以看到,当杠杆在以下三种情况下运行是不会打架的: 当BC电机向相反的方向运行的时候,可以同时旋转不会打架; 当B电机处于初始位置的时候先运行B,再运行C也不会打架; 最后当B电机没有在初始位置的时候先运行C再运行B也不会打架。
第三步:编写程序
先看第一种情况,C电机有三种初始位置,如下图:
分析完成后编写程序就非常简单了:
B电机运转方式:
这里offset自变量值给出的是60度,因为电机旋转的是以60度为基础的。
我在编写的时候也遇到一个问题,电机旋转必需以60度为基础通过函数加减两个杠杆才不会打架,如果省去函数直接给出具体的数值杠杆还是会打架,目前,还没有找到原因,如果你知道原因希望可以告诉我。
C电机运行的方式:
将B电机C电机运行的方式做成我的自定义模块,然后编入主程序:
然后再来编写执行动作的情况:
最终程序如下:
到此电机带动杠杆移球的程序就编写完成了。
把程序导入程序块,运行看是否正确。
最后是我做程序以及乐高官方猜球机器人图纸和原程序。
链接:https://pan.baidu.com/s/1uTGGEnXQCfp0dhSxOTaG9w 密码:kpmb
|