Воспроизводимость
Детерминированные входные данные
Используйте Python 3.12, записывайте версию пакета, выбирайте встроенную сцену и
явно передавайте seed. Минимальный пример фиксирует seed 42, один запрос, две
ключевые точки и отключает pruning:
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 собирают настоящие сцены:
Медленные проверки, multiprocessing и визуализацию следует запускать отдельно, если изменение затрагивает соответствующий код.
Сгенерированные результаты
Записывайте области, измерения, скриншоты и результаты экспериментов только в
игнорируемые каталоги artifacts/ или results/. Не коммитьте CSV, логи, notebook,
отчёты или сгенерированные результаты. Тест политики репозитория проверяет эту
границу релиза для отслеживаемых файлов.
Описание результата
Укажите commit, версии Python и зависимостей, платформу, сцену, все аргументы CLI, seed, доступность solver и состояние кэша моделей. Публикуйте команду или скрипт для воспроизведения утверждения, а не только итоговое число. Репозиторий намеренно не содержит сырой набор benchmark-данных.