开发

JavaScript 写到底

固件与应用是同一套 JavaScript 运行时。你不需要交叉编译工具链,也不需要嵌入式背景。

技术栈

比你想象的更接近前端

运行时遵循 ECMA-419 标准,UI 采用声明式组件模型 —— 如果你写过前端,今天就上手。

JavaScriptTypeScriptECMA-419 运行时声明式 UIWebAssembly 模拟器BLE 配网串行总线舵机模块化固件

模块化固件

固件按职责拆分:界面、输入、灯光、摄像头、运动、音频、连接、对话。每一块都可独立替换或裁剪。

声明式 UI

界面用声明式组件描述,表情与界面共享同一套渲染层;换一副脸不需要改渲染代码。

同一份代码两端跑

模拟器与真机使用同一份固件,WebAssembly 负责在浏览器里复现设备行为,开发时不烧板子。

快速开始

三步点亮一块屏

从零到第一个自定义表情,通常不超过十分钟。

  1. 刷入固件

    用 Chrome 或 Edge 打开固件安装器,USB 接上 DeskBot,点击安装。整个过程不需要在电脑上装任何软件。

  2. 跑通模拟器

    在浏览器里打开模拟器,它会用同一份固件的 WebAssembly 版本把机器人跑起来 —— 先在这里把行为调对,再推到真机。

  3. 写一个 MOD

    新建一个目录,写好清单文件与入口脚本,调用设备能力接口。可以是换掉表情,也可以是接管舵机。

// 一个最小的 MOD:被拿起时换成惊讶表情
import { Motion, Display, Face } from "aieer/device";

const surprised = Face.from({
  eyes:  [{ x: 6, y: 4, w: 4, h: 4 }, { x: 14, y: 4, w: 4, h: 4 }],
  mouth: [{ x: 11, y: 12, w: 2, h: 2 }]
});

Motion.on("lifted", async () => {
  await Display.show(surprised, { duration: 1200 });
  await Motion.tilt(0);
});
能力接口

设备能力都是一句调用

下表为常用能力的接口概览,细节以随固件发布的接口文档为准。

Display.show(face, opts)切换表情,可指定持续时间与过渡动画
Display.text(str, opts)在表情层之上叠加文字或状态提示
Motion.pan(deg) / Motion.tilt(deg)控制水平与垂直角度,支持缓动与限速
Motion.on(event, cb)监听动作事件(抬起、放下、倾斜、被推动)
Audio.listen(opts)开始录音或接入唤醒词检测
Audio.speak(text, opts)流式语音合成并播报,支持中断
Vision.track(kind, cb)订阅人脸或手部追踪结果
Light.set(rgb, opts)设置指示灯颜色、亮度与呼吸节奏
Storage.get/set(key, val)本机持久化存储,用于保存设置与会话偏好
Net.request(opts)发起网络请求,用于接入你自己的服务
硬件与开源

外壳、图纸与贡献路径都公开

我们希望你既能改软件,也能改硬件。

三维外壳模型

外壳模型公开,可直接修改、打印或用于设计配件与支架。

结构图纸与原理图

机体结构装配与电路原理图公开,便于维修、拆解与二次开发。

贡献指南

功能建议、缺陷报告与改进都欢迎提交;社区 MOD 亦可申请进入画廊推荐位。

需要 SDK 或技术支持?

企业定制固件、能力开放与技术支持,可以走商务通道直接对接。