机器人一直是稚晖君很感兴趣的一个方向,而在工业机器人中他认为最实用的非机械臂莫属。正巧,半年前稚晖君偶然淘到了一台二手机械臂,这让他有些激动。然而,喜悦之情还没持续多久,稚晖君就有些不开心了:在他花了一些时间将这台机械臂研究透彻,并自己开发了一套 SDK 后,感到了一点不妙:“这个手子不太行啊”。
稚晖君表示,目前市面上的机械臂都不够酷,因此决定要自己造一台很酷的机械臂,并将其取名为 Dummy(取自钢铁侠中一只名为 Dummy 的机械臂)。为此他总结了一份架构设计图(由于该图较长,视频中为滚动呈现,因此本文仅截取部分):
硬件准备
既然是要设计一台机械臂,那就需要从硬件开始准备,毕竟无论软件算法再重要,也需要一个优质的载体才能完美呈现。
驱动方案
硬件方面,首先需要确定的就是驱动方案,其中包括人们常说机器人的三大核心部件——电机、减速器和驱动器。
一般真正的工业机器人使用的电机都是无刷伺服电机,其性能各方面都非常优秀,只是它的驱动系统较为复杂,并不适用于本次机械臂极其紧凑的结构当中。相比之下,稚晖君选择了精度最高的步行电机,但它在高转速下力矩较小的缺点需要克服。
为此,稚晖君选择使用工业机械臂里面最常用的谐波减速以解决步行电机的力矩问题:其零背隙、高减速比、超小体积等优点简直是为这个项目量身打造。
电机和减速器确定后,驱动器方面稚晖君设计了一个步进电机的一体闭环驱动,以此保证驱动精度和体积最小化。
结构设计
驱动方案确定之后,紧接着就是结构设计,以下为设计图最终版本:
大家有没有注意到这张图的一个亮点?
没错,这个最终版本是第 151 版,在此之前还有 150 个版本稿,稚晖君都直呼:“这次的作品是我至今为止画过最复杂的结构设计了。”
从图中可以看到,这款机械臂一共使用了 6 个电机和 6 个谐波减速器,机身主体采用铝 CNC 加工,装饰组件则由 3D 打印制作,为了美观,控制电路上也都集成在本体上。
稚晖君还提到,之所以这个机械臂会设计成红色,并不是为了致敬钢铁侠,而是因为“如果野生钢铁侠的机器人有颜色的话,那一定是中国红”,稚晖君自称为“野生钢铁侠”。
电路设计
整套机械臂的电路设计也非常复杂,其中涉及到了电源模块、电机驱动、计算模块、通信系统等很多方面,光各种型号的 MCU 就用了 12 个。此外,为了后续的扩展性够强,能在交互方面做一些独特创新,稚晖君在机体上还搭载了 WiFi、蓝牙、2.4G 等多种无线能力。
当然,这都是次要的,在电路方面最主要的还是主控制器和电机伺服驱动器。
先说电机伺服驱动器吧,稚晖君将其设计为电机一体式的驱动,支持 CAN 总线和功率机联,因此整套系统下来,仅需 4 根线即可将 6 个电机以及末端执行器全部连接起来。不仅如此,这款驱动器的性能也非常优秀,使用 FOC 加斩波恒流,并且添加了高精度的磁编码进行闭环控制,因此避免了像传统步进电机那样丢步的可能,在最高转速和效率方面也表现不俗。
“如果说驱动器是心脏的话,那控制器就是机械臂的小脑了。”控制器方面,稚晖君采用了他此前开发的机器人开发框架 REF,基于 Cortex-M4 内核的 MCU。稚晖君解释道,这是因为 M4 内核自带 FPU 和 DSP,可大幅提升此后控制算法中涉及到的大量复杂计算的效率。另外,主控制器采用冗余设计,除了主控制器 REF 外,还搭载了一个 ESP32 作为协处理器,用作 STM32 的安全备份并提供 WiFi、 蓝牙等无线能力。
总体而言,稚晖君为解决精度和性能问题,共进行了三个步骤:
第一、使用步进电机加一体闭环驱动;
第二、使用 0 背隙的谐波减速器;
第三、在后续的算法实践中进行高精度补偿。
软件走起
硬件具备了,但这只是开始,更为核心的还是软件算法部分。稚晖君指出,对于机械臂来说,最核心的软件内容在于运动学正逆解的算法以及动力学模型的实现。
运动学正逆解算法可以得知机械臂每个关节角度和最终末端位置之间的正逆解求解关系,而动力学模型则用于实现碰撞检测、柔性控制、力学反馈等多种功能,具体会涉及到大量十分复杂的矩阵和偏微分计算,这一点也是稚晖君在项目实现中花费时间最多的部分:“请大家记住,这些项目表面上看起来是电子和机械,其实背后全是算法和数学。”
除了核心算法外,软件部分还包括命令行和图形化的上位机、手机端的 APP 以及无线示教器固件等。另外,可能还有人注意到了机械臂底座上有一个又大又圆的灯环:
看起来是不是很像......没错,就是鸿蒙的 Logo,这台机械臂主控制器里运行的是 LiteOS 内核的鸿蒙系统。
不过由于视频时长有限,许多技术内容并没有详细讲述,所幸稚晖君将这次的项目也开源了,因此感兴趣的小伙伴可以前往其 GitHub 查看项目详细代码:https://github.com/peng-zhihui/Dummy-Robot。
交互方式
软硬件兼备,那么接下来就是我们最喜闻乐见的演示环节啦!在这个部分,稚晖君展示了很多常规和非常规的交互方式,一句话总结就是:你想要的交互方式,这里都有!
利用串口
这是一种最简单的交互方式,机械臂通过 USB 连上电脑会出现一个串口号,使用者能很方便地用串口命令来控制机械臂,还可以选择多种坐标方式,例如关节坐标系、世界坐标系、工具坐标系等,而所有的姿态结算均在机械臂内部完成。
使用命令行
通过稚晖君设计的 REF 自带的 RPC 框架,可实现更大自由度的机械臂控制和各种参数设置。
图形化上位机
以上两种方式对于技术人没啥问题,但对于普通人来说就有些“阴间”了。因此稚晖君还实现了对应的图形化上位机,可以在上位机中进行“傻瓜式”的拖拽交互。
同时,这种交互还是双向的,即不仅可以把动作下发给机械臂,还可以在软件中实时同步机械臂的姿态:
手动协作示教
理论上来说,以上三种交互方式已经可以满足绝大多数的使用需求了,但精益求精的稚晖君怎会止步于此:“更优雅的交互方式是什么?当然是连软件都不用打开,所见即所得。”
基于此,可在硬件设计阶段通过合理设置减速器的减速比,使得机械臂可以在保持力矩和精度的同时进行反驱,以此获得手动协作示教的功能,即只需手动教它一遍运动流程,它就可以自动学习重复:
但很多协作机器都有手动示教功能,所以稚晖君觉得这并不算炫酷,因此他设计了一个开启示教功能的特别方法:一个无线智能小终端。
这个无线示教器名为 Peak,其功能非常多,可通过低功耗蓝牙和机械臂进行无感连接以实时显示机械臂的各种状态信息,还可以切换各种功能,其中就包括进入示教模式。
AR
除此之外,稚晖君还利用了较为前沿的 AR 技术作为交互方式。毕竟上位机无法展示真实环境,手动示教也比较累,而结合增强现实技术则可以真正实现“指哪打哪”的效果。
终极交互形态:像自己的手臂一样
相信在许多人看来,以上这些交互方式已经足够优秀了,但对稚晖君来说却“还没有到理想状态”、“这一切都还不够自然和优雅”。为了追求极致的交互状态,稚晖君思考了很久,最终想到了人类使用机械臂最符合直觉的方式:要跟使用自己的手臂一样。
出于这种想法,稚晖君设计了一套由双目相机、AHRS 系统、AI 算力平台、力传感和力反馈装置以及通信模组组成的装置,以此实现将人类手臂的动作直接同步到机械臂上,具体原理如下:
首先由双目相机进行目标识别和跟踪定位以及AHRS 系统进行姿态解算来获取准确的手部位置和旋转姿态(由于此过程涉及到的 AI 算法需要高效计算平台来承载,因此稚晖君选择了华为昇腾的 Atlas 边缘计算平台),然后实时的位姿信息会经过复杂的坐标换算通过无线的方式发送给机械臂,机械臂收到之后便能响应执行。
不仅如此,考虑到机械臂的实用性价值,稚晖君还为机械臂设计了一个带力反馈的微型夹爪,也就是说,使用者可随时得知夹爪正在抓取东西的力度。
同时,结合空间定位系统,他还设计了一个手持控制器,集成了 AHRS 装置、红外 LED 以及 PS5 手柄中号称黑科技的扳机(其中安置了一个力反馈马达,可实现对于各种物理效果的真实模拟)。
整套设备的最终效果堪称终极交互形态:使用者不仅可以把动作实时同步到机械臂,而且还可以在控制器这边实时感受到机械臂末端抓取东西的质感。
为了展现这个效果有多惊人,稚晖君用机械臂给葡萄做了一个缝合手术:
自然,这套动作让人们亲手完成也可以,不就是缝个葡萄,但你可以人在厕所缝着客厅的葡萄吗?没错,这台机械臂可以实现远程操作,除此之外,他还可以进行软件去抖、运动范围的重映射、力矩强增强等多种人手无法达到的效果。
“请叫我‘野生钢铁侠’”
其实在稚晖君看来,这次的机械臂项目不过是他在业余时间研究的一个“小作品”,只是他为自己准备的一个生日礼物,不想却得到了众多人的关注与称赞。但如果能因此引发一些学生的兴趣,让大家投入到相关领域学习创新,那自然是再好不过了。
稚晖君表示:“我既不是天才,也已经不是少年了,可能‘野生钢铁侠’这个称呼更适合我。”
参考链接:
https://www.bilibili.com/video/BV12341117rG?spm_id_from=333.999.0.0
https://weibo.com/n/%E7%A8%9A%E6%99%96%E5%90%9B
https://github.com/peng-zhihui
来源:CSDN(ID:CSDNnews)