Создание сценария
Начните с работающего сценария, близкого к вашему эксперименту. Для сценария только с CARLA требуется YAML-файл OpenCDA. Добавляйте ресурсы SUMO только для совместной симуляции, а конфигурацию Artery - только при использовании CAPI.
Создание YAML OpenCDA
В репозитории OpenCDA:
cp opencda/scenario_testing/config_yaml/v2xp_datadump_town06_carla.yaml \
opencda/scenario_testing/config_yaml/my_scenario.yaml
Измените карту, точки появления агентов, пункты назначения, датчики и поведение. Средство запуска объединяет файл с config_yaml/default.yaml. ID транспортных средств и RSU должны быть уникальны в пределах соответствующего типа агента. AdvCP использует ID времени выполнения, например cav-5 и rsu-1. Атаки на сервисы поведения выбираются независимо через список attacks верхнего уровня.
При запущенной CARLA и заданном CARLA_HOST в контейнере OpenCDA:
python opencda.py -t my_scenario --carla-host "$CARLA_HOST" --ticks 200
Сценарий во вложенном каталоге выбирается по относительному пути, например -t advcp-scenarios/advcp_check. Перед добавлением совместной симуляции проверьте запуск только с CARLA. Для проверки координат и подготовки ресурсов карты используйте Карты и ресурсы SUMO.
Добавление SUMO
Создайте sumo/assets/my_scenario/ в рабочем каталоге CAVISE. Используйте дорожную сеть из sumo/assets/maps/, соответствующую карте CARLA, или создайте её по инструкции Карты и ресурсы SUMO.
Файл |
Назначение |
|---|---|
|
Ссылается на маршруты, сеть, необязательные полигоны и настройки симуляции. |
|
Маршруты или потоки транспортных средств с допустимыми ID рёбер сети. |
|
Дорожная сеть SUMO. Может использоваться несколькими сценариями на одной карте. |
|
Необязательная статическая геометрия для визуализации и моделей распространения сигнала. |
Пути внутри .sumocfg задаются относительно этого файла конфигурации. Например, v2xp_datadump_town06_carla.sumocfg ссылается на ../maps/Town06/Town06.net.xml, а не копирует сеть в каталог сценария.
Задайте подключение SUMO в YAML OpenCDA (эти значения также могут наследоваться из default.yaml):
sumo:
host: sumo
port: 3000
gui: false
client_order: 2
step_length: ${world.fixed_delta_seconds}
Запустите сервер с необходимым числом клиентов, затем запустите OpenCDA с --cosim. Команды приведены в SUMO и Artery. Согласуйте длительность шага сервера с world.fixed_delta_seconds и убедитесь, что маршруты ссылаются на существующие рёбра. Добавьте трафик или корректное долгоживущее транспортное средство, чтобы эксперимент не завершился раньше его клиентов.
Добавление Artery
Для первого запуска CAPI используйте общую конфигурацию artery/scenarios/capi из SUMO и Artery. Она подключается к отдельному контейнеру SUMO через порт 3000. Это позволяет не дублировать файлы сети и маршрутов в Artery.
Для пользовательской конфигурации Artery используйте базовый сценарий capi как образец. Сохраните *.withCAPI = true, конечную точку CAPI и параметры подключения TraCI. При двух клиентах задайте порядковый номер 1 для Artery и 2 для OpenCDA и запускайте SUMO с --num-clients 2.
Сценарий с PosixLauncher запускает собственный процесс SUMO. Сценарий с ConnectLauncher подключается к отдельно запущенному серверу. Не смешивайте эти два способа запуска в одном эксперименте. При добавлении цели запуска CMake следуйте примеру artery/scenarios/CMakeLists.txt и пересоберите Artery.
Сервисы и атаки
Сервисы поведения описывает многократно используемые сервисы CAV/RSU и их конфигурацию.
Фреймворк атак описывает атаки на эти сервисы.
AdvCP описывает атаки на кооперативное восприятие.
Сначала проверьте базовый вариант без атак, затем включайте по одному изменению и сравнивайте Запись и результаты.