拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

把伊娃搬到桌面上,稚晖君开源机器人

把伊娃搬到桌面上,稚晖君开源机器人

由稚晖君开源的 ElectronBot。它不只是桌面摆件,而是一台能动的电脑配件。

ElectronBot 是一款桌面级小机器人,外观设计的灵感来源是《机器人总动员》WALL-E 里面的伊娃。它通过 USB 直连电脑,把圆形屏幕、USB 摄像头、六轴舵机、AI 识别全部塞进一个巴掌大的机身里,开源 5 天就在 GitHub 收获近 3000 Star,如今已积累约 9.5k Star,被 HelloGitHub 收录为第 72 期精选开源项目。

机器人具备6 个自由度,使用自己修改的特制舵机,支持关节角度回传。项目提供全套开发资料和配套 SDK 以供二次开发。硬件配置非常齐全,简单来说,ElectronBot 把"眼睛、嘴巴、表情、四肢"配齐了,算力则完全借力于你的电脑——这也是它敢叫"电脑配件"的原因。

01 技术架构:结构 + 电路双线设计

ElectronBot 的硬件分为结构和电路两条设计线,每条线都藏着不少巧思。

结构设计:3D 打印 + 巧妙的传动机构

结构件全部采用 3D 打印加工。因为包含齿轮等精密部件,作者推荐使用 HP 尼龙打印,传统 FDM 打印精度不太理想,光固化则存在支撑和强度问题。

手臂的驱动原理是整台机器最精妙的部分:pitch 方向运动很好理解,是齿轮传动;roll 方向则设计了一个T 型推杆,由 M2 螺丝帽和挡块限制,当黄色组件转动时带动推杆左右移动,将动力传递到转轴,力矩可以双向传递。

电路设计:四块板子各司其职

硬件电路一共四块板子,分工明确:

  • ElectronBot:头部主控板,集成主控 STM32F405RGT6、圆形屏幕 GC9A01、USB-HS 的 PHY 芯片 USB3300 以及 SD 卡

  • SensorBoard:肚子里的传感器板,包含手势传感器、USB-HUB 芯片、5 个 I2C 舵机接口、MPU6050 加速度计陀螺仪,USB 摄像头也连接到这块板

  • BaseConnector:底座上的 USB Type-C 插座,通过 8-Pin 的 FFC 柔性排线和 SensorBoard 连接——因为机器人本体需要旋转,所以特意用了柔性排线

  • ServoDrive:用于魔改舵机替换舵机驱动板的电路,通过 I2C 总线接口与 SensorBoard 及头部主控连接

值得提一下的是 USB-HUB 的拓扑,它用的是一拖四的 HUB 芯片,目前使用了三个口,还剩一个口——作者透露,其实可以再集成一个 USB 麦克风,这样 ElectronBot 也能当作电脑的麦克风使用,留给玩家一定的扩展空间。

三大核心能力

  • 运动交互:6 自由度运动 + 关节角度回传,动作精准可编程

  • USB 通信显示:USB 直连电脑,上位机实时驱动表情与画面

  • 开放编程:完整 SDK + 全部固件源码,支持 C/C++ 与 Unity 开发

02 硬件模块:从齿轮到舵机,处处是细节

手臂驱动:齿轮 + T 型推杆的组合拳

整台机器人 6 个自由度中,双手各有 roll 和 pitch 两个方向,加上颈部与腰部各一个自由度。pitch 方向用齿轮传动实现,roll 方向则依赖自研的 T 型推杆——一个 M2x25mm 半牙螺丝配合小挡块,就能把旋转运动转化为直线推拉,结构简洁还支持双向传力。

安装时要稍微注意,因为机身体积太极限,几个舵机的安装架需要剪短一边才能塞下;手臂推杆稍微打磨并加上润滑脂,推动会更顺畅。

舵机魔改:小成本实现角度回传

普通 RC 舵机用电位器测量绝对角度,ElectronBot 的魔改舵机在驱动板里用 ADC 读取电位器电压值换算成角度反馈,驱动芯片选用封装最小的 FM116B。整套舵机驱动方案可以在 GitHub 找到固件源码,支持 PID 闭环算法。

摄像头方面,作者选用了一款淘宝在售的 USB 摄像头,直接拆掉接线焊在 SensorBoard 上;大家当然也可以根据需求替换成黑白的、高帧率的,只要能够装下就可行。

舵机 I2C 协议:主-从机一问一答

魔改后的舵机通过 I2C 接口和控制板通信,STM32F4 主板为主机,舵机为从机。通信始终由主机发起:先下发位置、参数等指令,再即时取回数据,完成一个通信来回。

每个舵机作为从机接收两个地址的指令:自己的 ID 号以及 0 号广播。广播用于舵机刚烧写完固件、Flash 里还没存 ID 时的通配地址。这里有个坑需要提醒:舵机和主机上电要有先后顺序,必须等从机初始化完成再让主机发指令,否则总线阻塞会导致程序卡住——所以主机的固件代码里特意留了 2 秒延时,等舵机全部上电初始化完成再开始通信。

03 软件开发:SDK 四层架构 + AI 玩法

上位机 ElectronStudio:看得见的控制台

ElectronBot 的魅力一半在硬件,一半在软件。项目提供了视频里演示的上位机软件 ElectronStudio 的 Unity 工程源码——用鼠标拖拽就能让机器人做出各种动作、显示自定义表情,还可以加载图片和视频到圆形屏幕上播放,桌面机器人秒变第二块屏幕。

SDK 四层架构:从底层到应用层层开放

SDK 的库层级关系由下至上分别是:

  • ElectronBotSDK-LowLevel:底层通信库,封装 USB 协议

  • ElectronBotSDK-Player:动作与表情播放层

  • ElectronBotSDK-UnityBridge:C++ 与 Unity C# 的桥接层

  • ElectronStudio:上层应用,开箱即用的可视化控制台

固件工程是基于 STM32HAL 实现,作者提供了 .ioc 文件,可以自行用 STM32CubeMX 生成 Keil 或 STM32IDE 工程;作者本人则用 CLion 进行编译和下载,把 CLion 变成 STM32 的 IDE。

AI 玩法与开源生态

ElectronBot 最出圈的能力,是借力电脑算力实现各种 AI 识别:基于 OpenPose 的人体关键点检测、手势识别,都能让机器人"看懂"你的动作并实时反馈在表情上。

表情包动画系统也做得很讲究:每个表情包含"进入-循环-退出"三个片段,可以无缝衔接,方便用代码调用组合出无数种效果,社区里甚至有人把表情包做成了 Flappy Bird 之类的小游戏。

开源生态还在不断壮大:社区贡献了语音识别版 ElectronBot-Voice,让机器人开口说话;B站网友还做了胎教级的安装教程;仓库里也提供单独的 USB 通信功能测试工程和预编译文件,新手可以先烧录 hex 文件跑通最小系统,再逐步调试舵机。

04 写在最后

ElectronBot 最大的价值,在于它把玩具做成了教材:从 3D 打印结构件、魔改舵机、四块 PCB,到 STM32 固件、四层 SDK、Unity 上位机,再到 OpenPose 人体关键点检测——一条完整的"嵌入式 + 机器人 + AI"学习链路,全部开源,全部可循。

稚晖君用"软核"的思路证明了一件事:AI 交互不一定需要昂贵的硬件,把开放硬件和电脑算力组合起来,一样能做出有温度、有灵魂的作品。真正的动手乐趣,从来不在成品本身,而在于"自己把它造了出来"。

开源地址:github.com/peng-zhihui/ElectronBot

B站胎教级安装教程:bilibili.com/video/BV1sY4y1Y7t6

返回列表