如果你是一个饭馆老板,使用机器传菜,但是你的店里偏偏有一个坡道,于是:
这个问题其实用一个陀螺仪传感器 算法就能解决。
我们可以给机器人安装可倾斜的装机械平台和陀螺仪传感器,通过传感的读数来调整平台的倾斜角度,这样它就能保持水平了!
首先我们要知道EV3陀螺仪的性能。
它可以感知角度变化,还可以检测速率(所谓速率就是每秒转多少度)但只能检测一个轴的。
我们所生活的三维世界是三个轴,对于任何一个三维物体而言,我们都可以通过以下三个轴来表示它的倾斜状态。
俯仰
横滚
偏航
所以,想要做一个端菜不洒的机器人,你需要确定你想修正的角度。
这是一个规则的斜坡,如果你直上直下,不在斜坡上走斜线的话,那么这个斜坡只会改变车子的俯仰角。以此,我们推断,平台针对俯仰角上的倾斜做出补偿,传感器自然也就需要侧向安装,把有标记的一面朝向俯仰角的轴。
传感器有两个位置可以安装,一个是装在平台上,编程的策略就是始终保持传感器角度为“0”。然而在实际操作中,我们发现即便是用蜗杆驱动平台,平台的晃动依然很大,不足以让传感器保持在稳定的状态。第二个安装位置就是安装在车身上,根据车身倾斜和平台机械臂的传动比,计算出电机应该转多少度。
但是这仅仅是解决了转的问题,无法解决速度的问题。倾斜的过快,平台的校正太慢,平台上的东西该倒还是会倒。这个速度就是速率了。我们还需要将速率和电机功率挂钩。然而实际的速率和车子的速度以及坡度有直接关系,但是算法这么做就太复杂了。于是我打算采用一种动态算法——电机功率=当前速率 当前角度。
唉?为啥还要加上当前角度呢?如果你单纯的使用速率当作电机功率,那么你会发现当车子的俯仰角度不再变化的时候,平台的校正动作就停止了!因为那时候,车子的俯仰角不再改变,速率也就是“0”了,所以我们需要给电机一个数字用作补偿。
这个数字最好能够根据俯仰角产生一定的变化,角度越大数字越大,并且能够有自动在俯、仰之间切换正、负值。这不就是角度么。所以电机功率就设定为速率 角度了。
当然,我们不能让电机永远转下去,校正过度平台上的东西也会倒。什么情况下停止呢?
当(电机的角度传感器/8)-陀螺仪角度=0(±1)的时候,电机就可以停止了。写成程序是这样的:
为什么是一个范围而不是=0呢?——因为误差这个东西有时候是一件好事,你会发现当你把差值设置为0的时候,你的整个平台都会变得特别不稳定,这个误差反而让平台变得稳定了。这就是为何我们一直使用实体机器人教孩子编程,想要把机器人玩转,孩子们除了考虑理论之外,还要考虑实际应用中所面临的各种情况。
最后,让我们一起来看看最终结果是啥样的:
以下是本期视频中出现的
机器人搭建图和程序分享链接,供大家参考
程序链接:
链接:/s/1x9acgEAx4ASHad54mk32vg
提取码:n5hf
由于时间仓促,程序并没有经过优化,喜欢分享的小伙伴可以将优化过的程序发给我们,让我们看到你的优秀!
OK,本期的分享就到这里,我是在影视公司玩乐高的二牛,如果你喜欢我们的内容,欢迎您点赞和转发。
,