roadNetwork

Добавьте дорожную сеть в ведущий сценарий

Описание

OpenDRIVE

пример

roadNetwork(scenario,'OpenDRIVE',filename) дороги импорта из файла дорожной сети OpenDRIVE® в ведущий сценарий. Эта функция поддерживает версию 1.4H [1] спецификации формата OpenDRIVE.

пример

roadNetwork(scenario,'OpenDRIVE','ShowLaneTypes',showLaneTypes) использует пару "имя-значение" 'ShowLaneTypes' чтобы также импортировать маршрут вводят информацию из файла и отобразить его в ведущем сценарии.

HD HERE живая карта

пример

roadNetwork(scenario,'HEREHDLiveMap',lat,lon) дороги импорта от HD HERE Живая Карта [1] (HERE HDLM) дорожная сеть в ведущий сценарий. Функция импортирует дороги, которые являются самыми близкими к координатам широты и долготы, заданным в lat и lon, соответственно.

пример

roadNetwork(scenario,'HEREHDLiveMap',minLat,minLon,maxLat,maxLon) дороги HERE HDLM импорта, которые являются, по крайней мере, частично в географической ограничительной рамке, заданной minLat, minLon, maxLat, и maxLon.

OpenStreetMap

пример

roadNetwork(scenario,'OpenStreetMap',filename) дороги импорта из файла дорожной сети OpenStreetMap® в ведущий сценарий.

Примеры

свернуть все

Создайте пустой ведущий сценарий.

scenario = drivingScenario;

Импортируйте дорожную сеть OpenDRIVE в сценарий.

filePath = 'intersection.xodr';  
roadNetwork(scenario,'OpenDRIVE',filePath);

Постройте сценарий и увеличьте масштаб дорожной сети путем установления пределов осей.

plot(scenario)
xlim([350 800])
ylim([1400 2000])
zlim([0.00 10.00])

Создайте пустой ведущий сценарий.

scenario = drivingScenario;

Импортируйте ОПЕНДРАЙВ-Роуд, состоявшую из управления и парковки маршрутов в сценарий. По умолчанию функция интерпретирует информацию о типе маршрута и импортирует маршруты в ведущий сценарий, не изменяя тип маршрута.

filePath = 'parking.xodr';  
roadNetwork(scenario,'OpenDRIVE',filePath);

Постройте сценарий.

plot(scenario)
zoom(2)
legend('Driving lane','Parking lane')

Импортируйте ОПЕНДРАЙВ-Роуд в сценарий. Установите 'ShowLaneTypes' значение к false подавить несколько типов маршрута. Функция игнорирует информацию о типе маршрута и импортирует все маршруты как ведущие маршруты.

scenario = drivingScenario;
roadNetwork(scenario,'OpenDRIVE',filePath,'ShowLaneTypes',false);
plot(scenario)
zoom(2)

Импортируйте данные о дорожной сети HERE HDLM, которые являются самыми близкими к координатам заданного ведущего маршрута в ведущий сценарий. Постройте транспортное средство после этого маршрута в ведущем сценарии.

Загрузите последовательность географических координат, которые соответствуют ведущему маршруту.

data = load('geoSequence.mat');
lat = data.latitude;
lon = data.longitude;

Отобразите маршрут путем потоковой передачи координат на географическом проигрывателе. Установите уровень изменения масштаба на 14 и сконфигурируйте проигрыватель, чтобы отобразить все точки в его истории. Чтобы ускорить потоковую передачу, постройте только каждую десятую координату в маршруте.

zoomLevel = 14;
player = geoplayer(lat(1),lon(1),zoomLevel,'HistoryDepth',Inf);
timestep = 10;

for i = 1:timestep:length(lat)
    plotPosition(player,lat(i),lon(i));
end

Создайте ведущий сценарий. Импортируйте данные о дороге HERE HDLM, которые являются самыми близкими к ведущему маршруту в сценарий.

scenario = drivingScenario;
roadNetwork(scenario,'HEREHDLiveMap',lat,lon);

Используйте latlon2local функционируйте, чтобы преобразовать ведущий маршрут от географических координат до локальных Декартовых координат "восточного севера" (ENU), используемых в ведущем сценарии. Для источника системы координат ENU используйте географический источник дорожной сети, сохраненный в GeoReference свойство сценария. Источник является первой координатой, заданной в ведущем маршруте. Поскольку ведущий маршрут содержит только широтные и продольные данные, установите высоту на 0.

alt = 0;
origin = scenario.GeoReference;
[xEast,yNorth,zUp] = latlon2local(lat,lon,alt,origin);

Добавьте транспортное средство в ведущий сценарий. Задайте конвертированный ведущий маршрут как траекторию транспортного средства. Установите скорость транспортного средства 30 метров в секунду.

v = vehicle(scenario,'ClassID',1);
speed = 30;
trajectory(v,[xEast,yNorth,zUp],speed);

Постройте сценарий и сделайте паузу каждую 0.01 секунды, чтобы замедлить симуляцию. Чтобы обеспечить то же выравнивание с географическими координатными отображениями, Ось X находится на нижней части, и Ось Y слева. В ведущих сценариях, не импортированных из карт, Ось X слева, и Ось Y находится на нижней части. Это выравнивание сопоставимо с системой мировой координаты Automated Driving Toolbox™.

После нескольких секунд транспортное средство, кажется, управляет под дорогой. Эта проблема происходит, потому что конвертированная траектория не содержит высотных данных, но импортированная дорожная сеть делает. Чтобы избежать этой проблемы, если вы задаете ведущий маршрут, зарегистрированный от GPS, включают высотные данные.

plot(scenario)
while advance(scenario)
    pause(0.01)
end

Импортируйте данные о дорожной сети HERE HDLM в ведущий сценарий. Выберите эти данные из области, которая сосредоточена вокруг заданной географической координаты.

Задайте координаты широты и долготы, соответствующие кольцу.

latCenter = 42.302324;
lonCenter = -71.384970;

Задайте минимальные и максимальные широтные и продольные координаты для прямоугольной области вокруг кольца. Отобразите ограничительную рамку, соответствующую этой области на географическом графике.

offset = 5e-4;
minLat = latCenter - offset;
minLon = lonCenter - offset;
maxLat = latCenter + offset;
maxLon = lonCenter + offset;

gx = geoaxes;
LineSpec = '.-k';
geoplot(gx, ...
        [minLat maxLat],[minLon minLon],LineSpec, ...
        [maxLat maxLat],[minLon maxLon],LineSpec, ...
        [maxLat minLat],[maxLon maxLon],LineSpec, ...
        [minLat minLat],[maxLon minLon],LineSpec)

Создайте ведущий сценарий и импортируйте дороги из области при помощи минимальных и максимальных координат. roadNetwork функционируйте импортирует дороги, которые являются, по крайней мере, частично в этой области.

scenario = drivingScenario;
roadNetwork(scenario,'HEREHDLiveMap',minLat,minLon,maxLat,maxLon);

Постройте сценарий. Чтобы обеспечить то же выравнивание с географическими координатными отображениями, Ось X находится на нижней части, и Ось Y слева. В ведущих сценариях, не импортированных из карт, Ось X слева, и Ось Y находится на нижней части. Это выравнивание сопоставимо с системой мировой координаты Automated Driving Toolbox™.

plot(scenario) 

Импортируйте дороги из веб-сервиса OpenStreetMap® в ведущий сценарий. Затем постройте транспортное средство после маршрута в импортированной дорожной сети.

Импортируйте дорожную сеть кампуса MathWorks® Apple Hill в пустой ведущий сценарий. Файл был загружен с https://www.openstreetmap.org, который обеспечивает доступ к полученным толпой данным о карте во всем мире. Данные лицензируются под Открытыми Данными палата общин Открытая Лицензия Базы данных (ODbL), https://opendatacommons.org/licenses/odbl/.

Постройте импортированную дорожную сеть. Чтобы обеспечить то же выравнивание с географическими координатными отображениями, Ось X находится на нижней части, и Ось Y слева. В ведущих сценариях, не импортированных из карт, Ось X слева, и Ось Y находится на нижней части. Это выравнивание сопоставимо с системой мировой координаты Automated Driving Toolbox™.

scenario = drivingScenario;
roadNetwork(scenario,'OpenStreetMap','applehill.osm');
plot(scenario)

Загрузите координаты широты и долготы для ведущего маршрута в этой дорожной сети.

data = load('geoRouteAH.mat');
lat = data.latitude;
lon = data.longitude;

Используйте latlon2local функционируйте, чтобы преобразовать ведущий маршрут от географических координат до локальных Декартовых координат "восточного севера" (ENU), используемых в ведущем сценарии. Для источника системы координат ENU используйте географический источник дорожной сети, сохраненный в GeoReference свойство сценария. Источник является первой координатой, заданной в ведущем маршруте. Поскольку ведущий маршрут содержит только широтные и продольные данные, установите высоту на 0.

alt = 0;
origin = scenario.GeoReference;
[xEast,yNorth,zUp] = latlon2local(lat,lon,alt,origin);

Добавьте транспортное средство в ведущий сценарий. Задайте конвертированный ведущий маршрут как траекторию транспортного средства. Установите скорость транспортного средства 30 метров в секунду. Постройте траекторию транспортного средства и сделайте паузу каждую 0.01 секунды, чтобы замедлить симуляцию.

v = vehicle(scenario,'ClassID',1);
speed = 30;
trajectory(v,[xEast,yNorth,zUp],speed);

while advance(scenario)
    pause(0.01)
end

Входные параметры

свернуть все

Ведущий сценарий в виде drivingScenario объект. scenario не должен содержать ранее созданные или импортированные дороги.

Имя файла дорожной сети в виде вектора символов или строкового скаляра.

filename должен задать файл в текущей папке, файл, который находится на пути поиска файлов MATLAB® или полном или относительном пути к файлу.

filename должен закончиться расширением файла, которое допустимо для источника дорожной сети.

Источник дорожной сетиРасширения правильного файлаДемонстрационный синтаксис
OpenDRIVE

.xodr

.xml

roadNetwork(scenario, ...
    'OpenDRIVE','C:\Desktop\roads.xodr'
OpenStreetMap

.osm

.xml

roadNetwork(scenario, ...
    'OpenStreetMap','C:\Desktop\map.osm'

Импортируйте информацию о типе маршрута из файла дорожной сети OpenDRIVE и отобразите его в ведущем сценарии в виде разделенной запятой пары, состоящей из 'ShowLaneTypes' и одно из этих значений:

  • true или 1 — информация о типе маршрута Импорта и типы маршрута рендеринга.

  • false или 0 — Проигнорируйте информацию о типе маршрута и импортируйте все маршруты как ведущие маршруты в ведущем сценарии.

Таблица суммировала поддерживаемые типы маршрута и их внешний вид по умолчанию после импорта их в ведущий сценарий.

Поддерживаемые типы маршрутаОписаниеВнешний вид по умолчанию
Ведущие маршрутыМаршруты для управления

Ограничьте маршрутыМаршруты на дорожных границах

Ограниченные маршрутыМаршруты зарезервированы для многоместных транспортных средств

Маршруты плечаМаршруты зарезервированы для чрезвычайной остановки

Парковка маршрутовМаршруты вместе с ведущими маршрутами, предназначенными для парковки транспортных средств

Любые другие неподдерживаемые типы маршрута представляются как маршруты границы.

Пример: 'ShowLaneTypes',false

Широта координирует в виде вектора из элементов в области значений [–90, 90]. lat должен быть одного размера с lon. Модули в градусах.

Долгота координирует в виде вектора из элементов в области значений [–180, 180]. lon должен быть одного размера с lat. Модули в градусах.

Минимальная координата широты ограничительной рамки в виде скаляра в области значений [–90, 90]. minLat должен быть меньше maxLat. Модули в градусах.

roadNetwork функционируйте импортирует любые дороги, которые являются, по крайней мере, частично в ограничительной рамке, заданной входными параметрами minLat, minLon, maxLat, и maxLon. Эта схема отображает отношение между этими координатами.

Минимальная координата долготы ограничительной рамки в виде скаляра в области значений [–180, 180]. minLon должен быть меньше maxLon. Модули в градусах.

roadNetwork функционируйте импортирует любые дороги, которые являются, по крайней мере, частично в ограничительной рамке, заданной входными параметрами minLat, minLon, maxLat, и maxLon. Эта схема отображает отношение между этими координатами.

Максимальная координата широты ограничительной рамки в виде скаляра в области значений [–90, 90]. maxLat должен быть больше minLat. Модули в градусах.

roadNetwork функционируйте импортирует любые дороги, которые являются, по крайней мере, частично в ограничительной рамке, заданной входными параметрами minLat, minLon, maxLat, и maxLon. Эта схема отображает отношение между этими координатами.

Максимальная координата долготы ограничительной рамки в виде скаляра в области значений [–180, 180]. maxLon должен быть больше minLon. Модули в градусах.

roadNetwork функционируйте импортирует любые дороги, которые являются, по крайней мере, частично в ограничительной рамке, заданной входными параметрами minLat, minLon, maxLat, и maxLon. Эта схема отображает отношение между этими координатами.

Ограничения

Ограничения импорта OpenDRIVE

  • Можно импортировать только маршруты, информацию о типе маршрута и дороги. Импорт дорожных объектов и сигналов трафика не поддерживается.

  • Файлы OpenDRIVE, содержащие большие дорожные сети, могут взять до нескольких минут, чтобы загрузить. Примеры больших дорожных сетей включают единицы, которые моделируют дороги города или единиц с дорогами, которые являются тысячами метров долго.

  • Маршруты с переменными ширинами не поддерживаются. Ширина установлена в самую высокую ширину, найденную в том маршруте. Например, если маршрут имеет ширину, которая варьируется от 2 метров до 4 метров, функция устанавливает ширину маршрута на 4 метра повсюду.

  • Дороги с маршрутом вводят информацию, указанную как driving'Граница' , restricted, shoulder, и parking поддерживаются. Маршруты с любой другой информацией о типе маршрута импортируются как маршруты границы.

  • Дороги с несколькими стилями маркировки маршрута не поддерживаются. Функция применяет первую найденную маркировку стиля ко всем маршрутам на дороге. Например, если дорога имеет Dashed и Solid маркировки маршрута, функция применяет Dashed маркировки маршрута повсюду.

  • Маршрут, отмечающий стили Bott Dots, Curbs, и Grass не поддерживаются. Маршруты с этими стилями маркировки импортируются как не отмеченные.

HD HERE живые ограничения импорта карты

При импортировании данных HERE HDLM они не поддерживаются дорога и функции маршрута:

  • Маршруты с различными ширинами — В сгенерированной дорожной сети, каждый маршрут собирается найти максимальную ширину вдоль ее целой длины. Рассмотрите маршрут HERE HDLM с шириной, которая варьируется от 2 до 4 метров вдоль ее длины. В сгенерированной дорожной сети ширина маршрута составляет 4 метра вдоль своей целой длины.

  • Дороги с различными количествами маршрутов вдоль их длин — В сгенерированной дорожной сети, каждая дорога будет иметь максимальное количество маршрутов вдоль его целой длины. Рассмотрите ХЕР ХДЛМ-Роуд с 3 маршрутами на одной половине и 2 маршрутами на другой половине. В сгенерированной дорожной сети дорога имеет 3 маршрута вдоль своей целой длины.

  • Несколько стилей маркировки маршрута вдоль маршрута — В сгенерированной дорожной сети, каждый маршрут будет иметь стиль маркировки сегмента маршрута с максимальной шириной вдоль дороги. Рассмотрите маршрут HERE HDLM с 2 сегментами маршрута. Первый сегмент маршрута 2 метра шириной и имеет серьезные маркировки. Второй сегмент маршрута 4 метра шириной и подчеркнул штриховой линией маркировки. В сгенерированной дорожной сети маршрут имеет фиксированную ширину 4 метров повсюду и подчеркнутые штриховой линией маркировки вдоль ее целой длины.

Эти модификации к дорожным сетям могут иногда заставлять дороги перекрываться в ведущем сценарии. Считайте дороги HERE HDLM для шоссе подсвеченными в синем в таблице. Из-за неподдерживаемых функций, в импортированном ведущем сценарии, ширинах маршрута увеличения дорог. Это ограничение заставляет дороги перекрываться и появляться как одна дорога. Датчики, которые обнаруживают маршруты, не могут обнаружить покрытые маршруты.

Дорожная сеть HERE HDLMИмпортированный ведущий сценарий

Если вы получаете предупреждение, что геометрия дороги не может быть вычисленной, то искривление дороги слишком резко для нее, чтобы представить правильно, и она не импортируется.

Ограничения импорта OpenStreetMap

При импортировании данных OpenStreetMap дорога и функции маршрута имеют эти ограничения:

  • Информация об уровне маршрута не импортируется из дорог OpenStreetMap. Технические требования маршрута базируются только на направлении перемещения, заданного в дорожной сети OpenStreetMap, где:

    • Односторонние дороги импортируются как однополосные дороги с техническими требованиями маршрута по умолчанию. Эти маршруты программно эквивалентны lanespec(1).

    • Двухсторонние дороги импортируются как дороги 2D маршрута с двунаправленным перемещением и техническими требованиями маршрута по умолчанию. Эти маршруты программно эквивалентны lanespec([1 1]).

    Таблица показывает эти различия в дорожной сети OpenStreetMap и дорожной сети в импортированном ведущем сценарии.

    Дорожная сеть OpenStreetMapИмпортированный ведущий сценарий

    Two one-way roads gradually taper into one lane.

    Two single-lane roads, with no direction of travel indicated, abruptly transition into a two-lane road with bidirectional travel.

  • Когда импорт дорожных сетей OpenStreetMap, которые задают данные о вертикальном изменении, если данные о вертикальном изменении не заданы для всех импортируемых дорог, то сгенерированная дорожная сеть может содержать погрешности и некоторые дороги, может перекрыться.

  • Основная карта, используемая в приложении, может иметь незначительные различия от карты, используемой в сервисе OpenStreetMap. Некоторые импортированные дорожные проблемы могут также произойти из-за пропавших без вести или неточных данных о карте в сервисе OpenStreetMap. Чтобы проверять, отсутствуют ли данные или неточные из-за картографического сервиса, рассмотрите просмотр данных о карте по внешнему средству просмотра карты.

  • Если вы получаете предупреждение, что геометрия дороги не может быть вычисленной, то искривление дороги слишком резко для нее, чтобы представить правильно, и она не импортируется.

Советы

  • Если дороги, которые вы импортируете, не смотрят как ожидалось, рассматривают импорт их при помощи приложения Driving Scenario Designer. Приложение может сделать процесс из поиска и устранения неисправностей и исправления дорог легче, чем попытка диагностировать и откорректировать их при помощи roadNetwork функция.

Ссылки

[1] Дюпюи, Мариус, и др. Спецификация Формата OpenDRIVE. Версия 1.4, Выпуск H, Документ № VI2014.106. Бад-Айблинг, Германия: VIRES Simulationstechnologie GmbH, 4 ноября 2015.

Введенный в R2018b

[1]  Необходимо заключить отдельное соглашение с HERE для того, чтобы получить доступ к сервисам HDLM и получить необходимые учетные данные (access_key_id и access_key_secret) для использования Сервиса HERE.