Перейти к статье

Резервная копия и прошивка

Проверено 2026-11-01

Результат: сохранены настройки каждого мотора, установлен совместимый образ, проверены запуск приложения и сохранность настроек. Инструменты и связь уже должны работать.

1. Подготовить механизм

Закрепите руку, поддержите звенья, отключите удержание. Закройте другие программы на порту. Flasher требует 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; замените список своим. Она создаст пустой файл записи — для воспроизведения он не нужен. Это штатное освобождение моторов, не аварийная остановка.

2. Сохранить настройки каждого мотора

Нужны два разных назначения резервной копии. Форматы не взаимозаменяемы:

Файл Чем создаётся Для чего используется
tools/settings/backups/servo-1-before-flash.json Node.js settings backup Обычное восстановление постоянных Legacy-настроек того же мотора
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, и имя файла. Храните копии вне рабочей папки проекта и подпишите, какому физическому мотору они принадлежат. Существующие файлы не перезаписываются: для нового снимка выберите новое имя. Копии Legacy-настроек не сохраняют Extension-профили и модель гравитации — их JSON-файлы сохраняйте отдельно.

Проверка: обе команды завершились успешно, файлы существуют. Не используйте резервную копию другого мотора: она содержит его смещения и может изменить физический смысл отсчётов.

3. Проверить образ без подключения к мотору

Скачайте custom-v9-e44c0e6.zip из Assets релиза v0.1-preview. Извлеките оба файла — 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 не открывает последовательный порт. Он проверяет структуру manifest, размер и SHA-256 образа. Для этого архива ожидаются extension.major: 9, extension.minor: 0, model_bytes: [[9, 3]], encoded_bytes_verified: 25744. Если проверка не проходит, получите исходную согласованную пару файлов; не исправляйте hash или размер вручную.

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. Не отключайте питание и не запускайте другой uploader до завершения. При обычной адресной прошивке остальные моторы с уникальными ID можно оставить подключёнными; прошивайте их последовательно. На этапе обычной прошивки шину не перезапускают вручную.

Инструмент сохраняет снимок настроек, передаёт образ, проверяет запуск приложения и сравнивает настройки. Успешное завершение оставляет удержание выключенным. Отчёты находятся в backups/flash/; сохраните их вместе с резервными копиями. Это проверка приложения и настроек, а не полное обратное чтение всех байтов прошивки.

5. Проверить установленный интерфейс

После завершения прошивки можно прочитать capabilities и обратную связь без запуска движения:

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, скорость и настройки. Не повторяйте прошивку автоматически. Для случая без ответа и возврата на заводское ПО используйте отдельную процедуру восстановления.

Далее: проверить или выполнить калибровку.


Главная раздела · Версия исходников: a995f77. Extension 9.0.