融合RK3566与15电机:开源仿生鸭子的嵌入式Linux实战解析

发布时间:2026/9/6 13:54:29
融合RK3566与15电机:开源仿生鸭子的嵌入式Linux实战解析 我们直接开工。连续刷了几天各方平台上的嵌入式、机器人和开源硬件版块你大概率也已经刷到过那只“鸭子”了。GitHub 上热度挺高的小机器人项目外形做得确实讨巧一只黄澄澄走起路来带风的小鸭子但内里塞的东西却一点不含糊25cm 的小身板重量控制在 800g 以内主控用了瑞芯微 RK3566更夸张的是里面居然塞了整整 15 个电机。很多非嵌入式的朋友第一反应是“好可爱想给自家孩子整一个”而搞电子的朋友看到 BOM 清单的第一反应多半是“这哥们儿是怎么解决供电和散热问题的”。这项目我前后翻了代码仓库、设计文档和作者更新的多篇博客又把 RK3566 这块芯片的老底翻了一遍。它是瑞芯微相当经典的一颗 AIoT 旗舰芯片四核 A55 架构带 0.8 TOPS 算力的 NPU原生支持 MIPI-CSI、MIPI-DSI、千兆以太网、PCIe 2.1还有丰富的 PWM 和 UART。在嵌入式板卡圈里用 RK3566 做桌面级小型机器人主控目前已经算是性能非常宽裕的选择。你要知道一般做仿生机器人或者桌面级机器狗大家更多用的是 ESP32、STM32F4 这类 MCU能跑 Linux 并能直接部署轻量级 AI 模型的板级方案非常少。而这只鸭子把 Linux 开发和实时电机控制捏在了一起既给了充足的算力上限又保留了嵌入式底层开发到的“把硬件掰开揉碎”的体感。我花了两个晚上把仓库里分散的设计文档、驱动源码和作者的开发日志串起来读了一遍最直接的感受是这项目把“小型机器人开发”这件事的难度可视化、部件化、玩具化了。它不是一个单纯把玩件的教程而是一个能让你一口气接触 Linux 设备树、PWM 舵机控制、IMU 姿态解算、蓝牙配网、QT/LVGL 交互界面、甚至机器视觉识别套件的综合项目。如果你正想做点除了点灯、除了循迹小车之外真正足够“立体”的嵌入式项目这只鸭子可以说是一次密度很高的实战训练场。下面我把这套方案从硬件架构、选型逻辑到软件栈关键路径、再到我实测使用过程中踩到的坑和优化空间一条线全部拆开讲透。看了这一篇你基本就能判断这鸭子到底是玩具还是披着玩具外衣的“全栈嵌入式训练营”。1. 项目定位与为什么它会爆火1.1 一个“好看”的外壳和一个“硬核”的内核先聊点虚的。像这样的开源机器人项目其实每年都会冒出不少但大部分都很快淹没在仓库列表里原因不外乎两类要么是软硬件过于简陋做出来只能动一动视频拍完就吃灰要么是工程化程度太高需要五轴CNC加工、定制PCB、几百个SMD元件手工焊接普通玩家根本复刻不动。这只鸭子能刷屏核心在于它把“玩具颜值”和“工程难度”平衡得非常好整体结构是 3D 打印为主不需要开模主板和电机驱动板都有公开的工程文件但即使你完全用自己的开发板方案也能凑出差不多的效果。外形上它是一个压低重心、短腿短翅膀的流线型鸭子造型25cm 高度、800g 以内的重量是典型的桌面级尺寸。这个体积和重量其实是有讲究的。我在之前做机械臂项目的时候验证过一个很基础的物理逻辑机器人本体的重量和惯量直接决定了关节电机的扭矩需求。如果整体超过 1kg你需要的舵机/电机扭矩就要往上一个级别成本和对结构刚性的要求会明显增加。800g 以下意味着大多数标准 9g 舵机、小型步进或直流减速电机都在可用范围替换方案非常多。作者在文档里特意提到這个鸭子重心偏低腿部使用了关节式腿部结构配合 15 个电机来实现脚掌、脚踝、翅膀、头部、尾巴的多自由度运动。15 个电机听起来很唬人但实际上是把“冗余自由度”和“表情动作”分配得比较宽裕。比如行走其实只需要每条腿 2-3 个自由度但为了让鸭子走路时能摇摆出“鸭子味”作者额外做了脚踝横滚、翅膀上举和后摆等动作这些都需要独立电机去驱动。1.2 为什么是RK3566而不是树莓派或者MCU在这个项目里主控选型是很多人争议的焦点。有人问鸭子的动作这么简单用 STM32 就够了为什么非得上 RK3566 这种“小电脑”作者的答复其实点出了一个很重要的趋势现在的桌面级机器人单一 MCU 已经撑不起完整的产品体验了。我们需要看看这鸭子除了走路还会做什么仓库里的功能清单包括实时姿态解算与平衡控制、基于摄像头的人脸/物体识别跟随、语音交互麦克风阵列 扬声器、手机 App 蓝牙配网与遥控、炫酷的 LCD 屏幕表情与灯光效果。这些功能如果要跑流畅MCU 会非常吃力。比如人脸识别和简单的物体检测模型即便用带 NPU 的 MCU——比如瑞萨 RA8 系列或恩智浦 i.MX RT1170——部署起来也非常局促而 RK3566 的 0.8TOPS NPU 加上四核 A55跑一个轻量化的 MobileNet SSD 或者 YOLO-fastest 完全是余量很大的事。第二个原因是开发效率。RK3566 能跑完整的嵌入式 Linux这就意味着你可以用标准的 C/C、Python、甚至 Rust 去写控制逻辑可以像调试服务器程序一样用 gdb 调试机器人进程可以用 systemd 管理开机自启可以用 familiar 的 SSH 工具链去远程撸代码。相比之下MCU 的开发、烧录、调试链路在很多初学者手里就是一道巨大的坎。用 RK3566 大幅降低了“让机器人完整跑起来”的工程门槛。但这里不是没有代价。RK3566 的功耗比典型 MCU 高很多作者实测满载功耗大概在 4-6W 左右对于电池供电的移动机器人来说续航和电源管理是很让人头疼的事情。这也是为什么作者最终采用了“主控板 独立电机驱动板”的双板架构RK3566 核心系统和电机功率系统在电气上完全隔离信号线只用串口或 I2C 连接这样即使电机瞬间大电流拉低电池电压主控也不容易掉电死机。我觉得这段选型博弈是整个项目里最有学习价值的地方。它不是一个“因为性能强所以选它”的拍脑袋决策而是一个反复权衡功耗、体积、算力、生态后的结果。2. 硬件架构拆解15个电机到底怎么分布2.1 电机布局与自由度分配拿到原理图和结构文件后我第一件事就是数电机。数完之后说实话我是服气的。这个 15 个电机的分配相当“豪华”完全是把桌面机器人当高配玩具在做两条腿合计 10 个电机每条腿 5 个自由度分别是髋关节横滚、髋关节俯仰、膝关节俯仰、踝关节俯仰、踝关节横滚。这个自由度配置已经接近小型四足或双足机器人的主流方案了比大部分仅支持左右转弯的玩具机器人高了不是一星半点。然后是翅膀左右各 1 个电机共 2 个负责翅膀的上举、下摆和快速煽动动作这部分是鸭子神态的灵魂靠身体左右扭动和腿部走路制造不了那种“扑棱”感。尾巴 1 个电机用来做尾羽的上下摆动和左右摇摆这个细节对整体动作的自然感影响非常大。头部 1 个电机负责左右转头脖子 1 个电机负责上下点头。这样加总10211115完全对上了。从结构图看作者对电机类型的选择也很讲究腿部关节用了带金属齿轮的微型串行总线舵机具体型号涉及 BOM 细节但基本上在 15-25kg/cm 级别这种舵机可以直接串联供电和通信极大地减少了线束复杂度翅膀和尾巴则用了重量更轻、动作更快的微型舵机降低了末端惯量。2.2 电源树和功耗预算分析这里我挑最容易被新手忽略的“电源设计”说。因为整机只有 800g 的总重量意味着电池被压缩在一种很极端的“瘦长”形态里。作者给的是一个标称 7.4V 的两节 18650 锂电池方案总容量大约 1800-2200mAh。这个容量说实话不大但考虑到在纯站立待机时只有主控板和部分待机电机耗电整体续航基本能维持在 1.5-2 小时左右。如果进行大幅度反复行走和翅膀煽动续航会掉到 40 分钟上下。我们做个简单计算。15 个电机中有相当一部分是空闲的但如果同时有 6-8 个舵机高负载运行单个舵机堵转电流在 800mA-1A 是很正常的瞬时总功率直奔 40-60W。而 RK3566 核心板满载也不过 5W 左右加上摄像头、屏幕、IMU 等外设整个系统瞬时功耗上限接近 65W。这就反过来推导了对电池放电能力的要求7.4V 下要扛住接近 8A 的瞬时电流普通 18650 电芯如果不选高倍率型号很容易在瞬间大电流下电压骤降触发主控欠压复位。作者的解决办法在电源树里体现得很明显电池直接经大电流开关和稳压到舵机电源轨然后通过一个独立 DC-DC 降到 5V再给 Raspberry Pi Compute Module 风格的核心板供电舵机供电轨和逻辑供电轨完全独立共地但分路在电池端并联一个大容量聚合物电容用于吸收舵机瞬态电流尖峰。这个设计思路是做电池供电机器人最基本也最重要的一课别为图省事把动力电源和逻辑电源并在一起否则你会发现舵机一动作Linux 就重启了。我当年做四足机器人时踩过类似的坑当时是两路直流电机一启动STM32 直接掉电排查了一整天才发现是电源轨共地但共阻抗太大瞬间地上被拉出高电平毛刺触发了复位引脚。这个鸭子项目里的“分路 大电容”是标准解法值得直接抄。2.3 为什么不用更高级的伺服电机一个很实际的考量是成本。用绝对式编码器、大力矩的智能伺服比如某些高端机器人常用的关节模组单个就要几百上千元15 个电机光成本就上万。这个项目明显是要做“可复制、低成本、社区化”的开源作品所以作者选了微型总线舵机这种相对便宜、但性能满足基本需求的方案。微型总线舵机的好处是串行总线控制只需两根线信号 地就能串联几十个舵机避免了传统 PWM 舵机需要几十路独立 PWM 通道的麻烦内置反馈角度、电压、温度可以做简单的闭环保护模块化坏了直接替换不需要拆整个关节。代价是精度和响应速度有限。对鸭子这种动作频率不高、负载轻的应用场景完全够用。我特意在虚拟原型上做过关节扭矩估算鸭子整机 800g 左右腿部舵机承受的主要是支撑力矩髋关节和膝关节的最大需求扭矩大约在 10-15kg/cm 范围15-25kg/cm 的舵机有接近 40%-70% 的余量。注意这里没有算动态冲击载荷——比如跳跃、快速降落一旦快速下落动载可能翻到 2-3 倍所以实际选型留了余量是必须的。这让我想起有人提问“机械臂电机扭矩怎么算”其实基础公式就是 T m * g * L质量×重力加速度×质心到关节距离再乘上安全系数。放在鸭子的腿上每条腿承担大约 400g 重量重心到髋关节的水平距离大概是 5-6cm算下来扭矩大约 0.4kg×9.8×0.06m ≈ 0.24Nm也就是大约 2.4kg/cm。但这个数值是静态的实际动作时由于惯性、加速、姿态变化动态扭矩会远高于静载。所以 15-25kg/cm 的实际选型不算疯狂而是对动载和材料安全系数综合考虑后的结果。3. 软件栈路径从 Linux 到 15 路舵机协同控制3.1 嵌入式 Linux 环境搭建RK3566 的软件开发方式和传统 MCU 有很大不同。首先你得有一个完整的 SDK通常包括 U-Boot、内核、根文件系统以及交叉编译工具链。这个项目作者并没有从零移植 BSP而是直接基于瑞芯微官方的 RK3566 Linux SDK 做裁剪然后在设备树里加入自己板子的外设节点舵机控制串口、IMU 的 I2C 总线、摄像头 MIPI-CSI 接口、音频 I2S 等。如果你之前只接触过单片机开发第一次构建嵌入式 Linux 系统可能会觉得有些突兀。一个比较顺滑的上手路径是先拿到厂家或社区发布的 RK3566 官方镜像原厂 SDK直接在开发板上启动确认基础系统可用然后用menuconfig或 diff 配置修改内核打开你需要但默认未启用得驱动修改设备树dts/dtsi配置外设引脚复用、时钟、中断重新编译内核和 dtb打包进启动分区启动后用 /proc/device-tree 或 debugfs 验证设备树是否正确加载。这套流程如果没做过第一次很容易卡死在“改完设备树不生效”这种问题上。我常用的排查方法是在 U-Boot 阶段把 bootargs 设成earlycon把 console 输出到串口多看内核启动日志。只要驱动 probe 失败日志里多半会打印原因比如 gpio 冲突、中断号错误、电源域没使能等。3.2 舵机控制链路串口、总线舵机与动作编排在这个项目里RK3566 和舵机驱动板之间的通信用的是串口/UART驱动板再通过总线协议去控制每一个舵机。这里 RK3566 的 Linux 用户空间程序把“动作指令”打包成帧发给底层的舵机控制板。有一点需要注意RK3566 上跑的是 Linux是分时操作系统对舵机控制这种需要微秒级稳定性的任务来说直接在 Linux 用户态发串口指令是“凑合能用但不够稳”。如果鸭子要做实时性要求特别高的动态步态就需要把控制频率提高到 100Hz-200Hz此时 Linux 调度的抖动会明显影响步态质量。作者在软件架构里做了一个很值得我们学习的“实时性妥协”设计主控不直接控每一个舵机的微调而是下发“关键帧姿态”和“动作序列”底层的 STM32/专用驱动板在在实时循环中做插值和 PID 闭环。也就是说把硬实时和软实时分开Linux 负责高层逻辑、视觉、人机交互MCU 板负责 100-500Hz 的实时关节闭环。这个控制架构其实也是当前足式机器人行业产品级方案的主流做法。很多人一提到机器人控制就以为整个系统都必须跑在实时操作系统上实际上大部分产品是“Linux 大脑 RTOS 小脑”的配合形态这个鸭子项目在这一点上的架构选择非常成熟如果你写了一段时间的单片机想切入嵌入式 Linux 机器人开发这套“双芯片”思路是必须掌握的。3.3 动作与步态如何让鸭子走得“有灵魂”很多人觉得步态算法是机器人项目里最难的部分。其实在鸭子身上作者用了相对温和的方案预规划的周期步态 基于 IMU 的姿态稳定修正。由于鸭子的腿比较短、重心低行走速度不需要很快所以不需要像波士顿动力那样做复杂模型预测控制而是离线设计若干组“步态关键帧”比如抬脚高度、跨步长度、身体倾斜角度运行时通过腿部的逆运动学IK实时计算每个关节的角度IMU 检测到身体倾斜后用简化的 PID 修正髋关节和踝关节角度维持平衡。关键帧 逆运动学 姿态反馈修正这是一个非常经典的足式机器人控制套路。如果你看过很多网上机器狗的视频会发现很多开源项目就是这套思路。你把步态参数调一调比如步幅、频率、抬腿高度就能走出不同风格鸭子风格摇摇摆摆、小狗风格轻快碎步、小马风格高抬腿慢步。作者还在代码里内置了一个动作编辑器可以直接在 PC 端可视化地调整每个关节的角度录制动作序列然后导出一段“动作脚本”比如摇尾巴、煽翅膀、低头、转体。这是在真实场景里开发表情动作最高效的方式比手写每个角度值要直观太多。如果以后你想做自己的交互机器人这一步几乎是必备工具。3.4 上层应用LVGL、视觉和语音这只鸭子不只是“能动”它还有一块屏幕用来做表情和状态显示。根据 BOM 信息作者用的是小尺寸 MIPI-DSI 或 SPI 接口的屏幕UI 层用的应该是 LVGL——一个在嵌入式圈子里知名度极高的图形库特别适合 RK3566 这类有 GPU 但性能不算强的平台。LVGL 支持中文字体、动画、控件做一个小鸭子的眼睛表情、电量显示、Wi-Fi 状态图标等非常轻松。视觉部分是这个项目的加分项。RK3566 的 NPU 可以跑通瑞芯微的 RKNN 工具链把训练好的模型转换成 RKNN 格式部署到设备上。作者在仓库里提供了一个简单的物体检测示例用于让鸭子“看见”人脸或小球并转头追踪。这里我补充一下RKNN 工具链对 TensorFlow、PyTorch、ONNX 模型都有转换支持但转换过程中经常遇到算子兼容问题例如某些上采样层、自定义激活函数跑不通。解决思路是改写模型结构替换为 RKNN 支持的算子或者用瑞芯微模型动物园里自带的基础模型。再一个是语音交互模块。RK3566 虽然没有专门的 DSP但四核 A55 跑一个轻量级的唤醒词引擎比如 sherpa-onnx 这类推理框架或者作者可能直接用了带离线的唤醒库还是勉强可以的。加上麦克风阵列之后鸭子可以对“小鸭小鸭”这类关键词做出响应然后进行简单的语音指令识别向左转、跳舞、唱歌。这部分做成产品级稳定性很难但在开源项目里作为“能力演示”是非常加分的。4. 我的实操复刻体验与问题排查4.1 3D 打印与结构件装配注意事项整个鸭子外壳和结构件几乎都是 3D 打印的。作者公开了 STL 文件和装配说明理论上家里有台 FDM 打印机就能打出来。但有几个细节我要提醒大家材料方面建议腿部关节和连接件使用 PETG 或 ABS/ASA强度高且韧性好纯 PLA 打印的腿部结构容易在长时间受力后变形或开裂。打印层高建议 0.2mm 以下壁厚和填充率要根据受力情况适当提高——腿部和髋关节连接件我建议至少 4 层墙、40% 填充鸭子的轻量翅膀和外壳件则可以降低到 2-3 层墙、15%-20% 填充以减重。作者给出的整机重量 800g 是在材料和填充率经过多轮迭代后得到的。如果你全用高填充率打印重量很容易直接冲到 1kg 以上续航和关节负载都会变差。装配时尤其注意舵机线束的理线。15 个舵机的线如果走不好会在关节运动时被反复弯折和夹断。这个项目作者用了贯穿式线槽结构把线束集中到身体中央的走线通道再通过尾部或底部引出到主控板。复刻的时候建议在线束经过关节的位置处多缠一层热缩管或编织网预留活动余量别绷得太紧。4.2 上电调试的常见问题我在用相似硬件配置复刻的部分功能时遇到过几个比较典型的坑写出来给大家做参考第一个是舵机抖动或不受控。通常是总线舵机的波特率、ID、协议格式不匹配或者是舵机供电不稳。排查方法很简单先单独给一个舵机供电和发送指令确认硬件正常再逐步串起其他舵机并且在舵机电源端并联一个大电容。我建议至少在电池端并联 1000µF/25V 聚合物电容在舵机供电入口处再并联一个 470µF 电容和多个 0.1µF 陶瓷电容退耦。第二个是 Linux 系统启动后找不到 I2C 陀螺仪/IMU 设备。这个问题八成出在设备树里 I2C 引脚复用冲突或者 I2C 地址不对。排查方式是用i2cdetect -y bus扫描挂载设备看是否有 ACK 回应。如果扫描不到先检查硬件接线、供电和上拉电阻再用示波器或逻辑分析仪看 I2C 总线波形。第三个是摄像头预览颜色偏色或帧率极低。RK3566 平台摄像头的摄像头驱动有非常强的 ISP 链路依赖比如 sensor 的上电时序、时钟频率、MIPI lane 数、分辨率匹配。如果你换了一个型号的摄像头模组就需要重新适配设备树里 camera 节点参数包括 sensor 型号、reg 地址、时钟频率、lane 数、分辨率。否则很容易出现花屏、偏色、无法出图。作者仓库里应该适配好了 OEM 模组但如果自己换镜头这里就要折腾一会儿。第四个问题Wi-Fi/BT 天线信号弱。RK3566 核心板通常板载 Wi-Fi/BT 模组但天线设计非常影响性能。如果在调试时需要远程 SSH建议使用 USB 有线网卡或者通过 USB Type-C 转千兆网口来保证稳定连接。调试机器人时稳定的通信链路真的很关键。总断线非常影响心情排查问题的时候也会很痛苦。4.3 续航与发热的实测心得我拿类似的核心板和电池方案做过测试。RK3566 在高负载——比如同时跑视觉推理和动作控制——时核心板芯片表面温度能达到 60-75°C如果装在完全密闭的塑料腔体里不加散热片温度还会更高。这个鸭子的外壳上没有太多主动散热孔所以作者在主控板上加了一块小型铝散热片再配合外壳的通风设计才把温度压在可接受范围内。实际续航上如果只是站立、表情切换、偶尔动动翅膀2 小时问题不大如果一直行走和视觉跟随电池掉电速度会让人焦虑。一个优化思路是把 CPU 调成performance或schedutil模式的动态调频并把不必要的后台服务关掉。RK3566 在低负载时可以通过调低 CPU 频率显著省电。另外如果下一步想扩展续航可以考虑换用更大容量但依然维持同等重量预算的电池形态比如单节高倍率 21700 电芯或者可更换电池托架设计。4.4 常见问题速查表这里我做了一张基于实操经验的排查速查表基本涵盖了初学者最容易碰到的几类故障现象可能原因排查方法舵机抖动、不动供电不足、总线协议/波特率不匹配分开供电用小电流单独测舵机检查 ID 和波特率舵机驱动板与主控通信失败串口波特率错、接线松动、地电位差用串口助手监听输出确认 TX/RX 是否交叉Linux 开机后一直重启电池电压跌落 / 电源轨互扰检查电池是否高倍率确认动力轨与逻辑轨独立IMU 检测数据异常跳变电机干扰、供电纹波、接触不良在 IMU 供电处加电容线路远离电机动力线视觉识别掉帧严重NPU 负荷高、摄像头带宽不足、ISP 设置差降低分辨率、关闭多余进程、检查 MIPI lane 配置Wi-Fi 频繁断连天线位置被金属遮挡、电源纹波大引出天线到外壳外侧加电容滤波3D 打印件在关节处断裂填充率不足、层间粘合差更换 PETG/ABS提高墙数和填充率调整打印方向走路由现卡顿/滑步步态参数与舵机速度不匹配、地面摩擦不同降低步幅和步频调整抬腿高度或更换脚掌材料这个表实际上适用于绝大多数小型多关节机器人项目。无论你做的是一只鸭子、一只机器狗还是一个小型机械臂排查思路基本一致先电源、再通信、再结构、最后才是算法。5. 这个项目的真正价值与可能的扩展方向如果只是把这只鸭子看作一个“炫技开源玩具”那确实有些浪费。它身上其实浓缩了一个现代桌面级机器人应该有的完整技术链条结构设计、电机选型、电源管理、嵌入式 Linux、实时控制、姿态解算、上层 AI、无线交互。对一个想系统学习嵌入式 Linux 和机器人开发的人来说这简直是一块密度极高的敲门砖。有人问“嵌入式学习路线怎么走最合理”如果以这个鸭子为练手项目其实天然就给了一条路线先复刻硬件结构和电路学舵机控制和电源设计再在 RK3566 上搭建 Linux 环境学设备树、驱动、串口通信然后跑动作编辑器和步态算法学逆运动学和姿态反馈最后接入屏幕 UI 和视觉模型学 LVGL 和 RKNN 工具链。每一步的代码和文档都现成你不只是看理论而是能在真实硬件上验证结果。从扩展方向来看我觉得比较有潜力的几个方向是加入深度相机比如 D435i 或 OAK-D做三维空间感知、物体抓取和避障不需要改变机械结构只需要增加一个 USB 相机和对应的 ROS/RKNN 节点。把步态控制算法从“关键帧 IK”升级为“基于强化学习”的端到端策略。RK3566 的算力跑在线强化学习很吃力但可以跑预先训练好的 RNN 策略进行推理把推理结果转成关节空间控制指令。这种方式在学术和产业界都是目前非常前沿的方向。作为鸿蒙或 Android 系统的外设机器人。如果你对上层应用更感兴趣可以把鸭子作为一个“伴侣机器人”的硬件本体用串口或 BLE 连接手机/平板把更多计算和交互放到终端设备上鸭子只做硬件执行单元。增加语音叙事、情感检测、儿童编程教育属性。因为鸭子的外形非常有亲和力完全可以做成编程教育硬件——通过图形化编程界面让小朋友拖拽“前进、转身、挥翅膀、说话”积木块底层自动转换成动作脚本。这些方向不需要推翻原有设计更多是在软件栈上做加法。这也是开源硬件项目最有魅力的地方你拿到的不只是一个能动的鸭子而是一个可以继续往任意方向生长的平台。最后聊几句我个人在把玩整个过程后的体会。做机器人最爽也最折磨的地方就是每一层你都能找到活干眼看着结构件打印出来、舵机线一根根接上、Linux 系统在板子上跑起来、动作编辑器里鸭子摆出一个歪头杀、摄像头识别到人脸然后脖子跟着转过去。这种感觉不是纯软件能带给你的。如果你想重新找回写代码的成就感同时又不排斥碰烙铁和螺丝刀这个项目值得你花上一个周末从头到尾折腾一遍。