这是「进击的Coder」的第 590 篇分享
来源:新智元
“
阅读本文大概需要 7 分钟。
”
你们还记得上次那个「全栈自研」的给葡萄缝针的钢铁侠机械臂 Dummy 吗?
近 3 个月没更的华为「天才少年」稚晖君带着他的最新视频来了!
虽然跳票了一段时间,但他还是来了。网友纷纷表示:「失踪人口回归」。
这次的项目叫 ElectronBot,是个支线项目。稚晖君表示,整体难度不高。
不如先看看整体效果如何?
「电子」机器人如何造?
在开始项目之前,稚晖君简单介绍了一下选择这个项目的动机。他戏称:「这是一个捡到一个鼠标垫,想配一台电脑的故事。」
众所周知,稚晖君热衷于收集各式各样的「屏幕」。这次,他不知道从哪搞来了一块圆形的 LCD 屏幕。
灵光乍现,稚晖君的 DNA 动了。
简单的手表、挂件已经满足不了他了。他打算做一个新颖的、「又萌又硬」的机器人。
他的灵感一部分来自于早些年很火的「Anki Vector」、丰田推出的对话机器人「Kirobo Mini」、索尼曾经推出的音乐蛋「Rolly」,还有外形酷似阿童木的迷你机器人「Robi」等等。
但是稚晖君却表示,这些机器人功能太单一,扩展性和开放性还不强。
他打算自己设计一台桌面型的迷你机器人。
上述的迷你机器人,受限于体积等因素,本身计算能力并不强。并且想要实现稍微智能点的交互,还得依赖手机的芯片。稚晖君锐评:「不够优雅,也不够实用。」
他想设计一款无需充电、随时待机、有强大计算能力的机器人。
他想到了一个办法,就是把这台机器人设计成一台电脑的配件。那么就可以获得电脑上的应用程序、拥有其强大的算力、还能时刻连着 USB 充着电。
有这等好事,机器人听了都直点头。
因为 LCD 屏幕是圆形的,一台圆润可爱科幻风的机器人原型就新鲜出炉了。
稚晖君表示,这是他第一次尝试用 T-Spline 曲面建模。成品机器人双臂可动,有两个自由度,身体和头部各有一个自由度。
而且稚晖君这人能处,有 6 个舵机他真塞。这可不简单,机身这么小,稚晖君想了很多有创意的传动方案。
他希望机器人的手臂可以同时前后和左右旋转,而手臂的位置不足以塞下一个舵机,因此只能把舵机都装到肚子里去。
同时,稚晖君还希望手臂的两个角度可以进行反驱,所以弹簧扭簧这种东西就只能 pass 了。
为了解决在狭小的机身中把动力从舵机传递到手臂,还要能实现动力双向传递的问题,他设计了一种独特的结构。
手臂前后的运动由一个舵机通过齿轮啮合进行传动,而另一个正交方向的运动,则由另一个舵机,通过 T 型推杆进行传动。
这机器人别看小,肚子里一点空间都没浪费,被稚晖君塞得满满的。真是强迫症的福音啊。
而机器人的底座则使用铝 CNC 进行加工。
下一步,就该到电路设计环节了。
稚晖君使用了 Cortex-M4 内核 MCU,STM32F4。用于驱动屏幕和控制舵机以及 USB 通信。
由于芯片本身的 USB 功能只支持全速或是低速的 USB,稚晖君在电路上添加了高速的 USB-PHY 芯片,成功将理论通信速率提高到了 400Mbps。而最后实际的最高通信速率也有 300Mbps。
这个速度远高于 UART、I^{2}C、SPI 等短总线。这也给后续的软件开发提供了更多可能性。
主控板的设计相对就比较简单了,两层 PCB 就搞定了。这样体积就做到了最小,和屏幕的面积保持了一致。
机器人的身体内部也有一个传感器的板子,包括一个摄像头,还有一个红外手势传感器。
还有一块驱动板。因为市面上的舵机只能接收 pwm 信号,进行角度控制。
这就有问题了。
在这种情况下我们只能发送指令,让舵机运动,却不能接收指令,从而知道它的运动状态。同时,想要让舵机进行反驱,就必须能让舵机随时进行输出力矩的切换。
传统舵机虽然做不到这一点,却难不倒心灵手巧智商高的稚晖君。他对市面上的传统 3g 舵机魔改了一通,设计了一个迷你的舵机驱动器。
这个小驱动器支持 I^{2}C 总线通信,PID 闭环控制,位置回传,还能设置最大的输出力矩,断电储存参数等等。
这样一来,原本 6 个普普通通的舵机,被稚晖君巧手一点,就成了 6 个热乎乎的智能舵机。
到这里,所有的硬件该有的都有了,也就该组装了。
看完稚晖君的组装过程,小编不得不感叹一句,谁说理工男是直男,只是他没对你细腻而已。
整个组装过程一般人真搞不定。
稚晖君给自己设计的小机器人起名叫 Electron(电子)。Electron 通过 USB 线和计算机相连,作为计算机的配件。
换句话说,机器人叫「电子」,那通过 USB 连接的计算机就是「电子」的「脑子」,简称...
「电脑」!?
如果只是将其当成一个播放器的话,这个机器人和之前提到的那些没有太大区别。
毕竟,稚晖君设计它的初心就是想把它作为一个工具机器人兼电脑配件,让其能发挥一些更加实用的功能。
他给电子开发了一套完整的、多层次的开放 SDK。
最上层是 Electron Studio,属于纯图形化的交互。
如果想用自己写的程序控制电子的话,稚晖君还提供了 Electron Player 库。只通过极其简单的代码,便可链接和控制机器人,还可以设置播放内容。
如果还想以更硬核的方式进行二次开发,稚晖君还提供了更底层的 Electron LowLevel 库。
对此,稚晖君还做了一个范例,通过调节机器人右手实现控制电脑音量和亮度。
利用机器人机身搭载的摄像头和红外手持传感器,开发了通过 AI 算法识别手势的程序。
当摆出不同手势类型,就可以打开预先设定好的程序,或者切换桌面。
最有意思的一个应用是,稚晖君基于 OpenPose 开发了一个程序,用于单目的人体关键点检测。
如果有 2 台机器人的话,就可以视频了,而且你还可以通过手势控制机器人运动。
稚晖君还给这个应用起了一个特别的名字「量子纠缠」。
最后,稚晖君还顺便给电子做了一个收纳盒,太精巧了。
代码开源
视频末,稚晖君附上了软硬件开源地址:
https://github.com/peng-zhihui/ElectronBot
此前他做的可以自动驾驶的自行车、机器臂等等,每个项目都会耗费很大精力,再加上稚晖君也有自己的本职工作。
网友:重新定义「软核」
重新定义「软核」
有网友希望下次稚晖君可以出一期「如何高效学习」的视频。
参考资料:
https://b23.tv/SYUguUw
End
崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!
内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍
扫码购买
好文和朋友一起看~