Сгенерируйте обнаружения видения для ведущего сценария
visionDetectionGenerator
Система object™ генерирует обнаружения от монокулярного датчика камеры, смонтированного на автомобиле, оборудованном датчиком. На все обнаружения ссылаются к системе координат автомобиля, оборудованного датчиком или смонтированного транспортным средством датчика. Можно использовать visionDetectionGenerator
объект в сценарии, содержащем агентов и траектории, которые можно создать при помощи drivingScenario
объект. Используя статистический режим, генератор может симулировать действительные обнаружения с добавленным случайным шумом и также сгенерировать ложные сигнальные обнаружения. Кроме того, можно использовать visionDetectionGenerator
объект создать вход к multiObjectTracker
. При создании сценариев с помощью приложения Driving Scenario Designer датчики камеры, смонтированные на автомобиле, оборудованном датчиком, выводятся как visionDetectionGenerator
объекты.
Сгенерировать визуальные обнаружения:
Создайте visionDetectionGenerator
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
создает объект генератора обнаружения видения со значениями свойств по умолчанию.sensor
= visionDetectionGenerator
создает объект генератора обнаружения видения с помощью sensor
= visionDetectionGenerator(cameraConfig
)monoCamera
объект настройки, cameraConfig
.
свойства наборов с помощью одной или нескольких пар "имя-значение". Например, sensor
= visionDetectionGenerator(Name,Value
)visionDetectionGenerator('DetectionCoordinates','Sensor Cartesian','MaxRange',200)
создает генератор обнаружения видения, который сообщает об обнаружениях в Декартовой системе координат датчика и имеет максимальную область значений обнаружения 200 метров. Заключите каждое имя свойства в кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
DetectorOutput
— Типы обнаружений сгенерированы датчиком'Objects only'
(значение по умолчанию) | 'Lanes only'
| 'Lanes with occlusion'
| 'Lanes and objects'
Типы обнаружений сгенерированы датчиком, заданным как 'Objects only'
, 'Lanes only'
, 'Lanes with occlusion'
, или 'Lanes and objects'
.
Когда установлено в 'Objects only'
, только агенты обнаруживаются.
Когда установлено в 'Lanes only'
, только маршруты обнаруживаются.
Когда установлено в 'Lanes with occlusion'
, только маршруты обнаруживаются, но агенты в поле зрения камеры могут повредить способность к датчику обнаружить маршруты.
Когда установлено в 'Lanes and objects'
, датчик генерирует оба обнаружения объектов и закрытые обнаружения маршрута.
Пример: 'Lanes with occlusion'
Типы данных: char |
string
SensorIndex
— Уникальный идентификатор датчикаУникальный идентификатор датчика, заданный как положительное целое число. Это свойство отличает обнаружения, которые прибывают из различных датчиков в системе мультидатчика.
Пример 5
Типы данных: double
UpdateInterval
— Необходимый временной интервал между обновлениями датчика
| положительный действительный скалярНеобходимый временной интервал между обновлениями датчика, заданными как положительный действительный скаляр. drivingScenario
вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения, с промежутками заданные UpdateInterval
свойство. Значение UpdateInterval
свойство должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений. Модули находятся в секундах.
Пример 5
Типы данных: double
SensorLocation
— Местоположение датчика
| [x y]
векторМестоположение центра датчика видения, заданного как [x y]
. SensorLocation
и Height
свойства задают координаты датчика видения относительно системы координат автомобиля, оборудованного датчиком. Значение по умолчанию соответствует датчику по ходу движения, смонтированному на инструментальной панели транспортного средства. Модули исчисляются в метрах.
Пример: [4 0.1]
Типы данных: double
Height
— Высота датчика наземная плоскость
| положительный действительный скалярВысота датчика выше транспортного средства основывает плоскость, заданную как положительный действительный скаляр. Значение по умолчанию соответствует датчику видения по ходу движения, смонтированному на инструментальной панели седана. Модули исчисляются в метрах.
Пример: 1.5
Типы данных: double
Yaw
— Угол отклонения от курса датчика видения
| действительный скалярУгол отклонения от курса датчика видения, заданного как действительный скаляр. Угол отклонения от курса является углом между центральной линией автомобиля, оборудованного датчиком и осью вниз-области-значений датчика видения. Положительный угол отклонения от курса соответствует по часовой стрелке вращение при взгляде в положительном направлении z - ось системы координат автомобиля, оборудованного датчиком. Модули в градусах.
Пример 4
Типы данных: double
Pitch
— Передайте угол датчика видения
| действительный скалярПередайте угол датчика видения, заданного как действительный скаляр. Угол подачи является углом между осью вниз-области-значений датчика видения и плоскостью x-y системы координат автомобиля, оборудованного датчиком. Положительный угол подачи соответствует по часовой стрелке вращение при взгляде в положительном направлении y - ось системы координат автомобиля, оборудованного датчиком. Модули в градусах.
Пример 3
Типы данных: double
Roll
— Угол вращения датчика видения
| действительный скалярУгол вращения датчика видения, заданного как действительный скаляр. Угол вращения является углом вращения оси вниз-области-значений датчика видения вокруг x - ось системы координат автомобиля, оборудованного датчиком. Положительный угол вращения соответствует по часовой стрелке вращение при взгляде в положительном направлении x - ось системы координат. Модули в градусах.
Пример 4
Типы данных: double
Intrinsics
— Внутренние калибровочные параметры датчика виденияcameraIntrinsics([800 800],[320 240],[480 640])
(значение по умолчанию) | cameraIntrinsics
объектВнутренние калибровочные параметры датчика видения, заданного как cameraIntrinsics
объект.
FieldOfView
— Угловое поле зрения датчика виденияЭто свойство доступно только для чтения.
Угловое поле зрения датчика видения, заданного как с действительным знаком 1 2 вектор положительных значений, [azfov,elfov]
. Поле зрения задает азимут и степени вертикального изменения изображения датчика. Каждый компонент должен лечь в интервале от 0 градусов до 180 градусов. Поле зрения выведено из внутренних параметров датчика видения. Цели за пределами углового поля зрения датчика не обнаруживаются. Модули в градусах.
Типы данных: double
MaxRange
— Максимальная область значений обнаружения
| положительный действительный скалярМаксимальный диапазон обнаружения, указанный как положительный действительный скаляр. Датчик не может обнаружить цель вне этой области значений. Модули исчисляются в метрах.
Пример: 200
Типы данных: double
MaxSpeed
— Максимальная обнаруживаемая объектная скорость
(значение по умолчанию) | неотрицательный действительный скалярМаксимальная обнаруживаемая объектная скорость, заданная как неотрицательный действительный скаляр. Модули исчисляются в метрах в секунду.
Пример: 10.0
Типы данных: double
MaxAllowedOcclusion
— Максимальное позволенное поглощение газов объекта
(значение по умолчанию) | действительный скаляр в области значений (0 1]Максимальное позволенное поглощение газов объекта, заданного как действительный скаляр в области значений [0 1]. Поглощение газов является частью общей площади поверхности объекта, не видимого к датчику. Значение каждый указывает, что объект полностью закрывается. Модули являются безразмерными.
Пример: 0.2
Типы данных: double
DetectionProbability
— Вероятность обнаружения
(значение по умолчанию) | положительный действительный скаляр, меньше чем или равный 1Вероятность обнаружения цели, заданной как положительный действительный скаляр, меньше чем или равный 1. Это количество задает вероятность, что датчик обнаруживает обнаруживаемый объект. detectable object является объектом, который удовлетворяет минимальному обнаруживаемому размеру, максимальной области значений, максимальной скорости и максимальным позволенным ограничениям поглощения газов.
Пример: 0.95
Типы данных: double
FalsePositivesPerImage
— Количество ложных обнаружений на изображение
(значение по умолчанию) | неотрицательный действительный скалярКоличество ложных обнаружений, которые датчик видения генерирует для каждого изображения, заданного как неотрицательный действительный скаляр.
Пример 2
Типы данных: double
MinObjectImageSize
— Минимальный размер изображения обнаруживаемого объекта
(значение по умолчанию) | 1 2 вектор положительных значенийМинимальная высота и ширина объекта, который датчик видения обнаруживает в изображении, заданном как [minHeight,minWidth]
вектор положительных значений. 2D спроектированная высота объекта должна быть больше или быть равна minHeight
. Спроектированная ширина объекта должна быть больше или быть равна minWidth
. Модули находятся в пикселях.
Пример: [30 20]
Типы данных: double
BoundingBoxAccuracy
— Точность ограничительной рамки
(значение по умолчанию) | положительный действительный скалярТочность ограничительной рамки, заданная как положительный действительный скаляр. Это количество задает точность, которой детектор может совпадать с ограничительной рамкой к цели. Модули находятся в пикселях.
Пример 4
Типы данных: double
ProcessNoiseIntensity
— Шумовая интенсивность используется в фильтрации скоростные измерения и положение
(значение по умолчанию) | положительный действительный скалярШумовая интенсивность используется в фильтрации положения и скоростных измерений, заданных как положительный действительный скаляр. Шумовая интенсивность задает стандартное отклонение шума процесса внутреннего Фильтра Калмана постоянной скорости, используемого в датчике видения. Фильтр моделирует шум процесса использование кусочно-постоянной белой шумовой ускоряющей модели. Шумовая интенсивность обычно имеет порядок максимальной ускоряющей величины, ожидаемой для цели. Модули находятся в m/s2.
Пример: 2.5
Типы данных: double
HasNoise
— Позвольте добавить шум в измерения датчика виденияtrue
(значение по умолчанию) | false
Позвольте добавить шум в измерения датчика видения, заданные как true
или false
. Установите это свойство на true
добавить шум в измерения датчика. В противном случае измерения не имеют никакого шума. Даже если вы устанавливаете HasNoise
к false
, объект все еще вычисляет MeasurementNoise
свойство каждого обнаружения.
Типы данных: логический
MaxNumDetectionsSource
— Источник максимального количества обнаружений, о которых сообщают'Auto'
(значение по умолчанию) | 'Property'
Источник максимального количества обнаружений, о которых сообщает датчик, заданный как 'Auto'
или 'Property'
. Когда это свойство установлено в 'Auto'
, датчик сообщает обо всех обнаружениях. Когда это свойство установлено в 'Property'
, датчик сообщает не больше, чем о количестве обнаружений, заданных MaxNumDetections
свойство.
Типы данных: char |
string
MaxNumDetections
— Максимальное количество обнаружений, о которых сообщают,
(значение по умолчанию) | положительное целое числоО максимальном количестве обнаружений сообщает датчик, заданный как положительное целое число. Об обнаружениях, самых близких к датчику, сообщают.
Чтобы включить это свойство, установите MaxNumDetectionsSource
свойство к 'Property'
.
Типы данных: double
DetectionCoordinates
— Система координат обнаружений, о которых сообщают,'Ego Cartesian'
(значение по умолчанию) | 'Sensor Cartesian'
Система координат обнаружений, о которых сообщают, заданных как одно из этих значений:
'Ego Cartesian'
— Об обнаружениях сообщают в Декартовой системе координат автомобиля, оборудованного датчиком.
'Sensor Cartesian'
— Об обнаружениях сообщают в Декартовой системе координат датчика.
Типы данных: char |
string
LaneUpdateInterval
— Необходимый временной интервал между обновлениями обнаружения маршрута
(значение по умолчанию) | положительный действительный скалярНеобходимый временной интервал между обновлениями обнаружения маршрута, заданными как положительный действительный скаляр. drivingScenario
вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения маршрута, с промежутками заданные этим свойством, которое должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений маршрута. Модули находятся в секундах.
Пример: 0.4
Типы данных: double
MinLaneImageSize
— Минимальный размер маршрута в изображении
(значение по умолчанию) | 1 2 вектор с действительным знакомМинимальный размер спроектированного маршрута, отмечающего, который может быть обнаружен датчиком после составления искривления, задал как 1 2 вектор с действительным знаком, [minHeight minWidth]
. Маркировки маршрута должны превысить оба из этих значений, которые будут обнаружены. Это свойство используется только при обнаружении маршрутов. Модули находятся в пикселях.
Пример: [5,7]
Типы данных: double
LaneBoundaryAccuracy
— Точность контуров маршрута
| положительный действительный скалярТочность контуров маршрута, заданных как положительный действительный скаляр. Это свойство задает точность, с которой датчик маршрута может поместить контур маршрута. Модули находятся в пикселях. Это свойство используется только при обнаружении маршрутов.
MaxNumLanesSource
— Источник максимального количества маршрутов, о которых сообщают,'Property'
(значение по умолчанию) | 'Auto'
Источник максимального количества маршрутов, о которых сообщают, заданных как 'Auto'
или 'Property'
. Когда задано как 'Auto'
, максимальное количество маршрутов вычисляется автоматически. Когда задано как 'Property'
, используйте MaxNumLanes
свойство определить максимальный номер или маршруты.
Типы данных: char |
string
MaxNumLanes
— Максимальное количество маршрутов, о которых сообщают,
(значение по умолчанию) | положительное целое числоМаксимальное количество маршрутов, о которых сообщают, заданных как положительное целое число.
Чтобы включить это свойство, установите MaxNumLanesSource
свойство к 'Property'
.
Типы данных: char |
string
ActorProfiles
— Профили агентаПрофили агента, заданные как структура или как массив структур. Каждая структура содержит физические характеристики и радарные характеристики агента.
Если ActorProfiles
одна структура, все агенты передали в visionDetectionGenerator
возразите используют этот профиль.
Если ActorProfiles
массив, каждый агент, переданный в объект, должен иметь уникальный профиль агента.
Чтобы сгенерировать массив структур для вашего ведущего сценария, используйте actorProfiles
функция. Таблица показывает допустимые поля структуры. Если вы не задаете поле, поля установлены в свои значения по умолчанию. Если никакие агенты не передаются в объект, то ActorID
поле не включено.
Поле | Описание |
---|---|
ActorID | Заданный сценарием идентификатор агента, заданный как положительное целое число. |
ClassID | Идентификатор классификации, заданный как неотрицательное целое число. 0 резервируется для объекта неизвестного или неприсвоенного класса. |
Length | Длина агента, заданного как положительный действительный скаляр. Значением по умолчанию является 4.7 . Модули исчисляются в метрах. |
Width | Ширина агента, заданного как положительный действительный скаляр. Значением по умолчанию является 1.8 . Модули исчисляются в метрах. |
Height | Высота агента, заданного как положительный действительный скаляр. Значением по умолчанию является 1.4 . Модули исчисляются в метрах. |
OriginOffset | Смещение вращательного центра агента от его геометрического центра, заданного как [x, y, z] вектор с действительным знаком. Вращательный центр или источник, расположен в нижнем центре агента. Для транспортных средств вращательный центр является точкой на земле ниже центра задней оси. Значением по умолчанию является [0 0 0] . Модули исчисляются в метрах. |
RCSPattern | Радарный шаблон поперечного сечения агента, заданного как numel(RCSElevationAngles) - numel(RCSAzimuthAngles) матрица с действительным знаком. Значением по умолчанию является [10 10; 10 10] . Модули находятся в децибелах на квадратный метр. |
RCSAzimuthAngles | Углы азимута, соответствующие строкам RCSPattern , заданный как вектор действительных значений в области значений [–180, 180]. Значением по умолчанию является [-180 180] . Модули в градусах. |
RCSElevationAngles | Углы вертикального изменения, соответствующие строкам RCSPattern , заданный как вектор действительных значений в области значений [–90, 90]. Значением по умолчанию является [-90 90] . Модули в градусах. |
Для полных определений полей структуры смотрите actor
и vehicle
функции.
создает визуальные обнаружения, dets
= sensor(actors
,time
)dets
, от измерений датчика, проведенных actors
при текущей симуляции time
. Объект может сгенерировать обнаружения датчика для нескольких агентов одновременно. Не включайте автомобиль, оборудованный датчиком как одного из агентов.
Чтобы включить этот синтаксис, установите DetectionOutput
к 'Objects only'
.
генерирует обнаружения маршрута, lanedets
= sensor(laneboundaries
,time
)lanedets
, от граничных структур маршрута, laneboundaries
.
Чтобы включить этот синтаксис устанавливает DetectionOutput
к 'Lanes only'
. Детектор маршрута генерирует контуры маршрута, с промежутками заданные LaneUpdateInterval
свойство.
генерирует обнаружения маршрута, lanedets
= sensor(actors
,laneboundaries
,time
)lanedets
, от граничных структур маршрута, laneboundaries
.
Чтобы включить этот синтаксис, установите DetectionOutput
к 'Lanes with occlusion'
. Детектор маршрута генерирует контуры маршрута, с промежутками заданные LaneUpdateInterval
свойство.
[___,
также возвращает количество допустимых обнаружений, о которых сообщают, numValidDets
]
= sensor(___)numValidDets
.
[___,
также возвращает логическое значение, numValidDets
isValidTime
]
= sensor(___)isValidTime
, указание, что UpdateInterval
время, чтобы сгенерировать обнаружения протекло.
[
возвращает оба обнаружения объектов, dets
,numValidDets
,isValidTime
,lanedets
,numValidLaneDets
,isValidLaneTime
] = sensor(actors
,laneboundaries
,time
)dets
, и обнаружения маршрута lanedets
. Этот синтаксис также возвращает количество допустимых обнаружений маршрута, о которых сообщают, numValidLaneDets
, и флаг, isValidLaneTime
, указание, протекло ли необходимое время симуляции, чтобы сгенерировать обнаружения маршрута.
Чтобы включить этот синтаксис, установите DetectionOutput
к 'Lanes and objects'
.
actors
— Положения агента сценарияПоложения агента сценария, заданные как структура или массив структур. Каждая структура соответствует агенту. Можно сгенерировать эту структуру с помощью actorPoses
функция. Можно также создать эти структуры вручную. Таблица показывает поля что объектное использование, чтобы сгенерировать обнаружения. Все другие поля проигнорированы.
Поле | Описание |
---|---|
ActorID | Заданный сценарием идентификатор агента, заданный как положительное целое число. |
Position | Положение агента, заданного как [x y z] вектор с действительным знаком. Модули исчисляются в метрах. |
Velocity | Скорость (v) агента в x - y - и z - направления, заданные как [v x v y v z] вектор с действительным знаком. Модули исчисляются в метрах в секунду. |
Roll | Угол вращения агента, заданного как действительный скаляр. Модули в градусах. |
Pitch | Передайте угол агента, заданного как действительный скаляр. Модули в градусах. |
Yaw | Угол отклонения от курса агента, заданного как действительный скаляр. Модули в градусах. |
AngularVelocity | Скорость вращения (ω) агента в x - y - и z - направления, заданные как [ω x ω y ω z] вектор с действительным знаком. Модули в градусах в секунду. |
Для полных определений полей структуры смотрите actor
и vehicle
функции.
Чтобы включить этот аргумент, установите DetectorOutput
свойство к 'Objects only'
, 'Lanes with occlusion'
, или 'Lanes and objects'
.
laneboundaries
— Контуры маршрутаКонтуры маршрута, заданные как массив граничных структур маршрута. Таблица показывает поля для каждой структуры.
Поле | Описание |
| Координаты контура маршрута, заданные как N с действительным знаком-by-3 матрица, где N является количеством контуров маршрута. Координаты контура маршрута задают положение точек на контуре на расстояниях, заданных 'XDistance' аргумент пары "имя-значение" laneBoundaries функция. Кроме того, набор граничных координат вставляются в матрицу на нулевом расстоянии. Модули исчисляются в метрах. |
| Искривление контура маршрута в каждой строке Coordinates матрица, заданная как N с действительным знаком-by-1 вектор. N является количеством контуров маршрута. Модули исчисляются в радианах на метр. |
| Производная искривления контура маршрута в каждой строке Coordinates матрица, заданная как N с действительным знаком-by-1 вектор. N является количеством контуров маршрута. Модули исчисляются в радианах на квадратный метр. |
| Начальный контур маршрута направляющийся угол, заданный как действительный скаляр. Направляющийся угол контура маршрута относительно заголовка автомобиля, оборудованного датчиком. Модули в градусах. |
| Расстояние от контура маршрута от положения автомобиля, оборудованного датчиком, заданного как действительный скаляр. Смещение к контуру маршрута слева от автомобиля, оборудованного датчиком положительно. Смещение справа от автомобиля, оборудованного датчиком отрицательно. Модули исчисляются в метрах. |
| Тип маркировки контура маршрута, заданной как одно из этих значений:
|
| Сила насыщения маркировки контура маршрута, заданной как действительный скаляр от 0 до 1. Значение |
| Ширина контура маршрута, заданная как положительный действительный скаляр. В маркере маршрута двойной линии та же ширина используется в обеих линиях и в пробеле между линиями. Модули исчисляются в метрах. |
| Длина тире в пунктирных линиях, заданных как положительный действительный скаляр. В маркере маршрута двойной линии та же длина используется в обеих линиях. |
| Продолжительность пробела между тире в пунктирных линиях, заданных как положительный действительный скаляр. В пунктирном маркере маршрута двойной линии то же пространство используется для обеих линий. |
Чтобы включить этот аргумент, установите DetectorOutput
свойство к 'Lanes only'
, 'Lanes with occlusion'
, или 'Lanes and objects'
.
Типы данных: struct
time
— Текущее время симуляцииТекущее время симуляции, заданное как положительный действительный скаляр. drivingScenario
вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения, с промежутками заданные UpdateInterval
свойство. Значения UpdateInterval
и LanesUpdateInterval
свойства должны быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений. Модули находятся в секундах.
Пример: 10.5
Типы данных: double
dets
— Обнаружения объектовobjectDetection
объектыОбнаружения объектов, возвращенные как массив ячеек objectDetection
объекты. Каждый объект содержит эти поля:
Свойство | Определение |
---|---|
Time | Время измерения |
Measurement | Объектные измерения |
MeasurementNoise | Ковариационная матрица шума измерения |
SensorIndex | Уникальный идентификатор датчика |
ObjectClassID | Предметная классификация |
MeasurementParameters | Параметры используются функциями инициализации нелинейного Кальмана, отслеживающего фильтры |
ObjectAttributes | Дополнительная информация передала средству отслеживания |
Measurement
, MeasurementNoise
, и MeasurementParameters
сообщаются в системе координат, заданной DetectionCoordinates
свойство visionDetectionGenerator
.
Измерение
Свойство DetectionCoordinates | Измерение и координаты шума измерения |
---|---|
'Ego Cartesian' | [x;y;z;vx;vy;vz] |
'Sensor Cartesian' |
MeasurementParameters
Параметр | Определение |
---|---|
Frame | Перечислимый тип, указывающий на систему координат раньше, сообщал об измерениях. Когда Frame установлен в 'rectangular' , об обнаружениях сообщают в Декартовых координатах. Когда Frame набор 'spherical' , об обнаружениях сообщают в сферических координатах. |
OriginPosition | 3-D векторное смещение источника датчика от источника автомобиля, оборудованного датчиком. Вектор выведен из SensorLocation и Height свойства заданы в visionDetectionGenerator . |
Orientation | Ориентация системы координат датчика видения относительно системы координат автомобиля, оборудованного датчиком. Ориентация выведена из Yaw , Pitch , и Roll свойства visionDetectionGenerator . |
HasVelocity | Указывает, содержат ли измерения скорость или компоненты уровня области значений. |
ObjectAttributes
Атрибут | Определение |
---|---|
TargetIndex | Идентификатор агента, ActorID , это сгенерировало обнаружение. Для ложных предупреждений это значение отрицательно. |
numValidDets
— Количество обнаруженийКоличество обнаружений, возвращенных, заданных как неотрицательное целое число.
Когда MaxNumDetectionsSource
свойство установлено в 'Auto'
, numValidDets
установлен в длину dets
.
Когда MaxNumDetectionsSource
установлен в 'Property'
, dets
массив ячеек с длиной, определенной MaxNumDetections
свойство. Не больше, чем MaxNumDetections
количество обнаружений возвращено. Если количество обнаружений - меньше, чем MaxNumDetections
, первый numValidDets
элементы dets
содержите допустимые обнаружения. Остающиеся элементы dets
установлены в значение по умолчанию.
.
Типы данных: double
isValidTime
— Допустимое время обнаружения
| 1
Допустимое время обнаружения, возвращенное как 0
или 1
. isValidTime
0
когда обновления обнаружения время от времени требуют, которые являются между интервалами обновления, заданными UpdateInterval
.
Типы данных: логический
lanedets
— Обнаружения контура маршрутаОбнаружения контура маршрута, возвращенные как структуры массива. Поля структуры:
Структура обнаружения контура маршрута
Поле | Описание |
Time | Время обнаружения маршрута |
SensorIndex | Уникальный идентификатор датчика |
LaneBoundaries | Массив clothoidLaneBoundary объекты. |
numValidLaneDets
— Количество обнаруженийКоличество обнаружений маршрута, возвращенных, заданных как неотрицательное целое число.
Когда MaxNumLanesSource
свойство установлено в 'Auto'
, numValidLaneDets
установлен в длину lanedets
.
Когда MaxNumLanesSource
установлен в 'Property'
, lanedets
массив ячеек с длиной, определенной MaxNumLanes
свойство. Не больше, чем MaxNumLanes
количество обнаружений маршрута возвращено. Если количество обнаружений - меньше, чем MaxNumLanes
, первый numValidLaneDetections
элементы lanedets
содержите допустимые обнаружения маршрута. Остающиеся элементы lanedets
установлены в значение по умолчанию.
.
Типы данных: double
isValidLaneTime
— Допустимое время обнаружения маршрута
| 1
Допустимое время обнаружения маршрута, возвращенное как 0
или 1
. isValidLaneTime
0
когда обновления обнаружения маршрута время от времени требуют, которые являются между интервалами обновления, заданными LaneUpdateInterval
.
Типы данных: логический
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
visionDetectionGenerator
isLocked | Определите, используется ли Системный объект |
Сгенерируйте обнаружения с помощью автомобильного датчика видения по ходу движения, смонтированного на автомобиле, оборудованном датчиком. Примите, что существует два целевых транспортных средства:
Транспортное средство 1 непосредственно перед автомобилем, оборудованным датчиком и перемещающийся на той же скорости.
Транспортное средство 2 транспортных средства управляет быстрее, чем автомобиль, оборудованный датчиком на 12 км/ч в левом маршруте.
Все положения, скорости и измерения относительно автомобиля, оборудованного датчиком. Запустите симуляцию для десяти шагов.
dt = 0.1; car1 = struct('ActorID',1,'Position',[100 0 0],'Velocity', [5*1000/3600 0 0]); car2 = struct('ActorID',2,'Position',[150 10 0],'Velocity',[12*1000/3600 0 0]);
Создайте автомобильный датчик видения, возмещающий местоположение от автомобиля, оборудованного датчиком. По умолчанию местоположение датчика в (3.4,0) метры от центра транспортного средства и 1,1 метра над землей плоскость..
sensor = visionDetectionGenerator('DetectionProbability',1, ... 'MinObjectImageSize',[5 5],'MaxRange',200,'DetectionCoordinates','Sensor Cartesian'); tracker = multiObjectTracker('FilterInitializationFcn',@initcvkf, ... 'ConfirmationParameters',[3 4],'NumCoastingUpdates',6);
Сгенерируйте визуальные обнаружения для агентов неэго, когда они перемещаются. Выходные обнаружения формируют массив ячеек. Извлеките только информацию о положении из обнаружений, чтобы передать multiObjectTracker
, который ожидает только информацию о положении. Обновление средство отслеживания для каждого нового набора обнаружений.
simTime = 0; nsteps = 10; for k = 1:nsteps dets = sensor([car1 car2],simTime); n = size(dets,1); for k = 1:n meas = dets{k}.Measurement(1:3); dets{k}.Measurement = meas; measmtx = dets{k}.MeasurementNoise(1:3,1:3); dets{k}.MeasurementNoise = measmtx; end [confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,dets,simTime); simTime = simTime + dt; car1.Position = car1.Position + dt*car1.Velocity; car2.Position = car2.Position + dt*car2.Velocity; end
Используйте birdsEyePlot
создать вид сверху обнаружений. Постройте зону охвата датчика. Извлеките положения X и Y целей путем преобразования Measurement
поля ячейки в массив MATLAB®. Затем постройте обнаружения с помощью birdsEyePlot
функции.
BEplot = birdsEyePlot('XLim',[0 220],'YLim',[-75 75]); caPlotter = coverageAreaPlotter(BEplot,'DisplayName','Vision Coverage Area'); plotCoverageArea(caPlotter,sensor.SensorLocation,sensor.MaxRange, ... sensor.Yaw,sensor.FieldOfView(1)) detPlotter = detectionPlotter(BEplot,'DisplayName','Vision Detections'); detPos = cellfun(@(d)d.Measurement(1:2),dets,'UniformOutput',false); detPos = cell2mat(detPos')'; if ~isempty(detPos) plotDetection(detPlotter,detPos) end
Создайте датчик видения при помощи монокулярной настройки камеры и сгенерируйте обнаружения от того датчика.
Задайте внутренние параметры камеры и создайте monoCamera
объект от этих параметров. Камера смонтирована сверху автомобиля, оборудованного датчиком на высоте 1,5 метров над землей и подаче 1 степени к земле.
focalLength = [800 800];
principalPoint = [320 240];
imageSize = [480 640];
intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);
height = 1.5;
pitch = 1;
monoCamConfig = monoCamera(intrinsics,height,'Pitch',pitch);
Создайте генератор обнаружения видения с помощью монокулярной настройки камеры.
visionSensor = visionDetectionGenerator(monoCamConfig);
Сгенерируйте ведущий сценарий с автомобилем, оборудованным датчиком и двумя целевыми автомобилями. Расположите первый целевой автомобиль 30 метров непосредственно перед автомобилем, оборудованным датчиком. Расположите второй целевой автомобиль 20 метров перед автомобилем, оборудованным датчиком, но возместите налево на 3 метра.
scenario = drivingScenario; egoVehicle = vehicle(scenario); targetCar1 = vehicle(scenario,'Position',[30 0 0]); targetCar2 = vehicle(scenario,'Position',[20 3 0]);
Используйте видимый с большого расстояния график отобразить основы транспортного средства и зону охвата датчика.
figure bep = birdsEyePlot('XLim',[0 50],'YLim',[-20 20]); olPlotter = outlinePlotter(bep); [position,yaw,length,width,originOffset,color] = targetOutlines(egoVehicle); plotOutline(olPlotter,position,yaw,length,width); caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area','FaceColor','blue'); plotCoverageArea(caPlotter,visionSensor.SensorLocation,visionSensor.MaxRange, ... visionSensor.Yaw,visionSensor.FieldOfView(1))
Получите положения целевых автомобилей с точки зрения автомобиля, оборудованного датчиком. Используйте эти положения, чтобы сгенерировать обнаружения от датчика.
poses = targetPoses(egoVehicle); [dets,numValidDets] = visionSensor(poses,scenario.SimulationTime);
Отобразитесь (X, Y) положения допустимых обнаружений. Для каждого обнаружения, (X, Y) положения являются первыми двумя значениями Measurement
поле .
for i = 1:numValidDets XY = dets{i}.Measurement(1:2); detXY = sprintf('Detection %d: X = %.2f meters, Y = %.2f meters',i,XY); disp(detXY) end
Detection 1: X = 19.09 meters, Y = 2.79 meters Detection 2: X = 27.81 meters, Y = 0.08 meters
Создайте ведущий сценарий, содержащий автомобиль, оборудованный датчиком и целевое транспортное средство, перемещающееся вдоль трехполосной дороги. Обнаружьте контуры маршрута при помощи генератора обнаружения видения.
scenario = drivingScenario;
Создайте трехполосную дорогу при помощи спецификаций маршрута.
roadCenters = [0 0 0; 60 0 0; 120 30 0];
lspc = lanespec(3);
road(scenario,roadCenters,'Lanes',lspc);
Укажите, что автомобиль, оборудованный датчиком следует за центральным маршрутом на уровне 30 м/с.
egovehicle = vehicle(scenario); egopath = [1.5 0 0; 60 0 0; 111 25 0]; egospeed = 30; trajectory(egovehicle,egopath,egospeed);
Укажите, что целевые перемещения транспортного средства перед автомобилем, оборудованным датчиком на уровне 40 м/с и перестраиваются на другую полосу близко к автомобилю, оборудованному датчиком.
targetcar = vehicle(scenario,'ClassID',2);
targetpath = [8 2; 60 -3.2; 120 33];
targetspeed = 40;
trajectory(targetcar,targetpath,targetspeed);
Отобразите график преследования для 3-D представления сценария из-за автомобиля, оборудованного датчиком.
chasePlot(egovehicle)
Создайте генератор обнаружения видения, который обнаруживает маршруты и объекты. Подача датчика указывает одну степень вниз.
visionSensor = visionDetectionGenerator('Pitch',1.0); visionSensor.DetectorOutput = 'Lanes and objects'; visionSensor.ActorProfiles = actorProfiles(scenario);
Запустите симуляцию.
Создайте видимый с большого расстояния график и связанные плоттеры.
Отобразите зону охвата датчика.
Отобразите маркировки маршрута.
Получите положения основной истины целей на дороге.
Получите идеальные граничные точки маршрута до 60 м вперед.
Сгенерируйте обнаружения от идеальных целевых положений и контуров маршрута.
Отобразите схему цели.
Обнаружения экранного объекта, когда обнаружение объектов допустимо.
Отобразите контур маршрута, когда обнаружение маршрута будет допустимо.
bep = birdsEyePlot('XLim',[0 60],'YLim',[-35 35]); caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area', ... 'FaceColor','blue'); detPlotter = detectionPlotter(bep,'DisplayName','Object detections'); lmPlotter = laneMarkingPlotter(bep,'DisplayName','Lane markings'); lbPlotter = laneBoundaryPlotter(bep,'DisplayName', ... 'Lane boundary detections','Color','red'); olPlotter = outlinePlotter(bep); plotCoverageArea(caPlotter,visionSensor.SensorLocation,... visionSensor.MaxRange,visionSensor.Yaw, ... visionSensor.FieldOfView(1)); while advance(scenario) [lmv,lmf] = laneMarkingVertices(egovehicle); plotLaneMarking(lmPlotter,lmv,lmf) tgtpose = targetPoses(egovehicle); lookaheadDistance = 0:0.5:60; lb = laneBoundaries(egovehicle,'XDistance',lookaheadDistance,'LocationType','inner'); [obdets,nobdets,obValid,lb_dets,nlb_dets,lbValid] = ... visionSensor(tgtpose,lb,scenario.SimulationTime); [objposition,objyaw,objlength,objwidth,objoriginOffset,color] = targetOutlines(egovehicle); plotOutline(olPlotter,objposition,objyaw,objlength,objwidth, ... 'OriginOffset',objoriginOffset,'Color',color) if obValid detPos = cellfun(@(d)d.Measurement(1:2),obdets,'UniformOutput',false); detPos = vertcat(zeros(0,2),cell2mat(detPos')'); plotDetection(detPlotter,detPos) end if lbValid plotLaneBoundary(lbPlotter,vertcat(lb_dets.LaneBoundaries)) end end
Сгенерируйте обнаружения от идеального датчика видения и сравните эти обнаружения с единицами от шумного датчика. Идеальный датчик является тем, который всегда генерирует обнаружения без ложных положительных сторон и никакого добавленного случайного шума.
Создайте ведущий сценарий
Создайте ведущий сценарий, в который автомобиль, оборудованный датчиком расположен перед диагональным массивом целевых автомобилей. С этой настройкой можно позже построить ковариации шума измерения обнаруженных целей, не имея целевых автомобилей, закрывают друг друга.
scenario = drivingScenario; egoVehicle = vehicle(scenario); numTgts = 6; x = linspace(20,50,numTgts)'; y = linspace(-20,0,numTgts)'; x = [x;x(1:end-1)]; y = [y;-y(1:end-1)]; numTgts = numel(x); for m = 1:numTgts vehicle(scenario,'Position',[x(m) y(m) 0]); end
Постройте ведущий сценарий в видимом с большого расстояния графике.
bep = birdsEyePlot('XLim',[0 60]); legend('hide') olPlotter = outlinePlotter(bep); [position,yaw,length,width,originOffset,color] = targetOutlines(egoVehicle); plotOutline(olPlotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color)
Создайте идеальный датчик видения
Создайте датчик видения при помощи visionDetectionGenerator
Система object™. Чтобы сгенерировать идеальные обнаружения, установите DetectionProbability
к 1
, FalsePositivesPerImage
к 0
, и HasNoise
к false
.
DetectionProbability = 1
— Датчик всегда генерирует обнаружения для цели, пока цель не закрывается и соответствует области значений, скорости и ограничениям размера изображения.
FalsePositivesPerImage = 0
— Датчик генерирует обнаружения только от действительных целей в ведущем сценарии.
HasNoise = false
— Датчик не добавляет случайный шум в положение, о котором сообщают, и скорость цели. Однако objectDetection
объектам, возвращенным датчиком, установили значения шума измерения на шумовое отклонение, которое было бы добавлено если HasNoise
был true
. С этими шумовыми значениями можно обработать идеальные обнаружения с помощью multiObjectTracker
. Этот метод полезен для анализа задержки маневра, не будучи должен запустить длительные симуляции Монте-Карло.
idealSensor = visionDetectionGenerator( ... 'SensorIndex',1, ... 'UpdateInterval',scenario.SampleTime, ... 'SensorLocation',[0.75*egoVehicle.Wheelbase 0], ... 'Height',1.1, ... 'Pitch',0, ... 'Intrinsics',cameraIntrinsics(800,[320 240],[480 640]), ... 'BoundingBoxAccuracy',50, ... % Make the noise large for illustrative purposes 'ProcessNoiseIntensity',5, ... 'MaxRange',60, ... 'DetectionProbability',1, ... 'FalsePositivesPerImage',0, ... 'HasNoise',false, ... 'ActorProfiles',actorProfiles(scenario))
idealSensor = visionDetectionGenerator with properties: SensorIndex: 1 UpdateInterval: 0.0100 SensorLocation: [2.1000 0] Height: 1.1000 Yaw: 0 Pitch: 0 Roll: 0 Intrinsics: [1x1 cameraIntrinsics] DetectorOutput: 'Objects only' FieldOfView: [43.6028 33.3985] MaxRange: 60 MaxSpeed: 50 MaxAllowedOcclusion: 0.5000 MinObjectImageSize: [15 15] DetectionProbability: 1 FalsePositivesPerImage: 0 Show all properties
Постройте зону охвата идеального датчика видения.
legend('show') caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area','FaceColor','blue'); mountPosition = idealSensor.SensorLocation; range = idealSensor.MaxRange; orientation = idealSensor.Yaw; fieldOfView = idealSensor.FieldOfView(1); plotCoverageArea(caPlotter,mountPosition,range,orientation,fieldOfView);
Симулируйте идеальные обнаружения видения
Получите положения целей. Положения находятся в координатах автомобиля, оборудованного датчиком.
gTruth = targetPoses(egoVehicle);
Сгенерируйте обнаружения видения, к которым добавляют метку времени. Эти обнаружения возвращены как массив ячеек objectDetection
объекты.
time = scenario.SimulationTime; dets = idealSensor(gTruth,time);
Смотрите отклонение шума измерения и измерения первого (крайнего левого) обнаружения. Даже при том, что обнаружение идеально и поэтому не имеет никакого добавленного случайного шума, MeasurementNoise
свойство показывает значения, как будто обнаружение действительно имело шум.
dets{1}.Measurement
ans = 6×1
31.0000
-11.2237
0
0
0
0
dets{1}.MeasurementNoise
ans = 6×6
1.5427 -0.5958 0 0 0 0
-0.5958 0.2422 0 0 0 0
0 0 100.0000 0 0 0
0 0 0 0.5398 -0.1675 0
0 0 0 -0.1675 0.1741 0
0 0 0 0 0 100.0000
Постройте идеальные обнаружения и замещающие знаки для контура с 2 сигмами ковариации шума измерения.
pos = cell2mat(cellfun(@(d)d.Measurement(1:2)',dets, ... 'UniformOutput',false)); cov = reshape(cell2mat(cellfun(@(d)d.MeasurementNoise(1:2,1:2),dets, ... 'UniformOutput',false))',2,2,[]); plotter = trackPlotter(bep,'DisplayName','Ideal detections', ... 'MarkerEdgeColor','blue','MarkerFaceColor','blue'); sigma = 2; plotTrack(plotter,pos,sigma^2*cov)
Симулируйте шумные обнаружения для сравнения
Создайте шумный датчик на основе свойств идеального датчика.
noisySensor = clone(idealSensor); release(noisySensor) noisySensor.HasNoise = true;
Сбросьте ведущий сценарий назад к его исходному состоянию.
restart(scenario)
Соберите статистические данные от шумных обнаружений.
numMonte = 1e3; pos = []; for itr = 1:numMonte time = scenario.SimulationTime; dets = noisySensor(gTruth,time); % Save noisy measurements pos = [pos;cell2mat(cellfun(@(d)d.Measurement(1:2)',dets,'UniformOutput',false))]; advance(scenario); end
Постройте шумные обнаружения.
plotter = detectionPlotter(bep,'DisplayName','Noisy detections', ... 'Marker','.','MarkerEdgeColor','red','MarkerFaceColor','red'); plotDetection(plotter,pos)
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
drivingScenario
| laneMarking
| lanespec
| monoCamera
| multiObjectTracker
| objectDetection
| radarDetectionGenerator
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.