电机不动 米兔机器人_深度解密米兔积木机器人八大黑科技

(文章转自【米兔积木机器人】公众号,2017年9月21日)

01 多MCU集群操作系统

美国在1969年使用主频为2.048MHz,内存2K的计算机完成了阿波罗登月,很期待现在的小朋友使用32Mb存储器+最快108Mhz的五个MCU集群系统的米兔积木机器人能完成什么?多MCU集群操作系统,就好像带神经环的蚯蚓一样砍断了就得到了两条蚯蚓,每个部分都能单独工作,放到一起也能配合工作。+生活在计算资源被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就是通过电信号的占空比来实现对电机转速的控制的。这个描述对普通用户来说很不好理解。咱们用推箱子的游戏来举个例子。如果室内粗糙地面有一个箱子,如果想要控制速度,人类的方法是想推多快就用多大的力气。而计算机要是也想向人一样控制速度它会把推箱子的总功拆分成数以万计的分力,每次用力推都使用最大的力量但是持续时间很短,在一个时间段内使用大量的这种很短的力气去推,效果和人类推箱子是一样的。

换句话谁如果两个武林高手对决,一个使用了非常大的力去打了对方一圈,而另一个在很短的时间内高速打了对方一百拳(还达不到青铜圣斗士的标准),显然后者的破坏力可能更多大。这就是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度,我记得小时候拆的钟表里面是没有的,玩具中见到伞齿轮的情况也不多,相信孩子们如果第一次发现有可以拐弯的齿轮应该是很高兴的。

链条是每一节都能拆开的,你需要自己一节一节的装成合适长短的链子。虽然安装繁琐一点但是保留了机械元件最大的自由度,也就是说如果需要的话你完全可以把两链子连接到一起去使用。

万向节是一个很巧妙的机械结构,他的发明人是带着光环的天才罗伯特·胡克,却终身被牛顿打压直至死亡。咱们姑且用米兔积木机器人的传动系统对胡克的发明做个纪念。实际上万向节是一种很令人着迷的结构,可是各个年级的物理课本上都没出现过,你家的孩子肯定会兴奋的研究好长时间。不信的话,不妨试试看!

你可能感兴趣的:(电机不动,米兔机器人)