水杉输入法 MSIME|开源中文输入法
水杉输入法(MSIME)是开源中文输入法,面向 Windows、macOS、Linux、Android、iOS 与 HarmonyOS 开发,支持全拼、双拼、五笔,候选词旁直接显示译文。查看下载、使用指南与常见问题。
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Your real-life buddy duck: an open-source embodied AI robot duck that walks, hears, sees, and has a life of its own. 让 DuckBuddy 成为你真正的生活伙伴鸭:开源具身智能小鸭机器人,运动、语音、视觉与生命层全部跑在机器人自己身上。Feetech servos + Orange Pi Zero 3W, built on Pollen Robotics' Microduck (unofficial).
翻訳待ち
Loading the full README.
Read the full README ↗https://github.com/user-attachments/assets/7dd5c290-7b48-4f87-a991-7aab6c25632f
我们想做的不只是"又一只机器鸭",而是把运动、环境感知、语音交互和生命层整合成一个可复刻、可改进的开源系统:全部跑在机器人自己身上,不依赖手机或云端。
DuckBuddy 基于 Pollen Robotics 的 Microduck,是独立的社区项目,不隶属于 Pollen Robotics,也未获其背书,详见 NOTICE。
一张图看懂各部分怎么配合:感知(声音、视觉、距离)把事件交给生命层 lifed,lifed 决定看哪里、做什么、说什么,再把意图交给唯一直接驱动舵机的 robotd;手柄的优先级高于 lifed;联网时,lifed 通过 frp 隧道向大脑服务器(多模态大模型)提问,离线时由自带的"小脑"回答。所有服务都在 Orange Pi 上独立运行,通过本机 Unix socket 交换 JSON 消息。
flowchart TB
subgraph ROBOT["机器人上 · Orange Pi(Linux)"]
subgraph SENSE["感知"]
VOICED["voiced · Python<br/>降噪 · VAD · SenseVoice 离线识别<br/>双麦听声辨向"]
VISIOND["visiond · Python + duckcam<br/>看脸 YuNet · 运动 · 扫码连网 · 拍照"]
TOFD["tofd · Rust<br/>8×8 测距"]
end
LIFED["lifed · Python · 生命层<br/>状态机 · 需求与情绪 · 注意力<br/>任务层 · 离线小脑 · 头部动作 · 人声提示"]
PERSONA[("人设 JSON<br/>名字 · 性格 · 声音")]
DUCKWEB["duckweb · Python<br/>手机网页 :8088"]
PADD["padd · Rust<br/>Xbox 手柄"]
ROBOTD["robotd · Rust · 50 Hz<br/>ONNX 策略:走 · 站起 · 坐下 · 滚翻<br/>安全:摔倒 · 温度 · 电池 · 失联停"]
end
HW["舵机 × 15 · IMU · 喇叭"]
BRAIN["duckbrain · GPU 服务器(可选)<br/>多模态大模型:对话 · 看图 · 判断"]
TRAIN["训练 · GPU<br/>mjlab · BAM 执行器辨识"]
VOICED -- "呼唤 / 说话(带方向)" --> LIFED
VISIOND -- "人脸 · 运动 · 二维码" --> LIFED
TOFD -- "前方距离" --> LIFED
TOFD -- "有人靠近" --> VISIOND
LIFED -- "看一会儿 · 扫码 · 拍照" --> VISIOND
PERSONA -.-> VOICED
PERSONA -.-> LIFED
DUCKWEB <-- "状态 · 音量 · 任务" --> LIFED
LIFED -- "JSON-RPC:走 · 动作 · 头 · 叫声 · 休息" --> ROBOTD
ROBOTD -- "姿态 · 温度 · 电量 · 里程计" --> LIFED
PADD -- "JSON-RPC:遥控" --> ROBOTD
ROBOTD -- "飞特总线 · 500 kbps" --> HW
LIFED <-. "frp 隧道:对话 · 看图" .-> BRAIN
PERSONA -.-> BRAIN
TRAIN -. "ONNX 策略" .-> ROBOTD
| Microduck 原版 | DuckBuddy | |
|---|---|---|
| 主控 | Radxa Zero 3W(RK3566,1 GB) | Orange Pi Zero 3W(全志 A733:2×A76 + 6×A55,4 GB,3 TOPS NPU) |
| 舵机 | 15 × Dynamixel XL330(2S) | 15 × 飞特 HL-2915(3S);HD-1910(2S)在做 |
| 扩展板 | Pollen 的 HAT | 我们的 HAT(音频 codec、双麦、喇叭功放、ToF、5 V 电源、舵机总线)和 PDB/IMU(配电 + 挂在舵机总线上的 IMU) |
| 传感器 | IMU | IMU、双麦克风、IMX219 摄像头、8×8 ToF 测距 |
| 策略 | Pollen 的 | 按 HL-2915 重新训练,见 training/ |
| 行为 | 手柄或 App 控制 | 机器人上的生命层,见 tools/lifed |
电池接在躯干里的 PDB/IMU 板上,分三路供电,每路都带电源和舵机总线:左腿、右腿、头部。HAT 和 Orange Pi 叠在一起装在头里:HAT 把电池电压降成 5 V 给 Orange Pi,把串口接到舵机总线上,并负责声音(两个麦克风进、一个喇叭出)。15 个舵机和 IMU 共用同一条总线。
flowchart LR
BAT["电池 3S<br/>LiPo / LiHV"] --> PROT
subgraph PDB["PDB/IMU 板 · 躯干"]
PROT["TVS + 各路保险丝"]
IMU["IMU<br/>STM32G031 + LSM6DSV16X<br/>挂在总线上 · ID 200"]
end
PROT -- "J4 · 电源 + 总线" --> LLEG["左腿<br/>5 × HL-2915"]
PROT -- "J6 · 电源 + 总线" --> RLEG["右腿<br/>5 × HL-2915"]
PROT --- IMU
PROT == "J5 ⇄ J2 · 电源 + 总线" ==> PWR
subgraph HEAD["头部"]
subgraph HAT["HAT 板"]
PWR["防反接 · 软启动<br/>5 V 降压 LMR51450"]
XCV["半双工总线收发"]
CODEC["音频 codec<br/>TLV320AIC3104"]
AMP["功放<br/>TPA2005D1"]
end
OPI["Orange Pi Zero 3W<br/>全志 A733 · 4 GB · NPU 3 TOPS"]
HSERVO["头部 5 × HL-2915<br/>脖子 · 头 · 嘴"]
MIC["麦克风 × 2<br/>左 / 右"]
SPK["喇叭"]
TOF["ToF 8×8<br/>VL53L5CX"]
CAM["摄像头<br/>IMX219"]
end
PWR -- "5 V" --> OPI
OPI -- "UART7 · 500 kbps" --> XCV
XCV -- "舵机总线" --> HSERVO
XCV -. "总线数据 · 经 J2/J5" .-> PROT
OPI -- "I2S" --> CODEC
OPI -- "I²C" --> CODEC
OPI -- "I²C" --> TOF
CAM -- "MIPI CSI" --> OPI
MIC --> CODEC
CODEC --> AMP --> SPK
OPI -. "Wi-Fi / 蓝牙" .-> EXT["手机网页 · Xbox 手柄<br/>大脑服务器(可选)"]
我们自己设计的两块板,HAT 和 PDB/IMU:
| 服务 | 语言 | 做什么 |
|---|---|---|
robotd | Rust | 50 Hz 控制环,跑 ONNX 策略;飞特 HLS 总线驱动、电池识别(2S/3S、LiPo/LiHV)、温度和摔倒保护 |
lifed | Python | 生命层:状态机、需求与情绪、注意力、任务层、离线小脑、头部动作 |
voiced | Python | 降噪、人声检测、离线识别(SenseVoice)、双麦听声辨向 |
visiond | Python | 摄像头:人脸(YuNet)、运动检测、扫码连网、拍照 |
tofd | Rust | 8×8 ToF 测距:前方距离、有人靠近 |
padd | Rust | Xbox 手柄(蓝牙),优先级高于 lifed |
duckweb | Python | 手机网页:状态、电量、对话、音量 |
duckbrain | Python | 可选,跑在 GPU 服务器上:任何兼容 OpenAI 接口的多模态大模型,负责聊天和看图 |
persona | JSON | 人设:名字、性格、说话方式,和代码分开 |
| 组合 | 状态 |
|---|---|
| Orange Pi Zero 3W 4 GB + 15 × HL-2915 + 3S 电池(LiPo 1500 mAh / LiHV 2800 mAh) | ✅ 整机日常运行 |
| Orange Pi Zero 3W + 15 × HD-1910 + 2S 电池 | 🚧 板子在焊,舵机驱动和策略待做 |
| Microduck 原版(Radxa Zero 3W + Dynamixel XL330) | ⚪ Dynamixel 总线驱动未改动,我们没有实机测过 |
| 时间 | 完成的事 |
|---|---|
| 2026-08 | 基于 Microduck 起步,整理原版硬件和软件 |
| 2026-09 | 设计 HAT(R3E)和 PDB/IMU(R2f),打板、焊接 |
| 2026-10 上旬 | 飞特 HL-2915 舵机驱动、IMU 固件;执行器辨识(BAM),重新训练走路、站起、坐下策略 |
| 10-13 | Xbox 手柄(蓝牙) |
| 10-14 | 生命层:需求、情绪、休息、舵机散热预算 |
| 10-15 ~ 16 | 语音:离线识别、用鸭语表达、联网大脑对话 |
| 10-17 | 扫二维码连 WiFi、人声提示、音量、"看看这是什么"、任务层(说一串动作连续执行)、里程计标定 |
| 10-18 | 双麦听声辨向、注意力与视觉引导(人脸、运动)、电池自动识别(2S/3S、LiPo/LiHV)、人设与框架分离、开源 |
| 方向 | 内容 | 状态 |
|---|---|---|
| 新技能 | 前滚翻、叼起地上的衣服(仿真里已训练好,待实机测试) | 🚧 进行中 |
| 注意力 | 视觉引导转头的实机验证 | 🚧 进行中 |
| 任务 | 实机按说出的路线行走 | 🚧 进行中 |
| 2S 版 | HD-1910 舵机 + 2S 电池 | 🚧 进行中 |
| NPU | 物体检测,接进注意力 | 📋 计划 |
| 端侧多模态 | MiniCPM-V 4.7 1B,离线也能"看"东西 | 📋 计划 |
| 定位 | AprilTag 地标 → 视觉里程计 → 房间级地图 | 📋 计划 |
| 语音 | 唤醒词、嘈杂环境、双麦波束 | 📋 计划 |
| 文档 | 英文翻译、完整装机教程 | 📋 计划 |
This is the beginning of the README. Read the rest at the original. Read the full README ↗