项目>Sesame Robot>用 Web UI、Serial CLI 与 JSON API 驱动 Sesame

用 Web UI、Serial CLI 与 JSON API 驱动 Sesame

摘要:分别用网页控制页、串口命令和 HTTP 请求让机器狗做出动作与表情,并验证每一步的返回结果。

三条控制通道

固件烧好、连上网络后,Sesame 有三条控制通道:网页控制页、串口命令行、HTTP JSON API;网页与 Legacy 端点共用 URL 参数接口,JSON API 面向脚本与外部设备,串口用于调试舵机与接线。网络端点需先连上热点或家庭网络,串口命令需 USB 直连;全部适用 main 分支固件。

API 端点一览

端点 方法与作用
/api/status GET;返回 currentCommand / currentFace / networkConnected / apIP / networkIP
/api/command POST 且带 Content-Type: application/json;执行动作与表情命令
/cmd?go=forward GET;Legacy 行走控制
/cmd?pose=wave GET;Legacy 触发一次性姿态
/cmd?motor=1&value=90 GET;Legacy 单舵机,motor 1–8、value 0–180
/getSettings GET;Legacy 读取运行参数
/setSettings?... GET;Legacy 修改运行参数

/api/command 三种请求体,依次是组合、只换脸、停止:

{"command":"wave","face":"happy"}
{"face":"happy"}
{"command":"stop"}

默认运行参数

默认值逐字来自固件源码,与 /getSettings 一致:

frameDelay = 100
walkCycles = 10
motorCurrentDelay = 20
faceFps = 8
MAX_FACE_FRAMES = 6
servoSubtrim[8] = {0,0,0,0,0,0,0,0}

动作与表情清单

持续行走命令 5 个,循环到 stop:forward, backward, left, right, stop。一次性姿态 15 个:rest, stand, wave, dance, swim, point, pushup, bow, cute, freaky, worm, shake, shrug, dead, crab。

对话表情 9 个:happy, sad, angry, surprised, sleepy, love, excited, confused, thinking,每个都有 talk_ 变体(如 talk_happy);另有 idle、idle_blink、default。

Serial CLI 命令表

USB 连接后在 Arduino IDE 串口监视器(115200 波特率)逐行输入;命令逐字来自固件源码,表外没有别的命令。快捷命令对照:

run walk / rn wf=前进  rn wb=后退  rn tl=左转  rn tr=右转
run rest / rn rs=rest  run stand / rn st=stand
rn wv=wave  rn dn=dance  rn sw=swim  rn pt=point  rn pu=pushup
rn bw=bow  rn ct=cute  rn fk=freaky  rn wm=worm  rn sk=shake
rn sg=shrug  rn dd=dead  rn cb=crab
命令 作用
face <name> / fc <name> 切换表情,如 fc happy
subtrim / st 查看 8 路舵机偏移
subtrim save / st save 输出可粘贴的 int8_t servoSubtrim[8] = {...};
subtrim reset / st reset 偏移全部清零
subtrim <motor> <value> / st <motor> <value> 设单路偏移,电机号 0–7,范围 −90 ~ +90
all <angle> 8 路同时设角度
<motor> <angle> 单路设角度

五步跑通三条通道

  1. 打开控制页:连上 Sesame 热点打开控制页,网络模式用 sesame-robot.local。预期:看到网页控制界面。
  2. 用 Web UI 发一个动作:在控制页触发 wave。预期:机器狗完成挥手后回到站立姿态,OLED 显示 wave。
  3. 用串口发一条命令:串口监视器设 115200,输入 rn st 回车。预期:打印 STAND,机器狗回到站立姿态。
  4. 用 HTTP POST 发一个组合命令:
    curl -X POST http://sesame-robot.local/api/command -H "Content-Type: application/json" -d '{"command":"wave","face":"happy"}'
    预期:返回 {"status":"ok","message":"Command executed"},挥手并显示 happy 表情。
  5. 从 /api/status 验证返回:浏览器打开 http://sesame-robot.local/api/status。预期:返回 JSON,执行期间 currentCommand 为 wave、currentFace 为 happy,播完后 currentCommand 清空、表情保留。

排障与易错点

API 不工作先查两件事:必须是 POST 到 /api/command 且带 Content-Type: application/json 头,用 GET 会返回 405;串口没反应时确认波特率 115200 并按回车。

易错提醒一:单独输入 st 是查看舵机偏移,rn st 才是 stand 姿态。易错提醒二:串口调好的 subtrim 偏移重启即丢,要保留就执行 subtrim save,把输出的数组贴回源码重新烧录。

资料来源

  • Sesame 官方固件文档
  • Sesame 固件源码
  • Sesame 动作序列源码

相关内容

60美元四足机器人Sesame实操指南实践