普通人的双足机器人实践课

从一只会摇摆的鸭子,
理解真实世界的机器人。

从浏览器仿真到 50 Hz 控制循环,再到 15 自由度兼容原型。每一步都能运行、能验证,也知道哪里必须停下来。

选择你的路线
15 电机 / 自由度50 Hz 策略循环< 800 g 官方整机
MicroDuck 官方产品近景照片QUACK 官方贴纸
官方 press kit 照片
© Pollen Robotics
25 cm
14 cm
先说明“复刻”的边界

官方开源的是软件栈;机械与电子设计文件没有公开。你可以运行同类控制架构、训练策略并自制兼容原型,但目前无法依据官方资料做出 1:1 硬件克隆。

查看官方声明
01

CHOOSE YOUR ROUTE

先选路线,再买零件。

第一次做机器人,最昂贵的错误通常是过早购买硬件。

系统架构 / SYSTEM MAP

鸭子如何在 20 毫秒内
完成一次思考?

传感器形成状态,策略网络输出目标关节位置,robotd 在一个进程中拥有舵机总线。固定 50 Hz 循环让感知、推理和动作保持同一节拍。

阅读官方架构文档
20 msCONTROL
LOOP
01 / 感知IMU · ToF · 相机
02 / 状态61D OBSERVATION
03 / 推理ONNX POLICY
04 / 执行JOINT TARGETS
02

PARTS & DECISIONS

一份不假装“官方”的 BOM

按当前路线筛选。勾选状态保存在你的浏览器里。

0 / 1 已准备
完成类别部件 / 数量官方已确认教学原型建议
MicroDuck 官方产品生活方式照片
机械实现 / YOUR OWN CAD

结构从“关节地图”开始,
不是从外壳开始。

01

确定关节轴先画运动学骨架,验证每个转轴方向、零位与碰撞范围。

02

把重心压低电池靠近躯干中心;先用简化外壳验证站立与跌倒。

03

给线束留余量颈部、髋部和膝部需要应力释放,避免导线成为隐形弹簧。

04

最后做表情喙部抓取、摄像头与灯光是第二阶段,不要阻塞第一步行走。

官方 CAD 与电路图未公开。任何自制结构都应视为独立工程设计,并重新验证强度、夹伤点、跌落和电池安全。

03

SOFTWARE WORKSHOP

从会动,到动得可控。

下面代码是学习架构的最小示例;真实 MicroDuck 运行官方 Rust 工作区。

safe_policy_loop.py
# safe_policy_loop.py — 教学用最小骨架,不直接连接高扭矩舵机
import time
import numpy as np
import onnxruntime as ort

HZ, DT = 50, 1.0 / 50
MAX_STEP = np.deg2rad(2.0)  # 首次调试应更小

class MockBus:
    def read_state(self):
        return np.zeros(14), np.zeros(14), np.zeros(3)
    def write_targets(self, q):
        print("targets", np.round(q[:4], 3), "…")

bus = MockBus()
policy = ort.InferenceSession("walk.onnx", providers=["CPUExecutionProvider"])
last_action = np.zeros(14, dtype=np.float32)

while True:
    tick = time.perf_counter()
    q, dq, gyro = bus.read_state()
    command = np.zeros(13, dtype=np.float32)
    obs = np.concatenate([gyro, [0, 0, -1], q, dq, last_action, command])
    raw = policy.run(None, {policy.get_inputs()[0].name: obs[None].astype(np.float32)})[0][0]
    target = q + np.clip(raw - q, -MAX_STEP, MAX_STEP)
    bus.write_targets(target)  # 实机前增加急停、限位、掉线看门狗
    last_action = raw
    time.sleep(max(0, DT - (time.perf_counter() - tick)))
04

SIM TO REAL

把学习留在模拟器,把风险挡在实机外。

01MuJoCo 建模

质量、关节、接触与摩擦

02PPO 训练

用奖励函数形成步态

03域随机化

扰动质量、摩擦、延迟与传感噪声

04导出 ONNX

冻结策略与输入输出契约

05低功率上机

支架、限流、限位、看门狗

BEFORE POWER-ON

第一次通电清单

限流台式电源从低电流阈值开始,确认无短路再逐步增加。

卸载先拆下腿部连杆或把机体固定在支架上,避免舵机突跳。

限位为每个关节设置软限位、速度限制和单周期最大位移。

急停物理断电开关必须伸手可达,软件急停不能替代物理急停。

看门狗控制包超时、IMU 异常或温度过高时自动失能。

电池使用成品保护电池与合适充电器,不自行焊接裸锂电芯。

事实来源 / PRIMARY SOURCES

每一条关键结论,都能回到原文。