499元,米兔积木机器人,精通18种武术。今天,我们深入解密了米兔积木机器人的黑色技术,堪称性价比高的珠穆朗玛峰。
01
多MCU集群操作系统
1969年美国使用主频2.048MHz,内存2K阿波罗登月的计算机已经完成,我期待着今天的孩子们使用32Mb存储器 最快108Mhz的五个MCU米兔积木机器人的集群系统能做什么?MCU集群操作系统,就好像带神经环的蚯蚓一样砍断了就得到了两条蚯蚓,每个部分都能单独工作,放到一起也能配合工作。这种机器人专属操作系统充分调用了硬件的计算资源,比针对PC的OS要快很多倍。生活在计算资源中的人。PC今天,操作系统浪费了很多。MCU集群操作系统是米兔积木机器人的第一个黑色技术。
02
神经网络和运动神经反射
今天,我将用我能说的话来谈谈人工智能的基础——神经网络。
如今,大多数计算机网络或计算机内部结构就像工厂里的机器一样。他们使用非常僵化的规则工作。工厂内的所有机器应按照事先约定的规则与其他机器配合工作。这种循序渐进的规范可以很好地规定每台机器的工作模式和内容,不会出错。它看起来很漂亮,但除了机械故障外,不可能有惊喜。
如果我们用我们人类取代刚刚描述的机器模型,虽然工人们会按照一定的规范工作,并相互合作,但你在工作中总是会有各种各样的惊喜。一个工人改进了工作流程,或者一个工人减少了车站的数量。这是我们人类和机器之间最大的区别,智能。机器人研究所追求的是人工智能。让机器人在工作中感到惊讶。
为了达到仿生的目的,我们需要对人类神经系统进行暴力拆卸报告(由于过程过于血腥,系统强制省略3000字)。结论是,我们的思维载体是一个独立工作的特殊细胞——神经元。每个神经元都独立工作,并相互影响通信和合作。最有意义的是,每个神经元都可以自学。由于环境的变化,它会简单地改变自己的反应。当然,细胞逻辑会非常简单。数百万这样的神经元聚集在一起,形成集体智慧。对这种神经元结构的仿生研究被称为神经网络。同样,这种神经网络也是现代人工智能的基础。理论上,只要我们能像神经元一样制造这样的单细胞设备,并将足够多的这样的设备连接起来,就会产生集体智慧,即本文的重点和人工智能。
米兔机器人上使用的操作系统是我们努力创建的CPU配合神经元网络,每个主板CPU他们都在这样或那样独立工作,在此期间,信息传输有自学的网络规则。虽然这不足以获得集体智慧,但控制米兔积木机器人水平的设备就足够了。当然,这也是我们在神经网络中迈出的一小步。我们可以想象,当我们的硬件成本足以支持数百万时,我们可以想象科幻小说cpu在计算密度时,我们相信类似鱼群效应的集体智慧会出现,然后自我意识,然后宗教信仰,然后攻击人类……
让我们来谈谈运动神经反射的概念。我们都知道(或者假设你知道)。许多动物的反射不是通过大脑,而是直接通过脊髓或脑干的神经元反射。我们可以举一个非常生动的例子。当你每天上下班走路时,你会带着耳机听歌曲,刷你的朋友圈。当你走路时,你用你的大脑吗?你的大脑在指挥下先迈出哪只脚,抬起来有多高?显然,你明白这是通过运动反射神经直接指挥的。一些武术专家在受到攻击时也会有本能的防守反击。这也是一种更先进的运动反射。用普通人的话说,他们只是在没有大脑的情况下这样做。如果你身体的每一个动作都必须移动你的大脑,估计一天就会被折磨死。各司其职简单明了。在系统设计领域有一个非常模棱两可的术语KISS不要想得太脏,它的原意是Keep It Simple and Stupid. 下面向大家介绍一下米兔积木机器人有关KISS的故事。
可以看出,运动反射系统专门负责运动相关的控制,而大脑专门用于思考和逻辑判断。米兔机器人的物理结构是根据运动神经反射的模型设计的,它使用了两个ARM Contex M3的微处理器构成了米兔大脑的逻辑思维CCU(Centrol Control Unit)小脑与运动反射MCU(Motion Control Unit),未来的平衡运动控制和各种运动控制将由小脑控制MCU大脑将控制程序的执行和各种传感器的判断CCU来控制。
03
智能控制七伤拳和微电机
作为一个机器人运动单元是必不可少的。如果未来的机器人能够在许多行业取代人类,它需要各种形式的运动系统,而目前只有电机才能在技术水平上使用民用运动结构。至于液压结构,其基本运动结构也是电机。电机的运动控制已成为机器人最重要的能力之一。常见的电机包括直流刷电机、直流无刷电机、交流电机、步进电机、伺服电机等。米兔积木机器人的第一台电机是直流碳刷电机,具有稳定的运动结构和简单的控制。本文将简要介绍该电机的控制。
控制电机只不过是旋转和停止,这似乎很简单,但机器人在实际使用中会有更详细的需求,这需要使用高端算法程序来实现。在家用电器行业,电机的详细控制有一个更酷的名字叫做变频,所有可以变频的家用电器都比没有变频的家用电器贵得多。当然,在不同的电力环境中,变频的技术手段也有所不同,今天我们将讨论直流电机的变频控制。
PWM和推箱子
PWM有一个很高的名字叫脉冲调制。学术上讲,PWM它是通过电信号的比例来控制电机转速的。这个描述对普通用户来说很难理解。让我们以推盒子的游戏为例。如果室内粗糙的地面上有一个盒子,如果你想控制速度,人类的方法是使用你想推多快的力量。如果计算机也想像人一样控制速度,它将把推箱的总功率分成成成千上万的分力。每次用力推,它都使用最大的力,但持续时间很短。在一段时间内,它使用大量这种非常短的力来推,效果与人类推箱相同。
换句话说,如果两位武林大师决斗,一个用很大的力打对方,另一个在很短的时间内高速打对方100拳(不符合青铜圣斗士的标准),显然后者可能会更具破坏性。PWM真髓。金大侠描述的一拳中有七种暗七伤拳,被誉为最强大的拳法。
直流电机的控制是利用这种七伤拳来推动电机。一拳中的电源越多,电机旋转越快,反之亦然。事实上,汽车ABS系统也是偷学了金大侠的七伤拳,有了这种秘诀,后面咱们就可以自如的控制电机的转动了。
电机的启动
一般读者会认为电机启动非常简单,直接通电OK然而,事实上,电机的控制不能如此暴力。直接通电将使电机的机械结构立即进入高速旋转阶段,损坏电池、电路元件和电机的使用寿命。因此,聪明的工程师在控制电机时会让电机从静态状态慢慢转动。当然,人眼无法观察到这个过程。
电机的刹车
与汽车不同,直流电机没有刹车片。如果你想让电机停止,传统的方法是增加电机的旋转阻尼,停止电机,但这无疑会增加电机的功耗,影响电机的性能。聪明的工程师会使用一种更聪明的方法,当他们想刹车时,控制系统会给电机一个相反的旋转,这只是为了防止电机继续旋转,智能控制PWM电机可以快速停止。米兔积木机器人在设计制动器时为用户提供了两种选择。您可以让电机慢慢停止或快速制动。
控制电机转速
为了控制电机的旋转速度,我们刚刚使用了七个伤口来控制电路系统的输出,但我们还没有得到电机的实际旋转。为了获得电机的实际旋转,我们在电机中放置了一个光栅码盘(一个小圆盘上有许多小孔)。光栅的一侧是发光器件,另一侧是接收器,电机的旋转将驱动光栅的旋转。只有通过小孔的光才能识别出来,因此光栅码盘将准确记录电机的正反转程度。机器人可以通过从光栅码盘传输的实际旋转信息更好地控制输出PWM控制领域有一个术语叫做闭环。
控制电机旋转角度
电机控制领域最困难的是旋转角度的控制,这将受到电机旋转惯性、电池电压变化、电机负载、电机传动齿轮间隙等因素的限制。例如: 有一个转盘彩票 ,很难要求你每次都停在指定的位置吗?我们人类不能做的事情现在需要机器人来完成,有点太苛刻了,但米兔机器人的角度控制已经达到了0.2度误差(这里用了很多PID可以详见卖油翁和PID一文),不是很牛吗?而且爱它的工程师会继续优化算法,争取更准确。
电机堵转控制
回到推盒子的场景,如果你在推盒子的过程中遇到一个小障碍,努力过去,如果遇到墙(你假设你看不见),你会潜意识地推,然后不推,傻瓜会和墙竞争,这是任何人都会做的,但在电机控制领域很多人不会。
当电机遇到障碍物时,它会增加PWM强度使电机能够跨越障碍物。当它被卡住时,术语被称为堵塞。最正确的方法就像刚才描述的推盒子,用力给一个更强的PWM如果你仍然不能转动,你会转动它PWM只要保持电机不倒退,它就会变小。这种智能阻塞控制的引入不仅增强了整个供电系统的负载能力,而且保护了电机。您可以放心尝试电机的各种用途,卡住后不会损坏。
控制电机电磁屏蔽
直流电机优点多多,说起来缺陷就是电磁干扰了,如果把转动的直流电机靠近收音机就会发现电磁噪声会让你收不到任何一个台。在这个谈电磁辐射就色变的时代,这种小型电机的电磁辐射是非常微不足道的,但是咱们也需要控制一下,尽量的为人类干净生活贡献一点力量。米兔积木机器人在电磁干扰控制上可谓使用了全部手段,首先电机使用金属外壳并且外壳接地,电机内部使用阻尼电阻减少了电机转动中脉冲信号的强度,在电机两极并联多个电容器抑制碳刷在换向时候出现的电火花。这样一来虽然不能说成了电磁安静的电机但是效果改善明显,在本文环境使用各种EMI数据明显不同,但与普通电机相比,接近收音机听干扰检测的干扰要小得多。
简单的电机直流电机采用了许多高科技手段进行设计和生产,这表明爱的团队在米兔积木机器人的研发过程中付出了巨大的努力。稍后,我们将推出更多的电机类别,让您享受制造机器人的乐趣。
04
数据传输:彩虹桥和跳筋
米兔积木机器人的首发包装只有一个主控制器和两个电机,这对高级机器人玩家来说略显不足,但499元的价格确实让大多数人体验到了这种高科技玩具。我今天提供了一个豹子,以便高级玩家更关注扩展模块的真相。今天我将讨论米兔机器人的数据传输协议。
作为IOT数据传输在产品设计中非常重要,我们提供了低功耗BLE蓝牙4.1,2.4G传输协议rainbow bridge与 增强串行通信协议RubberBand。相信除了BLE另外两个协议大家都很奇怪,其实很奇怪,这是爱其科技专门为机器人时代打造的通信协会议,还没有正式公开发布呢。
Bluetooth BLE大家应该都清楚是专门针对物联网时代优化的低功耗传输协议,我们用它来和手机互联。这就不多谈了,感兴趣的读者可以去上网查阅。
Rainbow Bridge是一个基于2.4GHz频段传输的无线通讯协议。它使用了军工设备上常用的跳频技术,当然咱们的跳频技术是为了更好的在已经很拥挤的2.4GHz频段内高速超车,不是再为了信息加密了。Rainbow Bridge支持主控同时和x个(暂时保持神秘感)无线外设模块互联,并且可以很好的协同工作。高速响应的同时还很省电。无线模块的使用让机器人摆脱了传输线的束缚,也解放了玩家的想象力。随之而来的出现了一个哲学的问题,如果你见到一群机器蜘蛛是一个机器人还是一群机器人?谁说机器人一定是一个物理体的,还记得变形金刚里面的声波吗,如果机器人PK比赛我放出两只机器狗算作弊吗?
Rubberband是增强的串行通信协议,一个接口可以连接超过128个电子模块,每个电子模块之间都能相互通信,在米兔积木机器人上我们使用USB TYPE C提供了四个这样的接口,如果直接计算的话可以同时支持4X128=512 个电子模块同时互联。这样支持的模块数量够爽了吗,其实支持模块的极限数量还不止这些,米兔机器人在未来的成长中还会带来更多的惊喜。
小米对待产品开发的态度是不停的更新和小步快跑,欢迎大家踊跃提出自己的产品设计思路,让这个酷炫的产品能有机会按照你的想法去进化,最终版的进化形态我听你的。
05
USB Type-C的兼容和改造
USB Type-C接口是2013年提出的全新的USB接口,而普及使用也就是2016年,苹果的笔记本电脑,小米的手机,各品牌的笔记本电脑都陆续提供了USB Type-C的接口。USB作为大家用的最多的接口标准经历了USB Type-A,USB Type-B,MINI USB,MICRO USB,USB TYPE 3.0,USB Type-C多次变革,而USB Type-C接口最大的特点是解决了一个非常蛋疼的世界性问题,“USB接口永远插不准”,USB Type-C接口支持双面正反插,这样我们再也不用先摸一下再插U盘了。
我们在选择USB Type-C做接口的时候是2015年7月份,在此之前我们把中国长三角和珠三角做连接器的厂家逐个走访了一遍,当时这款接口很新大部分工厂并没生产,技术嗅觉比较灵的工厂也才刚刚开始有计划去购买加工设备,如果量产时因为厂家加工经验不足造成良品率低或者产能不达标将影响我们大货的生产,记得当时也是非常的纠结这个问题。我们负责电子元器件采购的明哥用他的专业经验告诉我USB Type-C接口在2016年夏天会大范围上市,届时会有大量的厂家提供USB Type-C接口,得到了明确的推论以后,我们也将信将疑的打消了这个顾虑,事实证明在电子元器件行业历练尽20年的明哥的预言得到了证实。USB Type-C接口的小体积,拔插手感好,并且提供超多的24PIN的连接的特性深深吸引了我们,并且把我们逐步带到另一个坑里。
请大家做一个计算题,米兔积木机器人对连接器的要求很高,有高压14V电压电源线,有低压5V电压电源线,还有多根数据传输线,为了满足这么多的需求我们就开始在看似非常富余的24PIN接口上选择合适的PIN脚,但是实际情况令人傻眼。空间思维能力好的同学可以想到,要想支持正反插,首先要求PIN脚的定义需要上下两面针对中点对称,这就只剩下了一半12个PIN可以使用。这还不算完,USB Type-C为了兼容传统的USB2.0,将其中的对称的四根线作为5V电源地,另外四根作为5v电源正,这样就需要从我们刚刚计算的12根PIN里面各减去1根冗余的地线和一个冗余的5v电源正。还有USB Type-C是一种多功能接口,支持耳机传输声音,视频传输HDMI,支持网卡传输网络信号等等,这么多的功能就用到了其中的一对PIN做种类的识别。可见刚刚的计算结果中,我们又有一根PIN是被国际标准占用的。请看懂的同学计算一下我们最后能用到几个PIN做为自定义接口?在这里我就保持神秘请大家计算(cai)一下,不公布答案了。
为了保证能和其他按照标准设计USB Type-C设备兼容,我们必须要按照上文提到的国际标准设计,但是给我们留下的可自定义PIN脚数量确完全不够,于是我们可爱的电子工程师使用了很神奇的方法把这个几乎完不成的任务的坑给填平了,既满足了国际标准定义的兼容性,又实现了米兔积木机器人专属需求的扩展。这个对“USB Type-C规范的兼容性升级”我们已经申请了发明专利。
大家现在看到的米兔积木机器人上的USB Type-C是完全兼容国际标准的。主控上只有USB Type-C接口,适配器也只提供USB Type-C接口。当适配器连接主控后将自动协商到14V 2A的大功率上充电,而平时适配器提供标准的5v1A的输出,大家可以使用适配器给普通的手机或者其他使用Type-C接口的外设充电,也可以把主控当做充电宝用使用给手机或其他外设充电,更加方便的是主控没有定义特别的充电口,每个USB TYPE C都可以充电,也可以做数据传输连接其他电子模块。可以说USB Type-C在米兔积木机器人上面发挥了更加强大的功能。
06
自适应倒立摆平衡算法
米兔积木机器人作为一款拼装玩具,搭建的造型可谓千变万化,如何在不同的造型上都能实现倒立摆自平衡算法就是一个很复杂的问题。11月3日小米直播爱其科技张总当时已经透露使用类似汽车无级变速的方式达到算法之间的融合和自适应,如何实现多种数学算法和平衡参数之间的自动匹配以及平滑过渡,总之是很复杂。
单摆也是所谓的正摆,支点比重心高,而倒立摆是支点比重心低,所以不管你想用哪位大师的理论去解释倒立摆,它都是一种不稳定结构,需要在动态中找平。你一定在苦苦思索曾经遇到的倒立摆的杂技表演,而其实你忘记了你自己就是一个倒立摆,人的直立行走就是一个完美的倒立摆。
如果你还能回忆起学习行走的时候的体验就不难理解倒立摆了,重心越低就需要你用更快的反应速度和步伐去纠正你的偏移,所以小朋友经常会摔倒,因为小朋友既不具备更高的重心也不具备更快的步伐去调整。如果有经常摔倒的小朋友读者,这你就可以理直气壮的和父母反驳我的物理结构决定了我现在容易摔倒,等我长大以后就能站稳了。不信的话你可以用一根手指顶起来一头重一头轻的长一点的物体,重头在上面时候更容易稳定。
所以综合上面所述要想让倒立摆达到动态平衡,我们需要更高的重心和支点更快的移动。但是在实际搭建的物理模型上就遇到了更多的限制,一味地增高重心就会导致物体自重变沉,影响电机的负载能力。而由于受限于电机的速度不是无限大,在纠偏的动作中如果超出了电机的最高速度就会摔倒。
我们在研发米兔积木机器人的时候最大的挑战是我们的平衡系统和大家常见的平衡车不同,我们的机器人负载的是不会自己纠偏的积木,还会面临不同的造型导致重心不同的情况,在大家长期努力下,给米兔积木机器人一个自动适应的范围,包括搭建造型重心的前后的移动和上下移动,只要在算法承受范围内就可以自动平衡了。需要注意的是这个平衡系统假设整个机器人是一个不会位移的刚体,所以如果玩家在搭建时候结构太松就会出现疯狂抖动的情况发生,这时只要把结构搭建结实就改善了。
从理论上讲只要电机能扛得住,你往高处搭建负载多大多高都是可以的,所注意的是要保持重心落在轮轴上。于是你可以用米兔积木机器人帮你送花,帮你送戒指,帮你送生日蛋糕,当然如果蛋糕摔坏了我不管赔。
是不是还得到了买一赠一的结论,以后玩平衡车的时候站直了会更稳当。
07
不伤手的积木——四大对策一次解决
经常玩这种塑胶积木的玩家都会配一个钳子的,一个两个积木拼装还好,几千个连着做下来手会磨的很明显,况且很多有名的国产品牌积木光用手通常是拔不下来的,没有钳子就只能用牙了。有人会说那干脆做松一点不是很好吗?其实做的太松积木结构就不好固定了,况且米兔积木机器人是会活动的,不能一边走一边掉零件吧。要能用手轻松拔下来但还很结实,这种恰到好处的手感就成了米兔积木机器人追求的目标。就在这一对矛盾的统一体中我们煎熬了好几个月,最后终于找到了四大秘诀。
1)首先是原料的选择。
一定要用国际大厂的高标号的原材料,经过筛选我们挑中了某台湾著名厂商的高规格ABS作为原料。大家可能不知道,大部分积木厂都会把注塑生产的边角料(水口料)做一定比例回收,比如原料和回收料占比8:2就算比较厚道的了。多次过炉的原料从物理性状上会打折扣,也就会影响弹性,说白了就是手感不好。了解了这种情况,我们和注塑厂做了一个规定,一定用百分之百的原料,水口料都统一废弃。虽然成本会上升,但是这就从原料上保证了高标准。
2)零度拔模技术
所谓塑料注塑其实就和以前中秋节扣月饼模子一样口稍微大一点,底部稍微小一点,要把做好的面团倒出来,就需要做一点斜度,否则如果模子上下一样面团很难被倒出来。但是我们做积木却不允许这样。试想如果积木从一面插和从另一面插的力度不一样那还怎么玩。为了实现这样的需求我们和模具加工厂一起研发制作了多种零度拔模的模具结构,终于满足了要求。
3)模具的加工精度
现代工业对模具加工的专业设备很多,比如慢走丝,电极放电,CNC等多种工艺,要想做出合格的模具就需要专业技能的老师傅综合不同的加工工艺来将一块硬度很强的钢材加工到5个微米的误差,这样才能保证生产出来的注塑件都能达到0.02mm误差范围。当然为了真正能够得到这样的注塑品质还需要使用一种很贵的热流道注塑的工艺。这样的工艺要求会让模具加工非常困难,我们在研发过程中稍微修改一点模具就有可能导致几十万的模具报废。为了这个虚无缥缈的手感我们确实很拼。当然在此基础上我们每个塑件都有一个统一的标准单位,不管你用什么方法连接都会遇到标准单位的整倍数,都能连接到一起。
4)拔插力度
刚刚说了那么多的加工工艺什么,最后落脚到真正的手感参数就是拔插力度,我们经过各种不同人群的大量测试,最终我们定到10N正负4N的拔插力是我们亚洲人最舒适的手感。
就这样,使用高标准原材料,高科技的模具加工工艺,高标准的模具加工精度,以及大量人肉测试总结的拔插手感的数据共同造就了我们今天米兔积木机器人的所谓的手感。我们后来又做过盲测,把我们的积木和lego的积木放在一起,让高级玩家和普通玩家盲测手感,二者旗鼓相当。
08
酷炫的传动结构
米兔积木机器人作为一款拼装玩具,搭建的造型可谓千变万化,如何在不同的造型上都能实现倒立摆自平衡算法就是一个很复杂的问题。11月3日小米直播爱其科技张总当时已经透露使用类似汽车无级变速的方式达到算法之间的融合和自适应,如何实现多种数学算法和平衡参数之间的自动匹配以及平滑过渡,总之是很复杂。
米兔积木机器人提供了两个大扭矩的电机,官方的数据是254.8mN·m。这个数据比较抽象,实际体验是使用正常的力量抓住电机转动状态的输出轮是抓不住的,再用力就硌得手疼。这么大的扭(li)矩(liang)的电机为后续的扩展预留了很大的空间。
大家看视频可以发现米兔积木机器人除了两个轮子可以平衡转动以外,胳膊上两个旋转机炮也能转动,乍一看很神奇,如果仔细观察的话这里面非常不简单。
我们的造型搭建设计师在这里玩了一个酷(men)炫(sao)的设计,用他的话讲如果就单单为了传动的话那就太LOW了。为了把轮子上面的动能传递到胳膊上他设计了一个带有艺术气息的机械传动系统,其中用到了两次伞齿轮的换向,一级齿轮的链条传动,两级万向节的轴传动。如果没有专门研究过机械设计的读者肯定就被这一堆术语懵比了,但你只要知道它足够炫就好了。
伞齿轮比较简单,两个45度的斜齿轮可以让旋转方向更改90度,我记得小时候拆的钟表里面是没有的,玩具中见到伞齿轮的情况也不多,相信孩子们如果第一次发现有可以拐弯的齿轮应该是很高兴的。
链条是每一节都能拆开的,你需要自己一节一节的装成合适长短的链子。虽然安装繁琐一点但是保留了机械元件最大的自由度,也就是说如果需要的话你完全可以把两链子连接到一起去使用。
万向节是一个很巧妙的机械结构,他的发明人是带着光环的天才罗伯特·胡克,却终身被牛顿打压直至死亡。咱们姑且用米兔积木机器人的传动系统对胡克的发明做个纪念。实际上万向节是一种很令人着迷的结构,可是各个年级的物理课本上都没出现过,你家的孩子肯定会兴奋的研究好长时间。不信的话,不妨试试看!