← 返回文章库

一台能自己 3D 打印出来的开源双足机器人:Qmini 拆解

最后更新 2026-08-23
⏱ 约 15 分钟 🟡 涉接线/强电
你将学到
  • 逐类核对 Qmini 到底开源了哪些资料,理解「机械结构也开源」和「只开源代码」的本质差别
  • 从 URDF 网格文件名反推一条腿的运动链,看清一台双足机器人由哪几块构成
  • 明白复刻一台双足机器人的真实难点在哪:打印件强度、电机、装配后的标定,以及仿真在其中的位置

看过人形机器人跑跳的视频之后,很多人心里会冒出同一个念头:这东西我能不能自己做一台?

然后这个念头通常在十分钟内就熄灭了。工业级人形机器人是个完全封闭的东西——你买不到它的结构件图纸,不知道它的关节里装了什么,连它的控制器跑在什么系统上都要靠猜。就算你有全套加工设备,你也不知道该加工什么。「开源机器人」这个词你见过很多次,但绝大多数时候,开源的只是代码:控制算法给你,仿真环境给你,机械结构是黑箱。 代码你能读,机器你造不出来。

Qmini 是个例外,值得单独拆一篇。

先把这篇文章的边界说清楚:下面所有内容都来自公开仓库的 README、文档索引和文件树,我没有真的打印和组装过一台 Qmini。 凡是涉及「做出来是什么效果」的地方,我只转述仓库文档里写了的,不替你做承诺。这篇的价值不在于替你走一遍流程,而在于把「复刻这件事的完整图景」摆出来,让你在动手之前判断自己该不该动手。

一、逐条核对:它到底开源了什么

README 里把开源内容分成了三类,我们照着这个分类一条条对,同时对照仓库的文件树看它是不是真的放出来了。

硬件这一类,README 列了三样:完整的物料清单(BOM)、电气系统框图、以及 DIY 说明文档。文件树里对应的是根目录那份 Qmini_DIY.pdf

机械结构这一类是关键。README 给的是全部机械零件的 STEP 文件,加上装配 SOP(标准作业程序)。文件树里:

STEP_file/Qmini_v1_0.STEP.zip
STEP_file/Qmini_v2_0.STEP.zip

软件这一类,README 给了 URDF 模型,以及指向核心软件栈的链接——那个软件栈叫 RoboTamer4Qmini,托管在另一个组织的仓库下,不在宇树自己的仓库里。文件树里 URDF 部分是这样:

urdf/Qmini.urdf
urdf/meshes/base_link.STL
urdf/meshes/LL_hip_yaw.STL     urdf/meshes/RL_hip_yaw.STL
urdf/meshes/LL_hip_roll.STL    urdf/meshes/RL_hip_roll.STL
urdf/meshes/LL_hip_pitch.STL   urdf/meshes/RL_hip_pitch.STL
urdf/meshes/LL_knee.STL        urdf/meshes/RL_knee.STL
urdf/meshes/LL_ankle.STL       urdf/meshes/RL_ankle.STL

对完这三类,再回头看那个「开源」的分量就不一样了。

STEP 是三维实体模型的通用交换格式,能被主流 CAD 软件打开、测量、修改。给出 STEP 意味着每一个零件的形状、每一个孔位、每一处配合面,你都能量出来。这跟「给你一张渲染图和一段控制代码」是两个世界。加上 BOM 和电气框图,采购清单和接线关系也不用猜。再加上装配 SOP,连「先装哪个后装哪个」这种只有做过一遍才知道的顺序信息,也一起给了。

这里有个细节值得停一秒:STEP 文件有 v1_0v2_0 两个版本。机械设计有过迭代,这很正常,但对复刻者来说这是个必须先解决的问题——你手上的 BOM、装配 SOP、URDF,分别对应哪一版结构? 版本对不上,孔位差几毫米,装配时才发现就晚了。这类问题在纯软件项目里叫「版本兼容」,在硬件里叫「打印了一堆废件」。动手之前先把版本对应关系确认清楚,这是我看到这两个压缩包时的第一反应。

二、乐高式模块化,为什么对 DIY 者是刚需

README 里对组装方式的描述是「模块化、乐高式」,意思是整机被拆成若干可独立组装的模块,而不是一个必须一口气装完的整体。

这句话听起来像营销词,但对自己动手的人来说,它实实在在地改变三件事。

第一,你可以分批推进。 硬件项目最容易死在「所有零件到齐之前什么都做不了」上。模块化意味着你可以先打印、装配、点亮其中一条腿,把这一段的电气和通信跑通,再去做下一块。每个模块都是一个可以完成、可以验证的小目标,中途放弃的概率会低很多。

第二,坏了能单独换。 双足机器人在调试期一定会摔。这不是可能性问题,是必然——步态没调好就会摔,限位设错了会摔,标定偏了也会摔。摔坏的通常是某个受力集中的结构件。模块化 + 3D 打印意味着你重新打一个换上去就行,不用把整台拆散。

第三,改造成本低。 README 里提到,运动部分之外,颈部还留了一个电机位,专门给使用者做自定义扩展。这个设计意图很明确:它不假设你只想复刻,它假设你会想在上面加点自己的东西。

模块化对量产厂商的意义是产线效率,对 DIY 者的意义完全不同——它决定了这个项目对你来说是「一个可以断断续续做几个月的爱好」还是「一次必须成功的豪赌」

三、拆开看:一台双足机器人由哪几块构成

如果你还没搭过机器人,可以把 Qmini 当成一个标本,看清一台双足机器人的构成。这几块的划分是通用的,换成别的机器人也一样成立。

结构件:3D 打印的骨架

urdf/meshes/ 那组文件名,可以直接把腿的运动链读出来。以 base_link 为根,往下分成左右两条支链(LL_RL_ 前缀),每条支链上的连杆依次命名为 hip_yawhip_rollhip_pitchkneeankle

这组命名本身就是一份教材。髋部被拆成了三个不同方向的名字:yaw 是绕竖直轴转(腿往外撇、往内收的旋转),roll 是侧向摆(左右张腿),pitch 是前后摆(迈步)。膝和踝各自再接一段。双足行走之所以难,一个直接原因就是髋部这三个方向必须协同——你要同时管住身体朝向、左右平衡和前进迈步,而这三件事共用同一段结构。想深入理解这里的力学,可以看足式机器人步态基础那篇。

(严格说,网格文件名反映的是连杆的划分方式,真正的关节定义、轴向和限位以 Qmini.urdf 里的内容为准。看模型不要只看 mesh 名字。)

这些连杆全部可以 3D 打印,README 里的说法是整套机械结构基本不需要定制机加工。

关节电机:整套东西的心脏

结构件是骨头,电机是关节。README 里写的是采用宇树的 8010 电机,其中大部分驱动腿部的运动系统,另有一个位于颈部作为扩展预留。

关于电机,这篇不展开它的内部原理,足式机器人的关节执行器那篇讲得更细。这里只强调一件事:在整个项目里,电机是唯一你既没法自己做、也没法用便宜方案替代的部分。 结构件可以打印,线材螺丝随处能买,控制板有多种选择,只有关节电机是一个高度集成的成品——电机本体、减速、驱动电路、位置反馈、通信协议全在里面。

电池、控制板与传感器

README 里说电池用标准电池组,控制板方面给出的默认参考是 Raspberry Pi 4 Model B,同时明确说明平台支持多种低成本控制板,使用者可以按自己的需求换别的控制器。

这个「给一个参考、但不锁死」的表述,对 DIY 项目来说是个善意的设计。参考配置的意义在于降低第一次尝试的决策成本——你不用在开始之前先做一轮选型调研。但它同时留了口子,你想换成算力更强的板子跑自己的模型,仓库并没有拦着你。

传感器方面,README 没有逐项列出清单,具体配置以 BOM 和电气框图为准,我不做推断。但从控制的角度可以说清角色分工:机器人要走路,至少需要知道自己的姿态(身体是不是歪了、歪了多少)和每个关节当前在哪儿。后者由电机自带的反馈提供,前者靠惯性测量单元。这两类信息汇合起来,才谈得上闭环控制。这套「状态怎么估出来」的逻辑,在足式机器人的状态估计里有系统的展开。

四、复刻这件事的真实图景

前面都是「有什么」,这一节讲「难在哪」。这是我认为这篇最该写清楚的部分。

打印件:受力件和非受力件要分开对待

整机可打印,不等于随便一台打印机随便打一下就能用。3D 打印件的强度受材料、层厚、填充率、走线方向影响很大,而且打印件有明显的各向异性——沿层间方向受拉时最容易分层开裂

所以复刻时最该先想清楚的问题是:这个零件受不受力,受什么力。

  • 髋部、膝部这类直接承担整机重量和冲击的连杆,是受力件。它们要扛住机器人落地时的冲击,还要扛住摔倒时的意外载荷。
  • 外壳、装饰件、走线固定这类零件是非受力件,打印参数上可以宽松很多。

这个区分会直接决定你的打印策略:受力件需要更高的填充率、更合适的摆放方向(让主要受力方向不沿层间)、可能还需要更结实的材料。非受力件按常规参数打就行,省时间省料。

另一个容易被低估的是精度对装配的影响。机器人零件之间有大量配合面:轴承位、电机安装面、螺丝孔。打印件的尺寸偏差和收缩会让这些配合或紧或松。紧了装不进去,松了会带来旷量——而旷量在关节上会被放大成末端的晃动,直接影响控制效果。所以真正动手前,先用几个小件试打、量尺寸、校准你的打印机,这一步省不掉。

电机:贵,且无可替代

上一节说过了,这里补一句工程判断:在做任何采购决定之前,先想清楚电机这一项。 因为其余所有东西的选择空间都比它大得多。结构件打废了可以重打,控制板选错了可以换,电机是这个项目里最没有退路的一环。

装配之后,工作才开始一半

很多人以为拧完最后一颗螺丝就算完成了。恰恰相反,那时候你手上是一具还不会动的骨架。

宇树的 unitree_actuator_sdk 仓库里能看到这一步大概要做些什么。它的示例目录长这样:

example/changeID.cpp
example/example_a1_motor.cpp
example/example_a1_motor_output.cpp
example/example_b1_motor.cpp
example/example_goM8010_6_motor.cpp
python/example_a1_motor.py
python/example_b1_motor.py
python/example_goM8010_6_motor.py

除了各型号的驱动示例,单独有一个 changeID.cpp。仓库里还带了一套命令行工具,按 arm32 / arm64 / x86_64 三种架构各编了一份,其中一个可执行文件就叫 changeid

为什么改 ID 这件事重要到要给它一个独立示例和一个独立工具?include/ 就明白了:里面有 serialPort/(串口)和 crc/(校验)。这是一条串行总线,多个电机挂在同一条线上,靠地址区分彼此。所以每个电机在装到机器人身上之前,必须先被单独设置一个唯一 ID,而且这个 ID 要和你软件里的关节编号对得上。装完再发现两个电机 ID 冲突,你得把它们拆出来重新设。

这类「装配前必须做的一次性配置」,在软件项目里没有对应物,是硬件独有的坑。除了 ID,还有零位标定(机器人怎么知道「腿是直的」对应电机的哪个角度)和限位确认(哪个角度以后再转就会撞到自己的结构件)。零位标定错了,机器人一上电就会往一个诡异的姿势里冲;限位没设,第一次失控就会把打印件顶裂。

unitree_actuator_sdk 的 README 里还提到一个特别容易踩的细节:示例代码里给的指令值是转子侧的,而我们平常算出来的控制量是输出侧的,两者之间要按减速比换算——README 给出的关系是,输出侧的 kp、kd 换算到转子侧要除以减速比的平方。README 还特别注明,某些型号在此基础上另有两个额外系数属于该型号专有,换别的电机就不需要考虑。

这个细节我特意拎出来,是因为它是个沉默的错误:你不会收到任何报错,代码跑得好好的,只是刚度和阻尼差了一个数量级——表现出来就是「怎么调都软绵绵的」或者「一上电就剧烈抖动」。查这种问题能查很久。

顺带说一句,那份 README 里的示例都是用 sudo 运行的,串口设备的权限问题会是你遇到的第一个小坎。

(电机型号命名上有一点需要注意:unitree_actuator_sdk 的 README 列出的支持型号里出现的是 GO-M8010-6A1B1,而 Qmini 的 README 写的是 8010 电机。两处命名之间的确切对应关系,仓库文档里没有明说,真要动手采购和写代码,以官方文档和实物为准,别照着我这段推断。)

仿真:在拧螺丝之前就能开始

这是我觉得整套开源资料里最被低估的一项价值:URDF 已经给了,意味着控制逻辑的验证不必等到硬件装好。

对硬件项目来说,这件事的意义很大。真机调试的每一次失误都有物理代价——摔一次可能就是一个断掉的连杆加半天的重打印时间。而在仿真里,你可以把参数调到离谱、把机器人摔一百次,代价只是重新点一下运行。

这里也要说清一个现实约束,不要想当然。宇树官方的 unitree_mujoco 仿真器,unitree_robots 目录下放的是 MJCF 描述文件,配置文件 config.yaml 里可选的机器人名字是 go2、b2、b2w、h1 这几个,名单里并没有 Qmini。也就是说,想把 Qmini 放进那套官方仿真环境,模型转换和场景配置这一步需要你自己完成,仓库没有替你准备好。而 Qmini 自己指向的核心软件栈是另一个独立项目,它的仿真怎么跑,要去看那个项目自己的文档。

关于这套官方仿真器的结构和它「低层控制 + sim to real 验证」的定位,unitree_mujoco 仿真环境那篇有完整拆解,这里不重复。

五、想做这件事,你需要先具备什么

老实讲,双足机器人不适合作为第一个硬件项目。这不是劝退,是想让你少走弯路。列一下它实际需要的能力:

  • 3D 打印经验:不是「打印过手办」的那种,而是知道怎么校准打印机、怎么根据受力选摆放方向和填充、遇到翘边和层间开裂知道调什么。
  • 基本机械装配能力:会用扭矩合适的手法拧螺丝、知道轴承怎么压、明白预紧和旷量的区别、有基本的走线和固定意识。
  • Linux 基础:编译、装依赖、处理串口权限、看日志。仓库里的构建流程都是 cmake + make 那一套。
  • Python 或 C++ 基础:能读懂示例、能改、能自己写调试脚本。
  • 控制理论的基本概念:至少知道位置控制、力矩控制的区别,理解 kp/kd 大致在调什么。这些在什么是 PID 控制里有入门讲解。

如果上面有两三条你现在还不具备,一条务实的建议是:先把台阶降下来,从更简单的东西起步。 一台自平衡小车会让你把 IMU、闭环控制、电机驱动这三件事一次性搞明白;一条几关节的机械臂会让你理解运动学和标定。这些项目摔了不心疼,反馈周期短,出问题容易定位。等这些做顺了再回头看双足,你会发现难的不是「不知道该干什么」,而是「知道该干什么但要干很多遍」——那时候才是动手的合适时机。

机器人与具身智能卷里从最基础的机器人由哪些部分组成一路排到自平衡和机械臂,实战项目里也有可以照着做的端到端题目,是比较合适的起点。而足式机器人的 DIY 路径那篇,则专门讨论从零到足式的阶梯该怎么爬。

六、比「买一台」更有价值的,是能看见每一个决策

最后说说这个项目对学习者真正的价值。

买一台成品机器人,你得到的是一个能用的黑箱。它能走、能跳,但你不知道为什么膝部的连杆是那个形状,不知道为什么电机装在那个位置而不是往上挪五公分,不知道电池为什么放在那儿。

而 BOM 加 STEP 文件让你看到的是设计决策本身。你可以在 CAD 里量出每一个零件的壁厚,看设计者在哪里加了加强筋、在哪里为了减重掏了料;可以看电机的安装方式,理解为什么关节要这样布置;可以顺着电气框图,把整机的供电与通信关系画出来。这些东西是任何一本教科书都给不了的——教科书讲的是通用原理,图纸讲的是具体取舍,而工程能力恰恰长在取舍里。

哪怕你最终没有打印一个零件,把这套资料完整读一遍,收获也远大于看十个演示视频。

读完这个仓库,有三件事值得记住:

  1. 判断一个「开源机器人」的诚意,看它有没有放机械结构。 代码开源是常态,STEP 文件、BOM、电气框图、装配 SOP 齐活才叫真的能复刻。以后遇到任何号称开源的硬件项目,拿这个清单去对。
  2. 硬件项目的难点不在装配,在装配之后。 电机 ID、零位标定、限位确认、转子侧与输出侧的换算——这些不会报错,只会让你的机器人「行为古怪」,而且必须一项项排。
  3. 有 URDF 就先去仿真里把控制逻辑跑通,别把验证成本压到真机上。硬件的每一次失败都是有物理代价的,能在软件里犯的错就别留到硬件里犯。

想接着看这一卷里其他仓库的拆解,可以从卷 U 的目录进去挑。

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

内容有错、看不懂、或想看下一期?告诉我们 →

本文为公开资料的学习整理,非亲测。涉接线/花钱/合规的步骤请结合实物与官方最新资料验证,风险自负。见免责声明