最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果

乐高 少儿编程 6913浏览 0评论
EV3基础应用

友情提示:380元/半年,儿童学编程,就上码丁实验室

 如果需要学习本阶段课程,建议先学习本号内《基础硬件篇和基础编程篇》。

学习本篇请下载 LEGO Mindstorms 教育版软件

这个课题内容是跟一些圈子里的老师进行问题回复的时候发现的。

 

今天希望给大家的是一个思考课题。

这个课题有点长的,我准备是2周内容。

 

我发现:

 

绝大多数玩EV3的人在编程和提供一些路线解决方案的时候,都依赖于电机自身的转动和颜色、红外、超声波传感的数据。

 

但是这里就有了一个问题,大家都说到:

不精准,有误差,甚至误差特别大的情况。

 

其实就是数据和实际不匹配的情况,这样一来,

往往让机器走直线?或者走一个正方形都会变得困难。

 

机器人比赛移动和转向算是一个基本要求,如果没有办法做到相对精确,那几乎80%的动作要求就都是不精准的。

 

我最吐槽,就是比赛中,各个选手都把机器做的很大很大,以便借助场地的各个边缘(墙面)来解决移动精准问题。

 

本人认为:

这根本就算变成在比谁的器材量充沛了。换言之,比谁有钱。

而我们其实在这个过程中,对解决方案的设计和程序改进,并没有做出正确的努力方向

 

假设,如果学生自己去参加比赛,只有核心套装,咋办?

 

今天老丁给一个思路。

 


 

曾经我和学生遇到过一个比赛的题目。

 

矩形是桌子大小,中间的椭圆是障碍,小车从A线出发,绕桌子走4圈半,至B线。要求60秒整。

 

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果

比2轮,取好的成绩。

 

评分标准(只是记了下大概):

1、不碰东西

2、不掉

3、60秒,每超过或不足0.1秒,扣1分。

 

这场比赛,小陈同学(4年级)代表自己小学去,我认为他的成绩是以绝对实力碾压所有对手拿到冠军的。

 

说下他的成绩吧,具体成绩忘了。

两次成绩都是90+,两次成绩差1分。也就是误差0.1秒!

 

这张图是小陈的机器人程序所走出的路线图。不得不表扬一下。

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果


 

我们经常在使用EV3的时候,会忽略一个重要参数,时间

 

电机旋转,会有误差;

传感器数据,会有误差;

 

但是,电子产品的时间参数几乎是没有误差的,是不是?

 

时间参数,对应的是实际运行效果。这个和PID的控制思路是一致的。

 

实际运行效果如果能够作为一个反馈,帮助我们的电机等等动作模块自动调整数据。

 

那么,无论这个电机的误差有多大(只要不是大到坏了的地步)。都可以实现精准移动、转向。

 


 

今天我们先说一个简单的好了,走正方形。

 

正方形无非是两步,直线、转角。重复即可。

 

如果仅仅使用编程软件制作出这样的控制电机的程序(数据我是乱写的不要参考)。

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果

那么,无论你怎么调试,可能都没法走出完美的正方形。

这个我相信大家都有感受。

 

我个人在指导学生做这样的基础练习的时候,一定会用陀螺仪

 

什么?

 

陀螺仪那么不稳定!

EV3陀螺仪的性能就是辣鸡!

最搞不懂的就是陀螺仪!

……

这样的骂声在网上几乎是一整片一整片的。

 

好吧,我只能说,这些兄弟们不一定会用。

虽然这个陀螺仪确实不那么精密。

 


 

首先是理解。

 

很多朋友觉得陀螺仪是给了角度或者角速度的参数。而这个参数作用不大,对不?

 

事实上,很多时候,陀螺仪给到的是对于机器人移动过程中的一种参考数据,也是一种实际运行状况的表现。

 

比如,你要走一条直线,用移动转向模块。

但两个电机有误差,

或者机器本身的重心不对,

或者轮子的摩擦力大小有区别……

反正就是走不了直线。

 

这个时候,陀螺仪传感器就可以实时给到一个数据反馈,当我们肉眼还没有看出来的时候,它就可以告诉机器,实际上,走偏了。

 

陀螺仪其实给的是什么?

 

单位时间内,机器移动所产生的实际角度变化,或称其为实际角度误差

 

最重要的是,这个变化数据,不是以秒来计算的,而是实时反馈的,一有变化,就会反馈!(我们之后的内容中会告诉大家如何设定成为秒误差)

 

多么华丽的功能!

 

要稳定的走出直线,那么让陀螺仪作为一个判断辅助,再合适不过了!

 

首先,我们要把陀螺仪尽量“牢固”地安装在机器的“中间”位置。(不要简单的用个轴搞定,陀螺仪很敏感,避免晃动。)

 

然后,每次程序运行的时候,都需要它自动重置数据。

这个过程其实也是让机器定位自己的方向

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果

再然后,移动转向模块的直行方向值是0。所以我们的数据标准值是0。

陀螺仪在单位时间内发现的实际角度变化(误差),与0做一个差。

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果

然后乘以一个参数,这个参数是用来实时调整转向的效果的。建议1~5的范围内。(另外需要注意,根据不同的结构带来的转向效果,如果是反向的,则取负值。)

【 EV3基础应用 】你不太用陀螺仪,一旦和时间参数关联,带来精确的移动、转向效果

这个数据越大,你越会发现走出的不是直线,而是一条不断调整,接近于直线前进目的的线路。

 

但这样其实很好的解决了,我们走直线的问题的。

 

至于走多远?设置个循环结束的时间参数,不就行了!

用时间控制比用电机度数、圈数控制精确多了。

 

最后,你有兴趣可以去试试上面提到的那个比赛题目,看看自己能否做出一个绕4圈误差在1秒内的程序方案。

 

那么下节课,我会讲,如果利用时间和陀螺仪,精确控制转向角度。

您必须 登录 才能发表评论!