项目>Petoi Bittle X>串口协议与第一个动作:从 ksit 到 kwkF

串口协议与第一个动作:从 ksit 到 kwkF

摘要:理解 token 的单字符前缀与大小写规则,能发出第一组动作命令,并按技能命名规则自己推出新命令。

串口协议:一个字符前缀驱动的命令系统

串口是 Petoi Bittle X 最直接的控制通道:在串口监视器输入一行命令,机器人立即执行,不需要额外硬件。官方为机器人定义了一整套串口通信协议,本页讲清 token 规则,给出可以直接发送的第一组命令,并说明技能命名规则,让你能从技能清单自己推出新命令。

token 的三条规则

  • 所有 token 以单个 ASCII 字符开头,这个字符决定后面内容的解析格式,例如 ksit 的 k 表示这是一条技能调用。
  • 命令大小写敏感,且通常为小写;大小写不同的写法是不同的命令,输入时不能随手大写。
  • c 和 m 这类命令可以组合连写:连续的 m8 40、m8 -35、m 0 50 三条,可以写成一条 m8 40 8 -35 0 50。合并长度可以在代码里改,但串口缓冲区本身存在系统级的长度约束,连写过长可能被截断。

先把串口监视器参数配对

参数不对,命令发进去没有任何反应。打开串口监视器后按官方要求设置:

参数 官方值
行结束符 No line ending
波特率 115200
Arduino IDE 版本 官方该页推荐 1.8.19

找不到端口时,把 USB 数据线从电脑侧拔下再插回,对比 Tools 菜单里端口列表的前后差异,即可定位正确的端口。

第一组可运行命令

在串口监视器里逐条发送下面的命令,观察机器人的实际反应:

命令 作用
ksit 调用 sit 技能,机器人坐下
m0 30 把 0 号关节转到 30°
m0 -30 把 0 号关节转到 -30°
kbalance 调用 balance 技能,切换到平衡姿态
kwkF 行走步态,向前走
ktrL trot 步态,向左走
d 让机器人趴下(rest 姿态)

两个细节:官方示例里加的引号只是标示「这是个字符串」,在串口监视器里不要输入引号;m 命令后面依次跟关节索引和角度,多组索引角度可以连续写在一行里,m0 30 和 m0 -30 正负各发一次,正好验证同一个关节两个方向的行程。

技能命名规则:从清单推出新命令

技能调用的套路固定:在技能名前加 k、删掉类型后缀。例如清单里有 sitI,发送 ksit 就是调用坐下姿势。按这条规则,清单里的任何技能都能推出对应的串口命令,不需要死记硬背命令表。

判断一个技能是不是步态,看它的倒数第二个字符:是 F 或 L 的就是步态,分别表示向前走或向左走;向右走是向左走的镜像,所以 kwkF、kwkL、kwkR 分别让机器人前进、左行、右行。除行走外还有别的步态前缀:trot(tr)、crawl(cr)、stepping(vt)。

官方页给出的技能名带类型后缀的完整清单(skillNameWithType)如下,可以对照着推命令:

const char* skillNameWithType[]={"bdFI","bkI","bkLI","crFI","crLI","hlwI","mhFI","mhLI","pcFI","phFI","phLI","trFI","trLI","vtFI","vtLI","wkFI","wkLI","balanceI","buttUpI","calibI","droppedI","liftedI","restI","sitI","strI","zeroN","bfI","ckI","climbCeilI","fdI","ffI","hiI","jyI","pdI","peeI","puI","pu1I","rcI","rlLI","rtI","stpI","tsI",};

宏定义在哪、两个仓库怎么分工

这里有一个官方文档自己留下的坑:串口协议页说最新 token 宏定义看 OpenCat.h、完整技能集看 InstinctBittle.h 或 InstinctNybble.h,但这几个文件在页面里的链接都指向 legacy 仓库,而不是给 Bittle X 烧录用的 ESP32 仓库。正确的分工是:

要做的事 该用的仓库或位置
给 Bittle X V2(BiBoard V1)或老款 Bittle X(BiBoard V0)烧录固件 ESP32 仓库 PetoiCamp/OpenCatEsp32-Quadruped-Robot
运行 Python API 示例脚本 legacy 仓库的 OpenCatPythonAPI 目录
查 token 宏定义与技能定义 官方页链接指向 legacy 仓库源码;串口协议本身在两代硬件上通用

这个坑更迷惑的地方在于两个仓库的热度是倒挂的:legacy 仓库的星标数比 ESP32 仓库多,但 legacy 仓库的 README 开头就提示 current-gen 硬件用户去 ESP32 仓库。

一句话固定结论:烧录用 ESP32 仓库,Python API 脚本在 legacy 仓库的 OpenCatPythonAPI 目录,串口协议在两代硬件上通用。不能把官方文档理解成只有一个仓库,也不要因为链接指向 legacy 就用错烧录源。

资料来源

  • Serial Protocol 官方页
  • Serial Monitor 官方页
  • Petoi Doc Center 中文 · 串口协议