Просмотр телеметрии
Результат: открыт журнал и проверено соответствие изображения реальному механизму. Просмотрщик читает файлы: он не подключается к сервоприводам, не управляет ими и не предсказывает результат настройки PID.
Установить и открыть журнал
Из корня проекта, с Python 3.12:
macOS / Linux
python3.12 -m venv tools/simulation/.venv
tools/simulation/.venv/bin/python -m pip install -r tools/simulation/requirements.txt
mkdir -p logs/motion
Windows PowerShell
py -3.12 -m venv tools/simulation/.venv
.\tools\simulation\.venv\Scripts\python.exe -m pip install -r tools/simulation/requirements.txt
New-Item -ItemType Directory -Force logs/motion | Out-Null
В одном терминале откройте наблюдение за каталогом:
macOS / Linux
tools/simulation/.venv/bin/python tools/simulation/viewer.py live logs/motion --model so101
Windows PowerShell
.\tools\simulation\.venv\Scripts\python.exe tools/simulation/viewer.py live logs/motion --model so101
Пустой каталог ожидает первую запись. В другом терминале запустите управление; просмотрщик подхватит новый журнал и будет переключаться на последующие сеансы. Он ищет .ndjson в этом каталоге, не во вложенных папках. Закрытие окна просмотрщика не останавливает управление оборудованием.
Чтобы посмотреть конкретный завершённый сеанс, замените EVENTS.ndjson его путём:
macOS / Linux
tools/simulation/.venv/bin/python tools/simulation/viewer.py play EVENTS.ndjson --model so101
Windows PowerShell
.\tools\simulation\.venv\Scripts\python.exe tools/simulation/viewer.py play EVENTS.ndjson --model so101
Выбирайте --model so101 для SO-101, --model so102 для SO-102. Без параметра выбирается SO-102. Модели и сетки включены в исходники. Именованный файл поз POSES.json не является журналом просмотрщика: сначала его воспроизводят управляющим инструментом, затем открывают получившийся event log.
Проверить преобразование положения
Калибровка и отображение — разные операции:
angle = referenceRadians + (counts − referenceCount) × radiansPerCount
Отсчёты в журнале уже учитывают коррекцию сервопривода; второй раз вычитать её нельзя.
| Модель | Что предполагается по умолчанию |
|---|---|
| SO-101 | При 2048 все шесть URDF-суставов имеют угол 0°; положительные отсчёты увеличивают угол на 2π/4096 рад за отсчёт |
| SO-102 | При 2048: M1 0°, M2 −3°, M3 1°, M4 1°; вращение запястья и губки отображаются фиксированно |
SO-101 помечается как reference pose assumed: это предположение, не автоматическая проверка совмещения. Отсчёты захвата отображаются как угол энкодера, не как нормализованное открытие 0–100. Карта SO-102 привязана к исходным смещениям конкретной руки.
После новой калибровки сопоставьте физическую опорную позу с углами URDF. Проверьте ещё одну позу и знак небольшого ручного перемещения каждого сустава: одна совпавшая поза не проверяет направление и масштаб. Минимум и максимум энкодера не определяют эти углы автоматически.
Для своей карты скопируйте tools/simulation/so101-encoder-map.json или tools/simulation/encoder-angle-map.json, исправьте параметры и укажите путь:
macOS / Linux
tools/simulation/.venv/bin/python tools/simulation/viewer.py play EVENTS.ndjson --model so101 --mapping MY_MAP.json
Windows PowerShell
.\tools\simulation\.venv\Scripts\python.exe tools/simulation/viewer.py play EVENTS.ndjson --model so101 --mapping MY_MAP.json
MY_MAP.json — ваша карта версии 2 с правильным model, joints, fixedJoints и, если задано, encoderCalibration. Каждый сустав модели должен иметь измеряемое отображение или фиксированное положение. Изменение только проверочных полей калибровки не исправляет физическое преобразование. Смена модели просмотрщика не меняет контроллер оборудования или модель гравитации.
Читать изображение и графики
Измеренная поза и голубое задание — разные величины. Подробная обратная связь C2 содержит промежуточную плановую траекторию; компактная C1 — только измерения, поэтому сравнение использует конечную цель команды. Ошибка относительно конечной точки во время движения не равна ошибке слежения за планом.
Просмотрщик не восстанавливает отсутствующие измерения. Устаревшие данные помечаются; одни команды не делают их свежими. Графики хранят до 20 секунд. Воспроизведение заканчивается последним кадром без автоматического повтора; заменённый или усечённый файл нужно открыть заново.
Клавиши: 1–6 — мотор; G — задание; C — графики; J — суставы; M/R — измеренная/заданная поза; F — качество; H — справка. Сетка является визуальным ориентиром, без столкновений. Геометрия воспроизводится с отключёнными контактами и гравитацией симулятора.
Проверка: модель соответствует руке, две физические позы и направление суставов отображаются правильно, используемый тип обратной связи понятен. Если нет — исправьте карту перед выводами о качестве управления.
Главная раздела · Версия исходников: a995f77. Extension 9.0.