Hugging Face 与法国机器人公司 Pollen Robotics 最近发布的 Microduck,把“具身智能”从实验室展示台搬到了一个很容易让人产生购买冲动的尺寸里:它高约 25 厘米、重量不到 800 克,售价 399 美元,并已在北美、欧洲和英国开放预订。
它不是只能摇头摆尾的桌面玩具。Microduck 使用 15 个舵机,在 50Hz 控制循环下运行神经网络策略,可以行走、蹲下、摔倒后自行爬起,还能尝试用喙叼起地上的物体。更有吸引力的是,这个项目以开源硬件和软件为方向,开发者有机会观察、修改并重新训练它的行为策略。
小身体里塞进了一套完整机器人系统
Microduck 的看点不只是“鸭子”这个外形,而是它把移动、姿态恢复和物体交互集中到了一台低门槛设备中。
15 个舵机意味着机器人需要协调多个关节。走路时,控制器要同时处理身体平衡、腿部摆动和落脚时机;蹲下时,关节角度需要连续变化;摔倒后爬起,则要根据当前姿态选择一套恢复动作。对开发者来说,这类行为比单个电机的开关控制更接近真正的机器人策略执行。
50Hz 控制循环代表控制器每秒处理约 50 次动作更新。这个频率并不意味着所有感知和推理都必须以同样速度完成,但它给出了一个清晰的工程约束:策略输出需要足够稳定,通信延迟和执行器响应也不能过大,否则机器人会表现出抖动、迟滞或失衡。
开源的价值:从“看它表演”变成“研究它怎么动”
传统消费机器人往往把机械结构、控制程序和训练流程封装起来,用户只能调用有限的动作接口。开源 Microduck 的意义,在于它可能让开发者接触到更完整的链路:
- 读取传感器状态,并将其整理成策略输入;
- 运行神经网络策略,输出关节目标或动作命令;
- 通过 50Hz 左右的循环将动作发送到舵机;
- 记录实际动作与机器人姿态,为调参或重新训练提供数据;
- 在仿真环境中验证策略,再部署到实体机器人。
这里需要区分“项目开源”和“所有内容都可以随意使用”。购买前应检查官方仓库中的硬件文件、软件代码、模型权重、训练数据和许可证是否分别开放。尤其是模型权重与训练数据,可能采用不同授权条款。
可以怎样实践:先用一个最小控制循环理解它
下面是一段与具体 Microduck SDK 无关的 Python 示例。它用一个假想的 Robot 接口演示神经网络策略的基本结构:读取状态、计算动作、限制动作范围,再以 50Hz 发送给机器人。实际接入时,需要把 Robot 和 Policy 替换成官方 SDK 或你自己的实现。
"""Minimal 50 Hz robot-policy loop.
Assumptions:
- Robot.read_observation() returns a numeric state vector.
- Policy.predict() returns one target value per actuator.
- Robot.send_action() sends normalized actuator targets.
"""
from time import monotonic, sleep
CONTROL_HZ = 50
PERIOD = 1.0 / CONTROL_HZ
ACTUATOR_COUNT = 15
class Robot:
def read_observation(self):
# Replace this with sensors, joint positions, and orientation data.
return [0.0] * 32
def send_action(self, action):
# Replace this with the robot's servo or controller API.
if len(action) != ACTUATOR_COUNT:
raise ValueError("expected 15 actuator targets")
print("action:", [round(value, 3) for value in action])
class Policy:
def predict(self, observation):
# Replace this with a trained neural-network inference call.
return [0.0] * ACTUATOR_COUNT
def clip(value, low=-1.0, high=1.0):
return max(low, min(high, value))
def run(robot, policy, seconds=2):
deadline = monotonic() + seconds
next_tick = monotonic()
while monotonic() < deadline:
observation = robot.read_observation()
raw_action = policy.predict(observation)
action = [clip(value) for value in raw_action]
robot.send_action(action)
next_tick += PERIOD
sleep(max(0.0, next_tick - monotonic()))
if __name__ == "__main__":
run(Robot(), Policy())
这段代码真正值得注意的不是占位接口,而是控制循环的边界:动作必须限制在安全范围内,循环不能因为一次日志或推理耗时而无限漂移,执行器数量也必须和机器人配置严格一致。连接真实硬件前,还应加入急停、通信超时、关节角度限制、电池电压检查和低速调试模式。
更实际的开发顺序可以是:先让机器人在抬高或固定状态下验证单关节动作;再测试静态姿态;接着运行低幅度步态;最后才允许完整的摔倒恢复和物体抓取。神经网络策略可以带来灵活行为,但它不会自动消除机械碰撞、夹伤和失控风险。
为什么它可能比“大型人形机器人”更容易普及
Microduck 的产品吸引力来自几个具体组合:体积小,价格相对可接近,动作结果直观,而且开发者能够把它当作一个可观察、可修改的机器人平台。
大型人形机器人适合展示通用操作能力,但成本、空间和安全要求都很高。Microduck 则更像一块会走路的实验板:它可以用于机器人课程、强化学习实验、动作策略研究,也可以成为家庭开发者理解具身智能的入口。鸭子的外形还降低了失败动作的心理负担,摔倒和重新站起不再只是实验指标,而是用户能立即看懂的行为。
当然,399 美元并不一定等于完整的实验成本。开发者还可能需要计算设备、额外传感器、备用舵机、电池、工具和安全测试场地。预订区域、发货时间、售后支持以及开源资料的完整程度,也会直接影响它是否适合个人购买。
入手前的检查清单
- 确认预订地区、税费、运输费用和预计交付时间;
- 查看 15 个舵机、主控板、传感器和电池是否包含在标准套装中;
- 核对软件、硬件设计、模型权重和训练数据分别采用什么许可证;
- 确认是否提供仿真环境、示例策略和硬件调试文档;
- 为首次运行准备急停机制、软垫和限制动作幅度的配置;
- 评估自己是想购买一个可玩设备,还是要真正修改控制器和训练策略。
Microduck 最有意思的地方,不在于它是否已经解决了通用机器人问题,而在于它把一个完整的神经网络机器人系统压缩到了 25 厘米和 399 美元的范围内。对开发者来说,这可能是一次低门槛观察具身智能如何落到真实关节、真实延迟和真实摔倒中的机会;对普通用户来说,它则是一只终于有机会被“拆开理解”的鸭子机器人。