乐聚 Aelos 机器人工程
这个技能能做什么
- 生成工程项目:在软件之外一键创建合法的 Aelos 工程(
<工程名>.abe+test.xml+ 用户文件 + 子目录)。 - 生成积木程序:把「站立 → 挥手 → 延时 1 秒 → 循环 3 次拍手」这类描述转成
test.xml的 Blockly XML。 - 解析与答疑:讲清
.abe格式、机型差异、下载链路、软件界面与常见报错。 - 备份 / 迁移 / 校验:核对工程结构是否完整、
robotType是否正确。
快速开始
生成一个空白工程
python scripts/create_aelos_project.py --dir "D:/lejurobot/工程输出" --name 我的工程 --robot-type Aelos_edu
生成带程序的工程
python scripts/create_aelos_project.py --dir "./out" --name 打招呼 \
--program '[{"type":"Stand_up"},{"type":"Wave_hands"},{"type":"delay","delay":1000},
{"type":"aelos_for","times":3,"do":[{"type":"Clap_hands"}]}]'
或把程序写进 JSON 文件后用 --program program.json(结构:数组,或 {"program": [...]})。
查询能力
python scripts/create_aelos_project.py --list-robots # 所有机型
python scripts/create_aelos_project.py --list-blocks # 所有可用积木(含中文名)
> 脚本默认用 Python 3 直接运行;Windows 下请用可用的 python 解释器完整路径调用。
工作流程
场景 A:用户要"新建 / 生成一个 Aelos 工程"
- 先确认三件事:输出目录、工程名(≤30 字符、无
\ / : * ? " < > |)、机型(默认Aelos_edu)。
用户没给就用合理默认值并在回复中说明,不要反复追问。 - 调用
scripts/create_aelos_project.py生成。若用户描述了程序行为,同时用--program生成test.xml。 - 校验产物:工程目录下应有
<名>.abe、test.xml、userProjAction.js、userImportAction.js、
userDefAction.js、userToolbox.html和action/ custom/ import/ src/四个子目录。 - 把工程路径和文件清单回复给用户,提示用软件「打开」即可加载。
场景 B:用户给一段程序描述,要生成积木程序
- 读
references/blocks-catalog.md(或--list-blocks)确认积木type是否存在,不要臆造积木名。 - 把描述映射为 program 数组:顺序动作直接给
{"type": "..."};
延时 N 毫秒→{"type":"delay","delay":N};
循环 N 次 { ... }→{"type":"aelos_for","times":N,"do":[...]};
如果…执行 { ... }→{"type":"aelos_if","condition":..., "do":[...]}。 - 生成并回读
test.xml确认结构与积木类型正确。
场景 C:用户问"怎么用这个软件 / 为什么下载失败 / 工程打不开"
- 查
references/software-guide.md的「创建工程流程」「界面功能地图」「常见问题」。 - 若涉及工程文件本身,查
references/project-format.md。
场景 D:用户要迁移 / 备份 / 排查已有工程
- 读该工程的
.abe确认robotType与path;读test.xml确认程序。 - 按
references/project-format.md的常量表核对必需文件与子目录扩展名。 - 提醒:工程是文件夹,只拷贝
.abe无效。
核心事实(务必遵守,均已核对源码)
- 工程 = 文件夹。标识文件
<工程名>.abe只存{path, author, robotType, version}元信息;
程序本体在test.xml(Blockly XML)。 .abe中author固定为Leju Company。- 子目录扩展名约束:
action|custom|import→ 仅.js;src→ 仅.src。 - 新建工程的默认工作区只有一块不可删除的
start("开始")积木;所有程序写在它的do槽里。 - ⚠ 程序积木必须用
<next>链式嵌套,绝不能在<statement>/<value>里平铺多个<block>。
软件自带 Blockly 的domToBlockHeadless_只连接最后一个<block>,其余会被静默丢弃
(表现为「工程能打开但积木都没了」)。脚本的_sequence_xml()已按官方序列化格式处理,
并在写盘前用validate_blockly_xml()做结构自检 —— 手写/改写test.xml时务必照此办理。 - 程序积木名用英文 type(如
Stand_up、Wave_hands、Clap_hands),不是中文名。 - 机型决定生成语言与产物:主控型(Aelos_edu / sp / Taskor / lite / pro)产出动作帧 →
main.hex(串口/无线);
树莓派型(smart / pro_3 / Embodied / LM)产出 Pythonmain.py(WiFi/U盘);开鸿型产出main.ets。
机型选错会导致积木集加载错误或下载报错「当前连接的机器人与所属工程不符」。 - 工程名 ≤ 30 字符,且不能与面板预置模块同名。
资源
scripts/
create_aelos_project.py—— 主脚本。创建/生成 Aelos 工程;支持空白工程与带程序工程;
自带机型校验、名称校验(非法字符/长度/保留名)、父目录.abe冲突校验;
--list-robots/--list-blocks查询能力。
references/
project-format.md——.abe工程结构、软件内部常量表、test.xml格式、语句/字段输入名、默认工作区 XML、新建校验规则。robot-types.md—— 10 个robotType的型号 / 舵机数 / 生成语言 / 产物 / 连接方式,两条技术链路。blocks-catalog.md—— Aelos_edu 全部 137 个积木的type与中文名,按分类列出,含输入名与动作帧说明。software-guide.md—— 软件定位、工作原理、创建工程的 6 步操作流程、界面功能地图、常见报错、lejuPython SDK。
assets/
blocks_aelos_edu.json—— 机器可读的积木目录(分类 →type/label),供脚本校验积木合法性。program.example.json—— 程序规格示例(顺序动作 + 延时 + 循环 + 条件),可直接传给--program。