Skip to content

Воспроизводимость

Детерминированные входные данные

Используйте Python 3.12, записывайте версию пакета, выбирайте встроенную сцену и явно передавайте seed. Минимальный пример фиксирует seed 42, один запрос, две ключевые точки и отключает pruning:

online-gcs --scene SINGLE_SHELF --iterations 1 --keypoints 2 --prune-interval 0 --seed 42

Seed управляет поддерживаемыми случайными выборами, но не делает время solver, загрузку assets, порядок multiprocessing или числа с плавающей точкой идентичными на всех платформах.

Визуальные материалы

Установите необязательную зависимость для захвата. В одном терминале запустите фиксированный сценарий планировщика, который оставляет финальную сцену Meshcat доступной для проверки:

python -m pip install -e '.[demo]'
online-gcs --scene SINGLE_SHELF --seed 42 --paper-figure --figure-target-idx 1 --keypoints 10 --visualize --figure-hold-seconds 30

Пока действует 30-секундный hold, подставьте напечатанный URL Meshcat в следующую команду. Путь macOS необязателен: скрипт сам ищет системный Chrome или Chromium. Если ничего не найдено, опускайте параметр только при уже установленном браузере Chromium для Playwright:

python scripts/capture_demo.py --url http://localhost:7001 --output-dir artifacts/demo --width 1280 --height 720 --frames 5 --browser-executable "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

Скрипт принимает только loopback HTTP(S) URL, удаляет из выбранного каталога старые нумерованные кадры и не затрагивает остальные файлы. Проверьте все пять кадров. Только если они содержат настоящие изменения состояния, соберите их командой с ограничением числа кадров, которую печатает скрипт:

ffmpeg -y -framerate 2 -i artifacts/demo/frame-%02d.png -vf "scale=960:-2:flags=lanczos" -frames:v 5 -loop 0 docs/assets/online-expansion.gif

В репозитории опубликованы три проверенных изображения сцен, а не сгенерированный GIF. Храните локальные кадры и GIF в игнорируемых путях, пока каждый кадр не будет проверен, а последовательность не покажет настоящее поведение планировщика.

Проверки

Установите дополнения разработки и документации, затем проверьте публичное дерево, unit- и repository-тесты, стиль и документацию:

python -m pip install -e '.[dev,docs]'
python scripts/check_public_tree.py
pytest tests/unit tests/repo
ruff check .
mkdocs build --strict

Integration- и smoke-тесты Drake собирают настоящие сцены:

pytest tests/integration tests/smoke -m "not slow and not visualization"

Медленные проверки, multiprocessing и визуализацию следует запускать отдельно, если изменение затрагивает соответствующий код.

Сгенерированные результаты

Записывайте области, измерения, скриншоты и результаты экспериментов только в игнорируемые каталоги artifacts/ или results/. Не коммитьте CSV, логи, notebook, отчёты или сгенерированные результаты. Тест политики репозитория проверяет эту границу релиза для отслеживаемых файлов.

Описание результата

Укажите commit, версии Python и зависимостей, платформу, сцену, все аргументы CLI, seed, доступность solver и состояние кэша моделей. Публикуйте команду или скрипт для воспроизведения утверждения, а не только итоговое число. Репозиторий намеренно не содержит сырой набор benchmark-данных.