编者按:本文来自微信公众号“大数据文摘”(ID:BigDataDigest),作者:牛婉杨,36氪经授权发布。
还记得今年3月火遍b站的技术宅稚晖君吗?他的一则自制迷你电视的视频在b站有着397万的播放量,更是超越众多二次元视频荣登全站排行榜第5名。
为什么这则视频这么火?因为这个电视相当“硬核”,内行外行看了都觉得厉害的那种。
其实这是个长成电视模样的迷你Linux电脑,连个鼠标就能用!而且它还集人脸识别、语音助手等AI技术于一体,可以检测到人脸,还能用语音唤醒,充当一个迷你的语音助手。
稚晖君,一位自称野生钢铁侠的AI算法工程师,他自己也做过不少机器人项目。前不久,他带着新的作品来了,他自制了一款FOC(Field-Oriented Control)驱动器。
这块驱动器的厉害之处就在于,是稚晖君独自一人耗时三个月制成,软硬件通通由他一人开发。而且这块驱动器有“机器人心脏”之称,就连业界在制作机器人的时候也常会用到此方法来做驱动,比如MIT Mini Cheetah四足机器人的驱动单元中就用到了FOC制作的基础部件。
不仅如此,这块驱动器还被稚晖君称为“全能开发板”,除了应用在机器人领域,还能用来模拟各种物理效果!
话不多说,一起来看看。
稚晖君表示,这个驱动器可以驱动市面上几乎所有类型的无刷电机,而且可以添加很多自定义功能。
这就是驱动器的全貌~ 带有CAN、USB、I2C等通信接口,单路最大驱动电流超过100A。除此之外,还有一块小小的OLED屏幕,分辨率为128x80。
迷你版双通道无刷电机驱动器
这块板子能干嘛呢?它可以同时驱动两个无刷电机和两个舵机。有点难懂?来看下面的例子。
比如通过控制电机1(下方),电机0(上方)也能随之驱动:
上面这个是最基础的,稍微调整一下,还可以变成单向驱动的棘轮。如下图所示,电机0可以跟随电机1在顺时针方向同步旋转,而电机0却无法逆时针回转,它只能做单向间歇运动。
看了这么多,那这两个电机有什么用途?接下来就要展示这个板子最酷的成果了——模拟机器人零件之间的协作,展示一下机器人是怎么动起来的。
现在这两个电机彼此之间是没有感应的,也就是说,当其中一方受到阻力,另一方是不知道的,显然这样是做不成机器人的。所以需要做一些调整,让其中一方感受到力的反馈。
于是,稚晖君又在固件里面新建了一个用户APP,把电机1的位置同步到电机0,同时把电机0的力矩缩小5倍之后同步给电机1。从下图中可以看到,电机1收到电机0的反馈后能明显感到阻力~
所谓的机械战甲、机械外骨骼就是人用肢体动作控制机器人外壳做出一模一样的动作。看到稚晖君展示的效果,是不是觉得有内味儿了~
稚晖君做了这样一个驱动器,明显是要搞事情啊!没错,这块板子就是稚晖君为后面的一个机器人项目准备的零件之一,这块板子将作为“机器人的心脏”。他之前还开发了一款夸克核心版,将作为这个机器人项目的“大脑”。
左手“心脏”,右手“大脑”
让我们小小的期待一下稚晖君的这个机器人项目吧~
话说回来,再看看稚晖君是怎么做成这块板子的吧。
稚晖君感叹道,这是他在所有设计中,做的最曲折的一块板子,花了将近3个月的时间。因为这个是电流达到几十安的大功率器件,焊好的板子不能有一点bug,否则就废掉了。
稚晖君做废的板子~
一次次的失败也让稚晖君感到十分沮丧,但他并没有放弃,经过软硬件几十次的修复,终于成功的做出了这款FOC矢量控制驱动器~
稚晖君表示,这款驱动器的硬件设计参考了VESC和ODrive,在此基础上他进行了一些改进,也添加了很多功能。改进后的板子长这样?
迷你版双通道无刷电机驱动器
别看板子这么小,接口可真不少,带有CAN、USB、I2C等通信接口,单路最大驱动电流超过100A。除此之外,还有一块小小的OLED屏幕,分辨率为128x80。
最重要的是,这款驱动器还带有两路可配置的PWM输出,也就是说这个板子可以同时驱动两个无刷电机和两个舵机。
这块板子只是稚晖君的其中一种设计,他还设计了一种分立叠板式的驱动器。分立式设计的好处就是可以把控制电路和驱动电路分离,如果想换成更大功率的电机,替换下面的驱动电路的可以了。
但他也表示,自己还是喜欢第一种的一体式设计。
稚晖君称,这款驱动器的电路设计其实不算很复杂,其核心在于FOC算法和固件代码的实现。
FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制(VC,Vector Control),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。
FOC算法可以对无刷电机进行力矩、速度和位置三个闭环控制,FOC驱动器可以驱动无刷电机在极地的转速下保持力矩,而且超高转速也完全能hold住。这也是无刷电机被广泛用于机器人项目的重要原因。
更多关于FOC算法以及相关理论实现,可以在稚晖君的博客看到?
http://pengzhihui.xyz/2020/07/02/foc/#more
最后,再来感受一下稚晖君口中的这块“全能驱动器”。之所以全能,是因为除了机器人领域,力矩控制还可以用来模拟各种物理效果。
比如,可以将这个无刷电机模拟成各种旋钮的效果!
可以把它调整为带弹簧的旋钮:
如果设置一定的阻尼,弹簧就可以这样慢慢回弹:
还能变成多档开关的效果:
最后,还可以让它放飞自我:
看到这里,有没有觉得很酷呢~
在视频最后,稚晖君表示在这个“机器人心脏”上还有一个脑洞,文摘菌也小小的期待一下,下期视频见~