来源:魔方机器人
3秒解魔方还嫌慢?再快10倍怎么样?沉寂3个月后再一巨作!
距离上次发布新机器 (
神马? 解魔方只要 3 秒?简直不敢相信我的眼睛!
) 已经整整3个月过去了,可秘密打造的项目又怎么会只有一个呢? 之前发布视频后,有相当一部分观众评论提到 “世界纪录才 0.637秒,MIT还做到 0.385秒,你这3秒多算啥纪录呢?”
确实,他们挺快的,细心的观众才会留意到虽然都是魔方机器人,但却完全是两个不同的种类。下面将这机器人背后的故事呈现给大家,同时希望藉此机会,给大家科普这两种机器人的特点。
以前能实现这种规格的高速魔方机器人的几乎都是工业电机的天下,包括常用的步进电机和大功率伺服电机。每次换上更强大的电机,记录就能够被打破,成了深入民心的概念。
这也一步步提高着后面跟进的玩家的门槛,变成了高端玩家的游戏;你想超越前人的记录,首先你得找到更牛的电机。实话说,我个人觉得这其实并不利于DIY这类型机器人的健康发展。
所以此次,我决定一反常态,我尝试挑战采用比他们不管是体积还是功率都小多了的小舵机,通过各种优化方法来打破他们的记录,立个Flag。也同时鼓励其他DIYer们,只要你愿意去想,没什么事情是不可能的。
舵机在航模界里面非常常见,常用于模型车,直升机,固定翼,船模等作为转向或者螺距控制的装置,因为体积小,重量轻,力气大。在以前用过舵机来做魔方机器人的同学都会了解舵机的转动角度是有限的,一般只有120°,所以做机器人的同学甚至需要选择机器人专用可以旋转180°
的舵机才能完成任务。所以第一步,我们必须要先找到转动角度不受限的舵机。而市面上确实有一些可以360°旋转的舵机,不过他们大多数只能控制转速,不能转动多圈后还能精确定位。这主要是因为舵机一直以来都是以航模控制为主,输入信号都是遥控器的接收机信号,而这个信号是一个固定范围的脉宽信号,调节范围有限,所以采用这种控制方式的舵机只能二选一:固定转角范围内定位,或者固定转速范围内调速。
为此,找到转动角度不受限的舵机还不足够,需要确定其传感器是否可以在任意角度下精确定位,并且设计专门的驱动电路板,编写驱动程序,才可以让舵机完成任意圈数旋转同时还能精确定位。
除此以外,通常的舵机都是为扭矩而生的,转速会比较慢。如果希望达到更高的转速,需要改造变速箱的传动比以获得更高的输出转速和合适的扭矩。
不过舵机毕竟是舵机,输出功率非常有限,直接导致的结果是加速能力不可能达到专门的工业级电机一样的性能,比如之前
MIT学生们用的 U9 Series Servo Disk,简直如同猛兽一样的加减速性能。
不过,也不用灰心丧气,电机的优化到头了,我们还可以优化算法。目前能登榜全球最快的魔方机器人,几乎无一例外都是采用的二阶段算法来解魔方。可是这套算法原本设计并不是专门针对魔方机器人写的,自然也没有对魔方机器人进行对应的优化,效率也固然不是最高的。
因此针对机器人的特性做专门的算法优化就显得非常有必要了。首先得了解咋们的机器的特性,如果同时转动两个相对的面,相当于完成了2步魔方的转动,但实际上,机械层面来说,只花了一次转动的时间,我把这个称为“成对转(Pair
Move)”,如果我能在一次还原序列中找到更多的“Pair Move”,那我节省出来的时间就相当可观了。
于是花了两周时间深入探讨后,找到了一个可行的优化方法,让算法尽可能生成出大量的“Pair Move”。当然,这也意味着需要更长的搜索时间,并且并不是所有的魔方状态都能产生大量的“Pair Move”,我们需要根据实际情况作取舍。
最后,如视频中大家可以看到,虽然同样需要20步才能还原这个魔方,但其中成功找到7个“Pair Move”,实际上只用了 13步机械时间就能完成。
虽然最终结果还可以做得更快,不过我的主要目的其实不是争做全球第一(虽然现在是全球最快的
Marking
2018.11.22),但如果用更快的电机还是可以轻松超越的。 我其实只是想强调一个观点,
我们需要提升我们的思维方式和看待事物的高度。很多人去做优化的时候,只在某些单一的层面上去做优化,往往欠缺全局观。我们需要从系统层面出发,找到各部分连接瓶颈所在,并且逐个攻破。因为有些瓶颈很低成本就能提升60%的性能,而有些瓶颈本来已经优化到80%,如果希望再提升最后的
20%那需要花费的成本可能是前面
80%的成百上千倍。在一个点上深挖本质上没错,但很多时候需要权衡投入成本和产出。所谓站的更高才能望得更远,希望大家有所收获。