天才少年,一人成伍。
稚晖君一更新,其他科技区UP主纷纷回到生活区。这算是年轻人对稚晖君的最高褒奖了!
国庆期间内,华为天才少年稚晖君送上一份大件:一人!一条龙!造了一只钢铁侠的机械臂!
据说这是他迄今为止的“业余项目”中最复杂的一个。连何同学都在评论区占据沙发:我好菜。
机械臂的名字也非常有趣——叫做Dummy,不仅致敬钢铁侠的机械臂笨笨,还是绑定到机械臂的末端上的“引导点”,暗含稚晖君的小心思,实在是妙哇!
这次稚晖君的项目,操作系统和 AI 计算平台也分别都用上了华为鸿蒙和昇腾 Atlas 处理器,机身还是一抹靓丽的中国红。
身在华为,心在中华,在弹幕大军感叹稚晖君软硬件通吃的超强专业能力和连做四个月的高效“肝”能力的同时,还对这位天才少年的人文素养竖起大拇哥!
用B站“专业话术”说,这不得“一键三连”!正如稚晖君多次在B站动态中表示:要努力成为科技和人文交叉口最靓的仔!
路人粉应该知道,他身上的标签,最显眼的“华为天才少年”。但是关注过他的人却知道,他的标签,是对科技的极致热爱。
稚晖君应该是每一个电子爱好者所向往但是又渴望而不可及的大佬。但他表示自己不算CS科班,本科是生物医学工程专业,研究生是信息与通信系统专业,18年毕业于电子科技大学,之后进入OPPO算法岗工作,目前已经是华为AI算法工程师。
除此之外,他还是一位技术追求极致的UP主,从一个爱好动手的大学生分享各种硬件DIY视频,到分享B站最强小电视、FOC矢量控制器、PocketLCD,自动行驶自行车,在斜杠的路上受到众多网友追捧。
用稚晖君自己的话来说,上班做AI算法研究,芯片使能软件栈开发,DSA架构下稀疏矩阵加速,视觉库异构加速之类的,但是下班做的东西对大家来说更好玩。在这款机械臂的动态中,整整两个月,他与粉丝一同分享机械臂的长成记录:
8月6号预告“下一个项目是机械臂”
10号的与众多网友报备“已出设计图”
在这之后的一个月中,顺便吐槽一下加工师傅拖慢进度,等待的时间已经做出小模块
9月17号终于收到加工件,19号完成机械臂的整套闭环驱动
10月6号全部完工,7号出视频
网友惊叹稚晖君的恐怖之处在于:一个人完成了所有细节,建模,算法,电路设计,驱动设计,APP开发,单拎出来足够做个毕设了!
其知识覆盖面并非靠普通的学业方式实现,被华为以天才计划纳入麾下,想必就是看中他这一点。在8月2日,任正非在中央研究院创新先锋座谈会上与部分科学家、专家、实习生的讲话中说到:
对于2012实验室(华为的总研究组织),公司从未给过你们过多约束。比如,有人研究自行车的自动驾驶,公司没有约束过他。我们要生产自行车吗?没有啊。这是他掌握的一把“手术刀”,或许以后会发挥什么作用,产生什么巨大的商业价值。
这个项目看上去是四个月的工作,实际上有之前无刷驱动、小电视等项目的大量沉淀。表面上看起来是项目是电子和机械,背后全是算法和数学。
在项目背后,稚晖君自己表示,坚持每个项目开源,与大家一同进步。能够通过一个项目视频带大家概览某一个方向的技术,有了对该领域的sense和兴趣之后,再激励大家去自主学习,这相比于独乐乐可能是更有意义的事情。
如何自己造一台很酷的机械臂呢?如何在成本有限地情况下造出市面上精度最高、性能最强、体积最小的机械臂?
首先要解决三个问题:机械结构设计、电子系统、软件系统。
一、机械结构设计结构设计中首先要解决的是精度问题,在机器人的硬件设计中,常说的机器人三大核心部件是电机、减速器、驱动器。真正的工业机器人中使用的电机一般是无刷伺服电机。
无刷伺服电机不论是在动态响应,力矩保持,精度各方面都非常优秀。缺点是驱动系统比较复杂,不适合用在本次这样极其紧凑的结构中。于是稚晖君的方案中,决定使用步行电机。这类电机的精度最高,但缺点在于高转速下力矩比较小。
所以为了解决力矩的问题,一般会给电机配备减速器。减速器就是类似汽车的变速箱,是用于降低输出的转速,而成倍增加输出力矩。
目前市面上的小型机械臂使用的都是行星减速器,而在本次项目中,使用了工业机械臂里面最常用的谐波减速。在柔性轮和波发生器的相互作用下,谐波减速器具有零背隙、高减速比,超小体积等优点,非常适用本项目。
谐波减速器的运行原理在电机和减速器确定后,最后是驱动器。同样为了保证驱动精度以及体积的最小化,稚晖君设计了一个步行电机的一体闭环驱动。在“第151个设计稿”上,整只机械臂一共使用了6个电机,6个谐波减速器。
同时为了保证机身强度和精度,机身的主体采用铝CNC加工,而装饰的组件则使用3D打印制作。所有的控制电路都集成在本体上且充分考虑美观。
二、电子系统整套设备的电路设计相当复杂,涉及了电源模块、电机驱动、计算模块、通信系统等等。
实际上这台机械臂上光各种型号的MCU就有12个,而且为了使后续的扩展性足够强,且交互方面能够做一些很有意思的创新,在机体上搭载了Wifi,蓝牙,2.4G等很多种无线能力。电路方面最主要的是主控制器和电机伺服驱动器,其中后者为了电机一体式的驱动,支持CAN总线和功率机联,所以整套系统将所有的6个电机以及末端执行器连接起来,仅需要4根线。
这款驱动器的性能可以说非常暴力,方案使用的是FOC加斩波恒流。由于添加了高精度的磁铁编码进行闭环控制,所以不会存在传统步金电机丢步的风险。
同时在最高转速和效率方面,也不是3D打印机上那种驱动器能比拟的。如果说驱动器是心脏的话,那控制器就是机械臂的小脑了。在这个项目中,稚晖君使用了之前设计的机器人开发框架REF、基于Corte-M4内核的MCU。提到这,稚晖君还是考量到后期的性能扩展性,凭借M4自带FPU和DSP的内核,为后面的控制算法中实现涉及到的大量复杂计算,展现出明显的效率提升。
另外主控制器采用冗余设计。除了主控制器REF外,还板载了一个ESP32作为协处理器。一方面作为STM32的安全备份,另一方面可以用于提供wifi蓝牙等无线能力。
总之为了解决最开始提到的精度和性能问题,解决方案就是:第一,使用步进电机加一体闭环驱动,第二,使用0背隙的谐波减速器第三,在后续的算法实践中进行高精度补偿。
三、软件设计对于机械臂来说,最核心的软件内容在于运动学的正逆解的算法以及动力学模型的实现。
前者告诉我们机械臂的每个关节角度和最终末端的位置之间的正逆解求解关系,后者则用于实现碰撞检测,柔性控制,力学反馈等功能。其中涉及到大量非常复杂的矩阵和偏微分计算,也是在项目实现中花费时间最多的部分。
而且可以选择多种坐标方式,比如关节坐标、世界坐标系、工具坐标系等。所有的姿态结算都是在机械臂内完成。第二种交互方式是使用命令行,通过前期设计的REF自带的RPC框架,可以实现更大自由度的机械臂控制和各种参数设置。
但是前面两种方式偏极客,对于普通人来说,图形化才是更“阳间”的交互方式。于是也实现了对应的图形化上位机。在上位机中可以进行傻瓜式的拖拽交互,而且是双向交互。
也就是既可以把动作下发给机械臂,也可以在软件中实时同步机械臂的姿态。至此,这款机械臂才基本可以满足绝大多数的使用需求。这就完了吗?相比于上述方案,更优雅的交互方式是什么呢?当然是软件都不用打开,所见即所得–示教系统!
回到硬件设计阶段,如果合理地设置减速器的减速比,这台机械臂就可以在保持力矩和精度的同时进行反驱,所以获得了一个手动协作示教的功能。只需要手动教它一遍运动的流程,它就可以自动学习重复。手动示教,其实是很多协作机器人都有的功能,并不算炫酷。
值得一提的是开启示教功能的方法,整个机械臂的机身,除了一个电源按钮,没有别的按键,那么如何进行各种功能的切换呢?一方面是通过动力学模型进行自动检测,另外可以通过示教器开启。
在方案中,稚晖君设计了一个无线智能小终端,也是这台机械臂的伴侣,它可以通过低功耗蓝牙和机械臂进行无感连接,连接之后可以实时显示机械臂的各种状态信息,以及切换各种功能,比如进入示教模式。
还有别的交互方式吗?在新方案中,是不是可以结合一些比较前沿的技术,比如AR增强现实技术,在上位机中无法展示真实的环境,实现指哪打哪的效果?
当然,只要方案可行,稚晖君就能做出来!但此时,生物学本行的稚晖君想到,机械臂和人类手臂有什么不同?人类使用机械臂最符合直觉的方式是什么?能不能设计一套系统,把人手臂的动作直接同步到机械臂上面?
同步现实!在终极方案中,稚晖君设计了一套装置,由双目相机、AHRS系统、AI算力平台、力传感器和力反馈装置以及通信模组组成。
为了实现机械臂和人手臂动作同步,首先需要获取准确的手部位置和旋转姿态,而这两点分别由双目相机进行目标识别、跟踪定位,以及AHRS系统进行姿态解算来实现。
其中涉及到的AI算法需要高效的计算平台来承载,用是华为昇腾的Atlas边缘计算平台。实时位姿势信息经过复杂的坐标换算,以无线的方式发送给机械臂,并由机械臂响应执行,这样的交互极其丝滑。
但机械臂的实用性并不体现在动一下而已, 通过在机械臂末端更换不同的效应器,来实现不同的功能,完成不同任务,才是有价值的地方。
比如说安装激光器可以三维雕刻、安装画笔可以书画、安装小型的主轴作为6轴的雕刻机,又或者最常见的,安装夹爪完成各种通用操作。
在末端,稚晖君添加了从ps5手柄拆来的带力反馈的微型夹爪,可以时刻得到夹爪正在抓取东西的力度。结合前面说的空间定位系统,又设计了一个手持控制器,包括AHRS装置。而末端有一个红外的LED,还可以用于双目相机进行辅助识别。
整个链条打通后的效果是,我们不仅可以把动作实时同步到机械臂,还能在控制器这边实时感受到机械臂末端抓取东西的质感,这才是终极的交互形态。
机械臂缝合葡萄皮谈到如何应用,其实并不遥远。通过机械臂执行动作,可以达到很多人手无法达到的效果,比如可以进行软件去抖、运动范围的重映射、力矩强增强等,更重要的是远程手术,也不再是难题。
最新评论