Приложение Driving Scenario Designer позволяет вам создавать сценарии вождения в интерактивном режиме и генерировать синтетические данные о датчике для проверки ваших автоматических алгоритмов вождения. В сценариях вождения, которые представляют географические местоположения, можно добавить датчик, который запирает измерения от инерционной навигационной системы (INS) и глобальной навигационной спутниковой системы (GNSS), такой как GPS, и сгенерировать слитые измерения. Затем можно экспортировать эти синтетические данные инерционного датчика в MATLAB® для последующего анализа.
Чтобы сгенерировать реалистичные данные INS и GNSS-датчика из приложения, необходимо использовать дорожную сеть, которая основана на реальном географическом положении. Этот пример использует дорожную сеть, которая импортируется из OpenStreetMap®. Это та же дорожная сеть, которая используется в примере импорта данных OpenStreetMap в сценарий вождения.
Откройте приложение Driving Scenario Designer.
drivingScenarioDesigner
На панели инструментов приложения выберите Import и затем OpenStreetMap.
В диалоговом окне Импорт OpenStreetMap найдите этот файл, где
является корнем папки MATLAB:matlabroot
matlabroot/examples/driving/data/applehill.osm
Файл был загружен из https://www.openstreetmap.org
, который обеспечивает доступ к картографическим данным, полученным с использованием массовых источников, по всему миру. Данные лицензированы под лицензией Open Data Commons Open Database License (ODbL), https://opendatacommons.org/licenses/odbl/
.
После загрузки файла в Select Roads разделе диалогового окна отображается дорожная сеть для MathWorks® Кампус Apple Hill.
Чтобы сохранить сценарий вождения простым для этого примера, щелкните, чтобы выбрать только нижний левый сегмент дороги для импорта.
Нажмите Import. Приложение импортирует дорогу и генерирует дорожную сеть.
Чтобы создать траекторию, совместимую с показаниями датчиков INS и GNSS, траектория должна быть плавной, с минимальным рывком и без разрывов в ускорении. Создайте актёра и задайте траекторию, которая следует по дороге.
На панели инструментов приложения выберите Add Actor и затем Car.
На Scenario Canvas нажмите, чтобы добавить автомобиль в правый конец дороги.
Щелкните автомобиль правой кнопкой мыши и выберите Add Forward Waypoints. Затем щелкните, чтобы добавить путевые точки по длине дороги. Когда вы добавляете последнюю путевую точку, нажмите Enter, чтобы зафиксировать траекторию к дороге.
При помощи значений траектории по умолчанию машина перемещается с постоянной скоростью 30 м/с (около 67 миль/ч) через каждую путевую точку. Эта скорость подходит для сценария шоссе, но не для географического положения, используемого в этом примере. Уменьшите скорость машины до 5 м/с (около 11 миль в час), и задайте более медленные скорости вокруг поворота.
На вкладке Actors слева в разделе Trajectory установите Constant Speed (m/s) 5
. В таблице Waypoints, Speeds, Wait Times, and Yaw приложение уменьшает значения v (m/s) от 30
на 5
.
Для точек пути вокруг поворота уменьшите значения v (m/s) до 4
. В этой выборочной траектории машина замедляется до 4 м/с, когда достигает путевой точки 5, поддерживает эту скорость через путевые точки 6 и 7 и скорость назад до 5 м/с к моменту достижения путевой точки 8.
Выберите Use smooth, jerk-limited trajectory, который является необходимым параметром для работы с симуляцией датчика INS.
Если вы получите ошибку, что приложение не может создать плавную траекторию, попробуйте внести следующие изменения:
Увеличьте расстояние между путевыми точками, где машина уменьшает скорость (между путевыми точками 4 и 5 на предыдущем изображении). Увеличенное расстояние дает автомобилю больше времени для замедления. Точно так же можно также продлить расстояние между путевыми точками, где машина увеличивает скорость (между путевыми точками 7 и 8 на предыдущем изображении).
Уменьшите значения скорости и проверьте, что различие в скорости между путевыми точками не слишком велика. Используя предыдущее изображение в качестве примера, если бы вы указали скорость 10 м/с для последней путевой точки, у автомобиля не хватило бы пространства для разгона до этой скорости с 4 м/с.
Увеличьте толчок (м/с3) значение параметров. Увеличение этого значения увеличивает количество возможных траекторий, которые приложение может вычислить за счет снижения комфорта для пассажиров-людей.
Установите датчик INS на автомобиль.
На панели инструментов приложения нажмите Add INS.
На Sensor Canvas щелкните, чтобы добавить датчик INS в предопределенное положение Rear Window. Размещение датчика в этом месте устанавливает датчик в автомобиль , оборудованный датчиком источника.
(Необязательно) На вкладке Sensors слева измените параметры измерения датчика. Для примера можно изменить точность показаний рыскания, тангажа и крена или точность измерения положения, скорости и ускорения.
Сгенерируйте данные INS из сценария путем моделирования сценария. На панели инструментов приложения нажмите Run. Этот Bird's-Eye Plot не показывает данных о датчике, потому что приложение не поддерживает визуализацию датчика INS.
Если симуляция выполняется слишком медленно, учитывая медленные скорости, используемые в траектории, увеличьте шаг расчета сценария. На панели инструментов приложения нажмите Settings и измените параметр Sample Time (ms).
Приложение Driving Scenario Designer позволяет вам экспортировать данные из последнего запуска симуляции. Экспортируйте данные датчика сценария в рабочее пространство MATLAB и просмотрите сгенерированные измерения INS.
На панели инструментов приложения выберите Export и затем Export Sensor Data.
Назовите переменную данных датчика, которая будет экспортирована sensorData
и нажмите OK.
Исследуйте экспортированные данные о датчике. Экспортированные данные являются массивом структур, содержащим положения актёра и данные о датчике на каждом временном шаге симуляции. Поскольку сценарий не содержит датчиков, которые производят обнаружения объектов, обнаружение маршрута или облака точек, соответствующие поля структуры являются пустыми массивами. Количество структур, показанных здесь, отличается от количества в экспортированной переменной.
sensorData
sensorData = 1×89 struct array with fields: Time ActorPoses ObjectDetections LaneDetections PointClouds INSMeasurements
Просмотрите данные для первого измерения INS. Измерения INS хранятся в массиве ячеек структур. Поскольку сценарий содержит только один датчик INS, массив ячеек имеет только одну структуру. Поля структуры измерения INS совпадают с полями, создаваемыми при генерации измерений из insSensor
Системные object™. Показанное здесь измерение INS будет отличаться от измерения экспортированной переменной.
sensorData(1).INSMeasurements{:}
ans = struct with fields: Orientation: [0.5389 0.4500 160.6807] Position: [-48.1293 -72.3647 0.9084] Velocity: [-4.7473 1.6082 -0.0525] Acceleration: [7.0945e-11 2.0255e-10 0] AngularVelocity: [3.0819e-15 -1.5500e-15 -2.4593e-09]
Кроме того, выбрав Export, а затем MATLAB Function из приложения, можно экспортировать функцию MATLAB для воспроизведения сценария и датчика INS в командной строке MATLAB. Датчик INS, возвращенный этой функцией, является insSensor
Системный объект.