最新消息:

【机器人竞赛特刊】精确的直线前进与后退 1

乐高 少儿编程 1882浏览 0评论
竞赛特刊

FLL每年场地赛的主题都会改变,相应的,场地任务多种多样。

正如我之前的课程里面说过,万变逃不过推、拉、提、放,四个动作。

这四个动作对结构的设计要求较高,但其实对程序的要求并不是很强。

而要完成这些动作的关键,是要走到比较精确的位置。

如果我们只会用基本的移动转向,那么可能走位的调试是非常困难的,每次出发后,误差会比较大。

接下来,我会花几个篇幅,去给大家一些竞赛基础程序的分享,希望对你有帮助。

当然,这并不仅仅只能用在竞赛,日常我们做任何的设计时,都可以进行一些参考。


今天我们先来讲讲匀加速/减速的走位。

由于比赛场地和我们日常训练的场地,可能会因为各种原因存在摩擦系数的差别。(比如脏了……灰太多,轮子打滑)

对于机器人来说,

轮子从静止到滚动起来的那一瞬间,这个摩擦力的差别足矣让机器在出发时就产生一个很大的误差。

(当轮子转动起来的时候,其实摩擦力反而影响不那么大了。)

使得我们的走位,即便是直线,也会有挺大的失误。

而匀加速/减速的程序,可以让机器从速度为0的状态时逐渐加快/减慢电机转速,从而让机械运转的更加平稳。

举个例子,

我们日常在开车的时候,车辆从静止状态到开始移动的这个瞬间,对于能量的消耗其实是最大的。

也可以理解为,这个时候摩擦力对机械的影响最大,容易产生误差。

【机器人竞赛特刊】精确的直线前进与后退 1

所以日常如果堵车,一会走,一会停,会比在高速公路上飞驰,对于汽油的消耗量大非常多。

而同理,如果我们急刹车,基本上无法控制车辆的精确停止。

【机器人竞赛特刊】精确的直线前进与后退 1

(要不是提前点刹,估计这就撞上去了

所以,我们往往是看到红绿灯变化时,开始“点刹”。

让车子慢慢的减速,到最后停在停车线附近。

道理是很简单的,具体的物理原理,大家可能到初二物理学力学的时候,会有所接触。


匀加速/减速的走位程序,其实分成3个部分。

1、从静止状态的匀加速运动。

2、到达一定速度后的匀速运动。

3、停止前的匀减速运动。

 

高手们一般都会编写一个“我的模块”,专门用来处理直线走位的匀加速/减速问题。我当然也是,因为很方便啊。

加速度的字母表示是:小写的a

 acceleration加速度 

—— 音译:阿克塞勒瑞熏

匀加速运动的时候,a是一个定值

V表示速度,V=V0+at,

V0表示初始速度,

注意,这不单单是指静止速度为0的状态。

比如,我们在从100速度匀减速的时候,a就会是一个负值,而V0就是100。

这个概念不能出错。

不然初中的物理老师要来找我说我乱教了。当年,我还挺怕我班主任的。

有了这个公式,我们就好办了。


首先,创建变量,V,V0和Va。(当前速度,初始速度和加速度)

【机器人竞赛特刊】精确的直线前进与后退 1

先把V0的值赋予V,

然后V0+Va=V使之循环。

【机器人竞赛特刊】精确的直线前进与后退 1

这里我们并不需要去设定时间参数,

因为EV3每一次程序的循环,我们就可以理解为是一个时间参数了,这个时间参数是一个定值,所以我们在这种情况下,无需特别去设定。

【机器人竞赛特刊】精确的直线前进与后退 1

然后把V给到动作模块,即完成了。

上面这个程序,是用来帮助各位理清基本概念的。

有人会问,干嘛弄的那么复杂?

这边我要说一句,

一个开发人员,在做一个程序的时候,首先确定的是架构

我们的程序,当然没有那么简单,所以,清晰的数据结构,是进一步优化这个程序的基础。


我们回到匀加速的问题。

上文中提到,其实我们做这个程序,是为了解决:

从静止状态到匀速状态中间的那段加速状态,目的是为了让程序更稳定。

而另一方面,当静止状态被打破后,摩擦力带来的影响会逐步减小。

因为是圆的嘛。

 

所以,归根结底,我们是为了解决静止状态带来的一系列误差问题

为了让机器更加快速的到达我们希望的速度。

在静止被打破后,只要均加速一点点距离”,即需要马上提速到 最 大 值 

所以,我们需要对这“一点点”距离做出一个处理。

【机器人竞赛特刊】精确的直线前进与后退 1

当V的速度大于20的时候,对V写入一个高速值。并把这个值赋予一个新的变量,Vz。

这个Vz,是我们用来控制电机的值,随着V的变化而变化。

【机器人竞赛特刊】精确的直线前进与后退 1

这样一来,我们另起一行,把Vz的值,给到动作模块。

一个匀加速然后瞬间提速的程序就完成了。

动手试试吧。

这是个初步的程序,请同学们先行理解。

我们下次继续。

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