Первая симуляция
Запустите v2xp_datadump_town06_carla в CARLA Town06. Сначала выполните инструкции из Установка. В этом примере используются CARLA и базовая OpenCDA. SUMO, Artery и обучаемое кооперативное восприятие добавляются при необходимости в последующих руководствах.
Создание контейнеров
Выполните команду из корня CAVISE в Linux Bash или Ubuntu в WSL2:
./run.sh build carla opencda-minimal
./run.sh up carla opencda-minimal
CARLA запускается в Windows, поэтому здесь соберите только OpenCDA:
./run.sh build opencda-minimal
./run.sh up opencda-minimal
Убедитесь, что контейнер запущен и имеет доступ к GPU:
docker ps
docker exec opencda nvidia-smi
Команда up создаёт контейнеры, ожидающие с помощью sleep infinity. Далее явно запустите CARLA и сценарий в отдельных терминалах.
Запуск CARLA
Не закрывайте этот терминал, пока выполняется сценарий.
В Linux Bash:
docker exec -it carla bash
./CarlaUE4.sh -quality-level=Low
Для рендеринга без вывода на экран используйте вместо этого ./CarlaUE4.sh -RenderOffScreen.
В Windows PowerShell перейдите в распакованный каталог CARLA, содержащий CarlaUE4.exe, затем выполните:
.\CarlaUE4.exe -quality-level=Low
Для рендеринга без вывода на экран используйте вместо этого .\CarlaUE4.exe -RenderOffScreen.
Подключение из OpenCDA
В новом терминале Linux/WSL войдите в контейнер OpenCDA:
docker exec -it opencda bash
Оболочка запускается в подключённом репозитории OpenCDA. Задайте адрес CARLA внутри этой оболочки контейнера:
export CARLA_HOST=carla
export CARLA_HOST=host.docker.internal
Этот адрес предоставляется Docker Desktop. Для Docker Engine, установленного отдельно внутри WSL, может потребоваться другой адрес хоста Windows. См. Устранение неполадок.
Во всех последующих руководствах используется --carla-host "$CARLA_HOST". Повторяйте этот экспорт при каждом открытии новой оболочки контейнера. CARLA_HOST - переменная оболочки, используемая в этих примерах. Средство запуска не считывает её автоматически.
Перед запуском запросите версии обоих API и доступность карты Town06:
python - <<'PYTHON'
import os
import carla
client = carla.Client(os.environ["CARLA_HOST"], 2000)
client.set_timeout(30.0)
print("Client:", client.get_client_version())
print("Server:", client.get_server_version())
print("Town06:", [m for m in client.get_available_maps() if m.endswith("/Town06")])
PYTHON
Версии должны совпадать, а Town06 должна присутствовать в списке. Прежде чем продолжить, устраните ошибку подключения или карты.
Запуск сценария
В той же оболочке контейнера OpenCDA:
python opencda.py -t v2xp_datadump_town06_carla \
--carla-host "$CARLA_HOST" --ticks 200
OpenCDA загружает opencda/scenario_testing/config_yaml/v2xp_datadump_town06_carla.yaml поверх default.yaml, инициализирует Town06, создаёт настроенные агенты и запускает симуляцию. Параметр --ticks ограничивает длительность запуска. Он может завершиться раньше, если будут выполнены условия завершения сценария. Журналы и результаты оценки находятся в simulation_output/evaluation_outputs/ в подключённом репозитории OpenCDA.
Используйте --free-spectator, чтобы сохранить ручное управление камерой CARLA. Запись, визуализация и выходные файлы описаны в Запись и результаты.
Остановка и повторный запуск
Дождитесь завершения ограниченного запуска или нажмите Ctrl+C в терминале OpenCDA. Когда CARLA больше не нужна, остановите её с помощью Ctrl+C в соответствующем терминале. Чтобы остановить контейнеры, выполните следующую команду из корня CAVISE в Linux/WSL:
./run.sh stop carla opencda-minimal
./run.sh stop opencda-minimal
Используйте run.sh start с теми же сервисами, чтобы перезапустить существующие контейнеры, а затем снова запустите процессы симулятора. После повторной сборки или смены цели образа используйте up. Команда start не пересоздаёт контейнер.