Сгенерируйте обнаружения видения для ведущего сценария
Система visionDetectionGenerator
object™ генерирует обнаружения от монокулярного датчика камеры, смонтированного на автомобиле, оборудованном датчиком. На все обнаружения ссылаются к системе координат автомобиля, оборудованного датчиком или смонтированного автомобилем датчика. Можно использовать объект visionDetectionGenerator
в сценарии, содержащем агентов и траектории, которые можно создать при помощи объекта drivingScenario
. Используя статистический режим, генератор может моделировать действительные обнаружения с добавленным случайным шумом и также сгенерировать ложные сигнальные обнаружения. Кроме того, можно использовать объект visionDetectionGenerator
создать вход к multiObjectTracker
.
Сгенерировать визуальные обнаружения:
Создайте объект visionDetectionGenerator
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
sensor = visionDetectionGenerator
sensor = visionDetectionGenerator(cameraConfig)
sensor = visionDetectionGenerator(Name,Value)
создает объект генератора обнаружения видения со значениями свойств по умолчанию.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
— Необходимый временной интервал между обновлениями датчика0.1
| положительный действительный скалярНеобходимый временной интервал между обновлениями датчика, заданными как положительный действительный скаляр. Вызовы объектов drivingScenario
генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения, с промежутками заданные свойством UpdateInterval
. Значение свойства UpdateInterval
должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений. Модули находятся в секундах.
Пример 5
Типы данных: double
SensorLocation
— Местоположение датчика[3.4 0]
| вектор [x y]
Местоположение центра датчика видения, заданного как [x y]
. Свойства SensorLocation
и Height
задают координаты датчика видения относительно системы координат автомобиля, оборудованного датчиком. Значение по умолчанию соответствует датчику по ходу движения, смонтированному на инструментальной панели автомобиля. Модули исчисляются в метрах.
Пример: [4 0.1]
Типы данных: double
Высота
Высота датчика наземная плоскость1.1
| положительный действительный скалярВысота датчика выше автомобиля основывает плоскость, заданную как положительный действительный скаляр. Значение по умолчанию соответствует датчику видения по ходу движения, смонтированному на инструментальной панели седана. Модули исчисляются в метрах.
Пример: 1.5
Типы данных: double
Yaw
— Угол отклонения от курса датчика видения0
| действительный скалярУгол отклонения от курса датчика видения, заданного как действительный скаляр. Угол отклонения от курса является углом между центральной линией автомобиля, оборудованного датчиком и осью вниз-области-значений датчика видения. Положительный угол отклонения от курса соответствует по часовой стрелке вращение при взгляде в положительном направлении z - ось системы координат автомобиля, оборудованного датчиком. Модули в градусах.
Пример 4
Типы данных: double
Pitch
— Передайте угол датчика видения0
| действительный скалярПередайте угол датчика видения, заданного как действительный скаляр. Угол подачи является углом между осью вниз-области-значений датчика видения и плоскостью x-y системы координат автомобиля, оборудованного датчиком. Положительный угол подачи соответствует по часовой стрелке вращение при взгляде в положительном направлении y - ось системы координат автомобиля, оборудованного датчиком. Модули в градусах.
Пример 3
Типы данных: double
Roll
— Угол вращения датчика видения0
| действительный скалярУгол вращения датчика видения, заданного как действительный скаляр. Угол вращения является углом вращения оси вниз-области-значений датчика видения вокруг x - ось системы координат автомобиля, оборудованного датчиком. Положительный угол вращения соответствует по часовой стрелке вращение при взгляде в положительном направлении x - ось системы координат. Модули в градусах.
Пример 4
Типы данных: double
Intrinsics
— Внутренние калибровочные параметры датчика виденияcameraIntrinsics([800 800],[320 240],[480 640])
(значение по умолчанию) | объект cameraIntrinsics
Внутренние калибровочные параметры датчика видения, заданного как объект cameraIntrinsics
.
FieldOfView
— Угловое поле зрения датчика виденияЭто свойство доступно только для чтения.
Угловое поле зрения датчика видения, заданного как с действительным знаком 1 2 вектор положительных значений, [azfov,elfov]
. Поле зрения задает азимут и степени повышения изображения датчика. Каждый компонент должен лечь в интервале от 0 градусов до 180 градусов. Поле зрения выведено от внутренних параметров датчика видения. Цели за пределами углового поля зрения датчика не обнаруживаются. Модули в градусах.
Типы данных: double
MaxRange
— Максимальная область значений обнаружения150
| положительный действительный скалярМаксимальная область значений обнаружения, заданная как положительный действительный скаляр. Датчик не может обнаружить цель вне этой области значений. Модули исчисляются в метрах.
Пример: 200
Типы данных: double
MaxSpeed
— Максимальная обнаруживаемая объектная скорость50
(значение по умолчанию) | неотрицательный действительный скалярМаксимальная обнаруживаемая объектная скорость, заданная как неотрицательный действительный скаляр. Модули исчисляются в метрах в секунду.
Пример: 10.0
Типы данных: double
MaxAllowedOcclusion
— Максимальное позволенное поглощение газов объекта0.5
(значение по умолчанию) | действительный скаляр в области значений (0 1]Максимальное позволенное поглощение газов объекта, заданного как действительный скаляр в области значений [0 1]. Поглощение газов является частью общей площади поверхности объекта, не видимого к датчику. Значение каждый указывает, что объект полностью закрывается. Модули являются безразмерными.
Пример: 0.2
Типы данных: double
DetectionProbability
— Вероятность обнаружения0.9
(значение по умолчанию) | положительный действительный скаляр, меньше чем или равный 1Вероятность обнаружения цели, заданной как положительный действительный скаляр, меньше чем или равный 1. Это количество задает вероятность, что датчик обнаруживает обнаруживаемый объект. detectable object является объектом, который удовлетворяет минимальный обнаруживаемый размер, максимальную область значений, максимальную скорость и максимальные позволенные ограничения поглощения газов.
Пример: 0.95
Типы данных: double
FalsePositivesPerImage
— Количество ложных обнаружений на изображение0.1
(значение по умолчанию) | неотрицательный действительный скалярКоличество ложных обнаружений, которые датчик видения генерирует для каждого изображения, заданного как неотрицательный действительный скаляр.
Пример 2
Типы данных: double
MinObjectImageSize
— Минимальный размер изображения обнаруживаемого объекта[15 15]
(значение по умолчанию) | 1 2 вектор положительных значенийМинимальная высота и ширина объекта, который датчик видения обнаруживает в изображении, заданном как вектор [minHeight,minWidth]
положительных значений. 2D спроектированная высота объекта должна быть больше, чем или равной minHeight
. Спроектированная ширина объекта должна быть больше, чем или равной minWidth
. Модули находятся в пикселях.
Пример: [30 20]
Типы данных: double
BoundingBoxAccuracy
— Точность ограничительной рамки5
(значение по умолчанию) | положительный действительный скалярТочность ограничительной рамки, заданная как положительный действительный скаляр. Это количество задает точность, которой детектор может совпадать с ограничительной рамкой к цели. Модули находятся в пикселях.
Пример 4
Типы данных: double
ProcessNoiseIntensity
— Шумовая интенсивность используется для фильтрации скоростные измерения и положение5
(значение по умолчанию) | положительный действительный скалярШумовая интенсивность используется для фильтрации положения и скоростных измерений, заданных как положительный действительный скаляр. Шумовая интенсивность задает стандартное отклонение шума процесса внутреннего Фильтра Калмана постоянной скорости, используемого в датчике видения. Фильтр моделирует шум процесса использование кусочно-постоянной белой шумовой ускоряющей модели. Шумовая интенсивность обычно имеет порядок максимального ускоряющего значения, ожидаемого для цели. Модули находятся в 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
— Максимальное количество обнаружений, о которых сообщают,50
(значение по умолчанию) | положительное целое числоО максимальном количестве обнаружений сообщает датчик, заданный как положительное целое число. Об обнаружениях, самых близких к датчику, сообщают.
Чтобы включить это свойство, установите свойство MaxNumDetectionsSource
на 'Property'
.
Типы данных: double
DetectionCoordinates
— Система координат обнаружений, о которых сообщают,'Ego Cartesian'
(значение по умолчанию) | 'Sensor Cartesian'
Система координат обнаружений, о которых сообщают, заданных как одно из этих значений:
'Ego Cartesian'
— Об обнаружениях сообщают в Декартовой системе координат автомобиля, оборудованного датчиком.
'Sensor Cartesian'
— Об обнаружениях сообщают в Декартовой системе координат датчика.
Типы данных: char | string
LaneUpdateInterval
— Необходимый временной интервал между обновлениями обнаружения маршрута0.1
(значение по умолчанию) | положительный действительный скалярНеобходимый временной интервал между обновлениями обнаружения маршрута, заданными как положительный действительный скаляр. Вызовы объектов drivingScenario
генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения маршрута, с промежутками заданные этим свойством, которое должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений маршрута. Модули находятся в секундах.
Пример: 0.4
Типы данных: double
MinLaneImageSize
— Минимальный размер маршрута в изображении[20 5]
(значение по умолчанию) | 1 2 вектор с действительным знакомМинимальный размер спроектированного маршрута, отмечающего, который может быть обнаружен датчиком после составления искривления, задал как 1 2 вектор с действительным знаком, [minHeight minWidth]
. Маркировки маршрута должны превысить оба из этих значений, которые будут обнаружены. Это свойство используется только при обнаружении маршрутов. Модули находятся в пикселях.
Пример: [5,7]
Типы данных: double
LaneBoundaryAccuracy
— Точность контуров маршрута3
| положительный действительный скалярТочность контуров маршрута, заданных как положительный действительный скаляр. Это свойство задает точность, с которой датчик маршрута может поместить контур маршрута. Модули находятся в пикселях. Это свойство используется только при обнаружении маршрутов.
MaxNumLanesSource
— Источник максимального количества маршрутов, о которых сообщают,'Property'
(значение по умолчанию) | 'Auto'
Источник максимального количества маршрутов, о которых сообщают, заданных как 'Auto'
или 'Property'
. Когда задано как 'Auto'
, максимальное количество маршрутов вычисляется автоматически. Когда задано как 'Property'
, используйте свойство MaxNumLanes
определить максимальный номер или маршруты.
Типы данных: char | string
MaxNumLanes
— Максимальное количество маршрутов, о которых сообщают,30
(значение по умолчанию) | положительное целое числоМаксимальное количество маршрутов, о которых сообщают, заданных как положительное целое число.
Чтобы включить это свойство, установите свойство 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) -by-numel(RCSAzimuthAngles) матрица с действительным знаком. Значением по умолчанию является [10 10; 10 10] . Модули находятся в децибелах на квадратный метр. |
RCSAzimuthAngles | Углы азимута, соответствующие строкам RCSPattern , заданного как вектор действительных значений в области значений [–180, 180]. Значением по умолчанию является [-180 180] . Модули в градусах. |
RCSElevationAngles | Углы повышения, соответствующие строкам RCSPattern , заданного как вектор действительных значений в области значений [–90, 90]. Значением по умолчанию является [-90 90] . Модули в градусах. |
Для полных определений полей структуры смотрите функции vehicle
и actor
.
dets = sensor(actors,time)
lanedets = sensor(laneboundaries,time)
lanedets = sensor(actors,laneboundaries,time)
[___,numValidDets]
= sensor(___)
[___,numValidDetsisValidTime]
= sensor(___)
[dets,numValidDets,isValidTime,lanedets,numValidLaneDets,isValidLaneTime] = sensor(actors,laneboundaries,time)
создает визуальные обнаружения, 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] вектор с действительным знаком. Можно задать или |
Speed | Скорость агента, заданного как действительный скаляр. Когда |
Roll | Угол вращения агента, заданного как действительный скаляр. Если |
Pitch | Передайте угол агента, заданного как действительный скаляр. Если |
Yaw | Угол отклонения от курса агента, заданного как действительный скаляр. Если |
Для полных определений полей структуры смотрите функции vehicle
и actor
.
Чтобы включить этот аргумент, установите свойство 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
время
Текущее время симуляцииТекущее время симуляции, заданное как положительный действительный скаляр. Вызовы объектов 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
— Допустимое время обнаруженияДопустимое время обнаружения, возвращенное как 0
или 1
. isValidTime
является 0
, когда обновления обнаружения время от времени требуют, которые являются между интервалами обновления, заданными UpdateInterval
.
Типы данных: логический
lanedets
— Обнаружения контура маршрутаОбнаружения контура маршрута, возвращенные как структуры массива. Поля структуры:
Структура обнаружения контура маршрута
Поле | Описание |
Время | Время обнаружения маршрута |
SensorIndex | Уникальный идентификатор датчика |
LaneBoundaries | Массив объектов clothoidLaneBoundary . |
numValidLaneDets
— Количество обнаруженийКоличество обнаружений маршрута, возвращенных, заданных как неотрицательное целое число.
Когда свойство MaxNumLanesSource
установлено в 'Auto'
, numValidLaneDets
установлен в длину lanedets
.
Когда MaxNumLanesSource
установлен в 'Property'
, lanedets
является массивом ячеек с длиной, определенной свойством MaxNumLanes
. Не больше, чем количество MaxNumLanes
обнаружений маршрута возвращено. Если количество обнаружений - меньше, чем MaxNumLanes
, первые элементы numValidLaneDetections
lanedets
содержат допустимые обнаружения маршрута. Остающиеся элементы lanedets
установлены в значение по умолчанию.
.
Типы данных: double
isValidLaneTime
— Допустимое время обнаружения маршрутаДопустимое время обнаружения маршрута, возвращенное как 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
Создайте ведущий сценарий, содержащий автомобиль, оборудованный датчиком и целевой автомобиль, перемещающийся вдоль трехполосной дороги. Обнаружьте контуры маршрута при помощи генератора обнаружения видения.
sc = drivingScenario;
Создайте трехполосную дорогу при помощи спецификаций маршрута.
roadCenters = [0 0 0; 60 0 0; 120 30 0];
lspc = lanespec(3);
road(sc,roadCenters,'Lanes',lspc);
Укажите, что автомобиль, оборудованный датчиком следует за центральным маршрутом на уровне 30 м/с.
egovehicle = vehicle(sc); egopath = [1.5 0 0; 60 0 0; 111 25 0]; egospeed = 30; trajectory(egovehicle,egopath,egospeed);
Укажите, что целевые перемещения автомобиля перед автомобилем, оборудованным датчиком на уровне 40 м/с и перестраиваются на другую полосу близко к автомобилю, оборудованному датчиком.
targetcar = vehicle(sc,'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(sc);
Запустите симуляцию.
Создайте видимый с большого расстояния график и связанные плоттеры.
Отобразите зону охвата датчика.
Отобразите маркировки маршрута.
Получите наземные положения истины целей на дороге.
Получите идеальные граничные точки маршрута до 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(sc) [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,sc.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.