友情提示:380元/半年,儿童学编程,就上码丁实验室。
如果需要学习本阶段课程,建议先学习本号内《基础硬件篇和基础编程篇》。
学习本篇请下载 LEGO Mindstorms 教育版软件
这个课题内容是跟一些圈子里的老师进行问题回复的时候发现的。
今天希望给大家的是一个思考课题。
这个课题有点长的,我准备是2周内容。
我发现:
绝大多数玩EV3的人在编程和提供一些路线解决方案的时候,都依赖于电机自身的转动和颜色、红外、超声波传感的数据。
但是这里就有了一个问题,大家都说到:
不精准,有误差,甚至误差特别大的情况。
其实就是数据和实际不匹配的情况,这样一来,
往往让机器走直线?或者走一个正方形都会变得困难。
而机器人比赛,移动和转向算是一个基本要求,如果没有办法做到相对精确,那几乎80%的动作要求就都是不精准的。
我最吐槽,就是比赛中,各个选手都把机器做的很大很大,以便借助场地的各个边缘(墙面)来解决移动精准问题。
本人认为:
这根本就算变成在比谁的器材量充沛了。换言之,比谁有钱。
而我们其实在这个过程中,对解决方案的设计和程序改进,并没有做出正确的努力方向。
假设,如果学生自己去参加比赛,只有核心套装,咋办?
今天老丁给一个思路。
曾经我和学生遇到过一个比赛的题目。
矩形是桌子大小,中间的椭圆是障碍,小车从A线出发,绕桌子走4圈半,至B线。要求60秒整。
比2轮,取好的成绩。
评分标准(只是记了下大概):
1、不碰东西
2、不掉
3、60秒,每超过或不足0.1秒,扣1分。
这场比赛,小陈同学(4年级)代表自己小学去,我认为他的成绩是以绝对实力碾压所有对手拿到冠军的。
说下他的成绩吧,具体成绩忘了。
两次成绩都是90+,两次成绩差1分。也就是误差0.1秒!
这张图是小陈的机器人程序所走出的路线图。不得不表扬一下。
我们经常在使用EV3的时候,会忽略一个重要参数,时间。
电机旋转,会有误差;
传感器数据,会有误差;
但是,电子产品的时间参数几乎是没有误差的,是不是?
而时间参数,对应的是实际运行效果。这个和PID的控制思路是一致的。
实际运行效果如果能够作为一个反馈,帮助我们的电机等等动作模块自动调整数据。
那么,无论这个电机的误差有多大(只要不是大到坏了的地步)。都可以实现精准移动、转向。
今天我们先说一个简单的好了,走正方形。
正方形无非是两步,直线、转角。重复即可。
如果仅仅使用编程软件制作出这样的控制电机的程序(数据我是乱写的不要参考)。
那么,无论你怎么调试,可能都没法走出完美的正方形。
这个我相信大家都有感受。
我个人在指导学生做这样的基础练习的时候,一定会用陀螺仪。
什么?
陀螺仪那么不稳定!
EV3陀螺仪的性能就是辣鸡!
最搞不懂的就是陀螺仪!
……
这样的骂声在网上几乎是一整片一整片的。
好吧,我只能说,这些兄弟们不一定会用。
虽然这个陀螺仪确实不那么精密。
首先是理解。
很多朋友觉得陀螺仪是给了角度或者角速度的参数。而这个参数作用不大,对不?
事实上,很多时候,陀螺仪给到的是对于机器人移动过程中的一种参考数据,也是一种实际运行状况的表现。
比如,你要走一条直线,用移动转向模块。
但两个电机有误差,
或者机器本身的重心不对,
或者轮子的摩擦力大小有区别……
反正就是走不了直线。
这个时候,陀螺仪传感器就可以实时给到一个数据反馈,当我们肉眼还没有看出来的时候,它就可以告诉机器,实际上,走偏了。
陀螺仪其实给的是什么?
是单位时间内,机器移动所产生的实际角度变化,或称其为实际角度误差。
最重要的是,这个变化数据,不是以秒来计算的,而是实时反馈的,一有变化,就会反馈!(我们之后的内容中会告诉大家如何设定成为秒误差)
多么华丽的功能!
要稳定的走出直线,那么让陀螺仪作为一个判断辅助,再合适不过了!
首先,我们要把陀螺仪尽量“牢固”地安装在机器的“中间”位置。(不要简单的用个轴搞定,陀螺仪很敏感,避免晃动。)
然后,每次程序运行的时候,都需要它自动重置数据。
这个过程其实也是让机器定位自己的方向。
再然后,移动转向模块的直行方向值是0。所以我们的数据标准值是0。
陀螺仪在单位时间内发现的实际角度变化(误差),与0做一个差。
然后乘以一个参数,这个参数是用来实时调整转向的效果的。建议1~5的范围内。(另外需要注意,根据不同的结构带来的转向效果,如果是反向的,则取负值。)
这个数据越大,你越会发现走出的不是直线,而是一条不断调整,接近于直线前进目的的线路。
但这样其实很好的解决了,我们走直线的问题的。
至于走多远?设置个循环结束的时间参数,不就行了!
用时间控制比用电机度数、圈数控制精确多了。
最后,你有兴趣可以去试试上面提到的那个比赛题目,看看自己能否做出一个绕4圈误差在1秒内的程序方案。
那么下节课,我会讲,如果利用时间和陀螺仪,精确控制转向角度。