哈喽大家好
我是玩具探长!
这次我们来聊聊乐高官方机器人里面的打印机机器人!
我们在拼搭打印机机器人的时候,娃儿爸说现在的打印机很高级了,这个乐高机器人显得有点Low。
我说,学习乐高机器人可不是为了让机器人打印的,他主要目的是为了提供一种思路,把这种思路运用到实际的应用当中去。
那打印机机器提供了哪些思路呢?
先来看一段视频:
点击边框调出视频工具条
视频来自油管,我们也做了一个,但是效果不如油管上的这个好,首先是打印纸的问题,超市打印纸的宽度是7.5CM,适用这个打印机的纸是5.5CM,其二官方设计的放笔的孔适用于美国标准签字笔,而国内的直径小一些,放在孔里重心不稳,打出来的字没有视频中的清楚。
尽管有这些问题,但是我还是建议大家将这个机器人拼搭一遍,首先,这个机器人是学习自定义模块使用的非常典型的案例,此外,还用到阵列运算,在给机器人编程中,这些都是非常重要的知识;其次,我们在做机器人的过程中,总会遇到这样那样的问题,碰到问题正好是学习解决问题最好的时候。
像上面的问题,我们可以将打印纸减到2CM,或是自己把机器人改装一下,能够容纳7.5CM的纸;笔细了,看可否用皮筋固定下,或用其它的什么材料装笔的直径加粗等。
好了,回到正题。
看图中的视频,再来看看机器人:
我们通过总结发现LEGO EV3是由下面四种笔画组成的:
而要完成这四种笔画需要解决以下三个问题:
1.判断笔是否应该放下(B电机控制)?
2.笔应该沿Y轴走多远(A电机控制)?
3.纸应该移动多远让笔画沿X抽画条直线(C电机控制)?
那电机要如何控制笔和纸呢?
先说答案,再来详细分解程序。
两步;
第一步:控制电机旋转的角度;
第二步:控制电机旋转的方向。
官方程序是通过建立我的自定义模块来实现机器人打印的,然后通过输入相应的值来让笔在纸上移动,从而打出字来。
我们先将笔托起,然后将笔放在纸的右边,将数据设为零。
开始编写程序:
首先我们编写电机应该旋转多少角度才能让笔托起或是放下;
如果电机将笔托起,那么电机旋转的角度为0,如要将笔放下,电机旋转的角度为180度,然后读取这个数,为什么要读这个数呢?因为我们需要电机运转的角度。
接着测量电机的实际角度;
然后比较我们需要电机运行的角度与电机实际测量角度之间的绝对差值,从而得出电机需要运转多少度;
接着,我们应该考虑电机什么时候开始,以什么功率运转,以及什么时候结束。
要完成以上三个任务,我们可以通过阵列模块完成,让阵列模块分别控制三个电机的运行;
首先,我们判断电机什么时候开始,以什么功率运转。
编写程序如下:
我们首选给程序一个阵列初始值,设为0,通过需要电机运行的位置与电机实际的位置之差判断电机运行的方向,最后,通过阵列给电机一个运行功率,我给的是100,官方给的是70,有兴趣可以看一下不同的功率对机器人的运行有什么样的影响。
接着我们该考虑电机什么时候该停止,编写程序如下:
第一部分:首先,给一个自变量模块,来记录阵列数据,用来判断电机是否已按要求执行;
因篇幅有限,只截取了程序的前半部分和后半部分,大家可以在软件里查看程序。
在结束的时候通过阵列读取电机角度旋转是否已经完成,如果已经完成写判断电机已经完成了任务,最后,让电机等待0.05秒,开始下面一个程序;
至此,B端口电机的程序就写好了。
A端口和C端口的电机程序可以此类推;
首先,我们要知道我们希望A和C电机要旋转多少角度。
如何知道我们需要电机运转多少角度呢?可以通过手动来测量,记录数据,然后与电机实际运转的角度相比较,得出数据,之后,再通过阵列运算判断电机何地开始运动,以什么样的功率运动,最后运行到指定位置后停止。
程序编写完成后编写的程序全部选中,用我的编程模块工具自定义模块,出现如图中的灰色我的模块;这个灰色模块的作用读取主程序的数据,将他分别传递给A、B、C三个电机。
这里有一点需要注意的全选的程序块不包含开始模块。
到这里,我的自定义模块就编写完成。
下面我们来看看,如何让机器写L:
在开始之前要注意笔是被电机托起的,其次笔在打印机器人的最右边。
然后重置电机,将所有数据归零,编写程序如下:
其次在记得每一次开始写下一个字母之前要重置C电机,因为C电机是控制纸移运的,而程序中要求字母与字母之间是有空隙的,这样写完一个字母到开始下一个字母前C电机会有一个运行角度,所以需要将C电机运行的数据清零。
接下来我们看如何写L:
首先我们需要笔从左边移到最右边:
给Y轴赋值100,注意这里的100是通过测量A电机从右到左运转的角度得出来的,A电机从右到左大概需要运行280度,在我的自定义模块里是数学模块*2.8得出的。
接着开始写竖;
放下画笔,让A电机回到原点;
第三步:给C电机赋值50,60也是通过测量得出来的,与A电机的原理一样。
这样一个L就写好了,
最后再让C电机将纸向下移动60,让字母与字母之间留一定的距离。
程序编写如下:
以此类推,写出EGO EV3。
最后再让C电机将纸向下移,以便我们可以将写好的内容移出来。
这样一个复杂的程序块就写好了,是不是很有成就感呢,只要能将原理搞清楚,少即是多,一通百通。
下面,就请大家发挥自己的想象力,让打印机打出一段话吧,然后把你的作品分享给我们,让我们将你的作品分享给更多热爱思考的朋友。
PS:
1:分享方式:
把作品上传到微博@玩具探长family就可以了;
2:如果需要打印机机器人的图纸,可以回复“打印机”得到拼搭图纸;
3:打印机程序在大厅更多机器人里面。
领取专属 10元无门槛券
私享最新 技术干货