最新消息:码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。

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

乐高 少儿编程 8972浏览 0评论

码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。

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

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

上周内容发完,很多小伙伴都发来了更多问题~

看来大家对陀螺仪传感器好像都蛮感兴趣的。

有一些朋友尝试上周的程序后,发现小车在不停的转圈,蛮正常的其实。

第一,  陀螺仪传感器每次使用,一开始都要重置一下,这个请注意。

第二,  参数调整,正负值调整,你要动脑子的,要根据自己的具体情况调试的,别照抄我给的程序,我只是给一个思路。

以上两点请大家注意。这节课就把答应的内容继续更下去。

注意,我给的是思路!不是程序编法!

不以理解的态度看发文,必然进坑~,传的是心法,招式得自己练!


用时间参数来控制程序,这种方法非常多见。

主要还是因为,电子产品的时间参数极为精准,很多EV3的程序,如果把最终的关键参数定在时间上,那么实际运行时,就会非常精确。

(就EV3的使用场景而言,你的硬件再怎么有误差,多运行个0.1~0.5秒,少运行个0.1~0.5秒基本上就可以忽略所有误差了。而这对于电子产品来说,属于精确控制的范围。)

但我们一定要研究的是,

如何让时间参数跟实际效果产生匹配和某种对应的关系?

 

As we all know,很多机械结构的程序,都是基于“反馈”来自动重复调整误差的。PID控制的核心理论也是这个。

在某个我们合理的单位时间内,研究实际反馈值和理论值的关系,就可以让机器实现自动纠错。


转向的输出设备,我们当然是用电机了。

那么在转向的问题上,电机和时间参数如何关联呢?

首先,我们可以思考一下。

如果一个机器要在单位时间内转360度。

那么,也就会出现一个新的单位,即:多少度/时间

(角速度的单位是:弧度每秒,不是一回事。)

假设360度要我们在12秒内完成转向,那么,这个值的转角速度,就是30°/s。

30°,是由两个电机的转向来完成,而制最终转向角度的,实则是两个轮子的速度差。


这些关系理清楚后,

我们会发现:

在一个单位时间内,让实际转向的角度(陀螺仪给的)和理论值(我们要求的)发生关系,就可以自动反馈出两者的差值

用这个差值指导电机的转动,就解决误差问题

并可以用时间参数,精确控制出转向角度

那么接下来就可以开始研究这个程序了。


假设:

1、机器旋转1个全角,是360°。这个我们作为第一个条件。

2、我们让它跟时间的关系关联起来,希望在12秒内转完。这个我们作为第二个条件。

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

以上两个条件得出的结果就是,每1秒,要转30°。

我们先把这个变量给做出来,这个变量算出来的结果,单位就是:度/秒

用时间模块与之相乘,就可以得到每一秒需要转动的度数。(秒被抵消了)

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

第一秒,30度

第二秒,60度

……

 

3、陀螺仪给的是一个实时反馈的值。

也就是,当机器在现实中,每转1度,用了多少时间,在这个情况下够不够完成1秒转30°,它会“监督”着,每当多了或者少了的时候,它会自动给到一个参考值,帮助电机调整转速差。

 

所以,这两者,他们的关系是,差值关系。


不同的结构做出来的东西有大有小。

如下图,两个电机之间的距离是不同的,这个距离,决定了圆圈的半径。

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

从A走到B,和从A’走到B’的线段长度不一样,所以,在相同单位时间内的速度要求也不一样。

由于我们有了陀螺仪这个帮手,速度,变成了它自己控制的东西!

有木有很能干??你们老不用它……

 

实时的角度和理论角度之差,编程了电机功率控制的参数。

 

少的,就要加速;

多了,就要减速。

把上面的理论值和这个实际值相减,就可以得出每秒转动中出现的误差。

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

第一秒,理论:30度,实际:29度,差值1度,加快一点。

第二秒,理论:60度,实际:62度,差值-2度,减慢一点。

……


我们假设一个电机不转动,另一个电机转动,这样来转。

那么就只需要控制一个电机的功率即可。

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

但是,就像我们刚刚所说的,结构的变化会带来半径的变化,也就是说,对电机转动的要求是不一样的。

同样的情况下,

大结构,自然转动的功率要求就高一些;

小结构,就低一些。

而功率上,差个1~2这种值,其实看不太出来。甚至有时候误差直接就抵消掉了。

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

所以,我们可以加入一个参数,让电机的功率调整值扩大一些。

比如,乘个3。

但这也是有极限的。

比如,如果结构很大的时候,又要求,1秒转90度?

这种情况下,电机即便开足马力,也达不到这个要求,那么就要考虑其他的方式去做了。

在使用这个思路制作程序的时候,

我们要设定合理的条件,不能让理想值突破现实硬件能力本身。

大家可以尝试调整各种数据,看看变化效果。

诶,对了,不是说教大家转90度嘛?怎么转360度了呢?

傻伐傻伐?……

360度,12秒。

那么90度,多少秒啦~

戆伐戆伐(上海话)?……

程序运行的设定时间参数去呀!

做成一个“我的模块”参数只要拉出来,以后使用方便多多!

程序还是大家自己多研究,我只是抛砖引玉而已。

具体的模块配置和参数调整,还是需要大家自己动手去感觉哦!

怎么走椭圆?怎么走扇形?

万变不离其中,这种研究很好玩,而公式大家在读书的时候都学过!

学以致用,探索研究才是STEM的精髓。

本文有坑,再照抄试试呀,哼哼~

动手的朋友,一定会自己发现。

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