备份并刷写固件
结果: 保存每个电机的设置,安装兼容的映像,并检查应用程序启动和设置保存。 工具和通信 必须已经可以工作。
1、准备机制
固定机械臂,托住各连杆,然后关闭电机力矩。关闭其他使用串口的程序。刷写工具要求 torqueEnable = 0、通过 lock = 1 锁定持久化写入,并且没有活动告警。若不满足条件,请用相应的设置工具解决。不要绕过检查,也不要在未查明原因时清除告警。
可以使用已安装的姿态记录工具关闭力矩。运行命令,先托住机构,再确认关闭力矩,等待 Torque off verified,然后输入 done,不要记录姿态:
macOS / Linux
npm run record-poses -- --port "$SERVO_PORT" --ids 1,2,3,4,5,6
Windows PowerShell
npm.cmd run record-poses -- --port "$env:SERVO_PORT" --ids 1,2,3,4,5,6
将选定的 ID 替换为您的 ID。这将创建一个重播不需要的空姿势文件。这是一个受控的扭矩释放程序,而不是紧急停止。
2. 备份每个电机
两种备份目的使用不同的、不可互换的格式:
| 文件 | 创建者: | 目的 |
|---|---|---|
tools/settings/backups/servo-1-before-flash.json |
Node.js settings backup |
将持久旧版设置普通恢复到同一电机 |
backups/servo-1-factory-recovery.json |
Python settings.py backup |
恢复出厂固件后修复保存的设置和重置模板 |
这两个命令都会读取电机而不更改其设置:
macOS / Linux
npm run settings -- backup --port "$SERVO_PORT" --id 1 --file tools/settings/backups/servo-1-before-flash.json
Windows PowerShell
npm.cmd run settings -- backup --port "$env:SERVO_PORT" --id 1 --file tools/settings/backups/servo-1-before-flash.json
macOS / Linux
tools/flash/.venv/bin/python tools/flash/settings.py backup --port "$SERVO_PORT" --id 1 --file backups/servo-1-factory-recovery.json
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/settings.py backup --port "$env:SERVO_PORT" --id 1 --file backups/servo-1-factory-recovery.json
对每个 ID 重复 ,更改 --id 和文件名。在项目外部保留另一个副本,并用其物理电机标记每个备份。现有文件不会被覆盖;为另一个快照使用新名称。旧备份不包括 Extension 配置文件或重力模型:单独保存这些 JSON 文件。
检查: 两个命令都成功并且两个文件都存在。请勿恢复其他电机的备份;它的偏移量可以改变编码器计数的物理意义。
3. 离线检查固件镜像
从 v0.1-preview 的 Assets 区域下载 custom-v9-e44c0e6.zip。将 firmware.enc 和 release.json 两个文件都解压到 tools/flash/releases/custom/。不要使用 Source code 源码压缩包、release.example.json 或原始编译输出。
macOS / Linux
tools/flash/.venv/bin/python tools/flash/flash.py inspect --manifest tools/flash/releases/custom/release.json
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/flash.py inspect --manifest tools/flash/releases/custom/release.json
inspect 未打开串口。它检查清单结构、图像大小和 SHA-256。对于此存档,预计为 extension.major: 9 、 extension.minor: 0 、 model_bytes: [[9, 3]] 和 encoded_bytes_verified: 25744 。如果验证失败,则获取原始匹配对;不要手动调整其哈希值或大小。
4. 按 ID 刷写单个电机
以下命令写入固件并重新启动所选电机:
macOS / Linux
tools/flash/.venv/bin/python tools/flash/flash.py flash --manifest tools/flash/releases/custom/release.json --port "$SERVO_PORT" --id 1
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/flash.py flash --manifest tools/flash/releases/custom/release.json --port "$env:SERVO_PORT" --id 1
收到提示时输入 FLASH。保持供电,完成前不要运行其他上传工具。正常的按地址刷写允许其他具有唯一地址的电机保持连接;请逐个刷写。正常刷写期间,不要手动对总线断电再上电。
工具会保存设置快照、传输镜像、验证应用程序启动并比较设置。成功完成后,力矩保持关闭。报告保存在 backups/flash/,请与备份一起保留。这会检查应用程序和设置,而不是逐字节回读整个固件。
5. 检查已安装的接口
刷写完成后,在不启动运动的情况下读取能力信息和反馈:
macOS / Linux
node host/servo-driver/examples/v9-feedback.js "$SERVO_PORT" 1
Windows PowerShell
node host/servo-driver/examples/v9-feedback.js "$env:SERVO_PORT" 1
此示例使用 1,000,000 波特率和 ID 1。操作其他 ID 时请更改最后一个参数。使用不同波特率时,需要修改此示例代码。预期 Extension 版本为 9.0;会话未激活且力矩关闭是正常状态。
如果传输完成但应用程序验证失败,请保留报告,并在再次刷写前检查 ID、波特率和设置。设备无响应或明确需要恢复原厂固件时,请使用恢复流程。
下一步:检查或建立校准。