Simulation 3D Camera

Модель датчика камеры с объективом в 3D среду симуляции

  • Библиотека:
  • Automated Driving Toolbox/ 3D

  • Simulation 3D Camera block

Описание

Блок Simulation 3D Camera обеспечивает интерфейс к камере с объективом в 3D среде симуляции. Это окружение визуализируется с помощью Unreal Engine® из эпических игр®. Датчик основан на идеальной модели pinhole-камеры, с добавлением объектива, чтобы представлять полную модель камеры, включая искажение объектива. Эта модель камеры поддерживает поле зрения до 150 степеней. Для получения дополнительной информации см. «Алгоритмы».

Если вы задаете Sample time -1, блок использует шаг расчета, заданный в блоке Simulation 3D Scene Configuration. Чтобы использовать этот датчик, вы должны включить блок Simulation 3D Scene Configuration в свою модель.

Блок выводит изображения, полученные камерой во время симуляции. Можно использовать эти изображения для визуализации и проверки алгоритмов вождения. Кроме сложения, на вкладке Ground Truth можно выбрать опции для вывода достоверных данных для разработки алгоритмов оценки глубины и семантической сегментации. Можно также вывести местоположение и ориентацию камеры в мировой системе координат сцены. На изображении показан блок с включенными всеми портами.

В таблице перечислены порты и способы их включения.

ПортОписаниеПараметр для включения портаОбразец визуализации

Image

Выводит изображение RGB, захваченное камеройn/a

Depth

Выводит карту глубин со значениями от 0 м до 1000 метров

Output depth

Labels

Выводит семантическую карту сегментации идентификаторов меток, которые соответствуют объектам в сцене

Output semantic segmentation

Location

Вывод местоположения камеры в мировой системе координат

Output location (m) and orientation (rad)

n/a

Orientation

Вывод ориентации камеры в мировой системе координат

Output location (m) and orientation (rad)

n/a

Примечание

Блок Simulation 3D Scene Configuration должен выполняться перед блоком Simulation 3D Camera. Таким образом, окружение визуализации 3D Unreal Engine подготавливает данные до того, как блок Simulation 3D Camera получит их. Чтобы проверить порядок выполнения блока, щелкните правой кнопкой мыши блоки и выберите Properties. На вкладке General подтвердите следующие Priority настройки:

  • Simulation 3D Scene Configuration0

  • Simulation 3D Camera1

Для получения дополнительной информации о порядке выполнения смотрите Как работает нереальная симуляция Engine для автоматического вождения.

Порты

Выход

расширить все

3D выхода изображения камеры, возвращенный как m -by- n -by-3 массива триплета RGB. m - вертикальное разрешение изображения, а n - горизонтальное разрешение изображения.

Типы данных: int8 | uint8

Глубина объекта для каждого пикселя в изображении, выводится как m -by - n массив. m - вертикальное разрешение изображения, а n - горизонтальное разрешение изображения. Глубина находится в области значений от 0 до 1000 метров.

Зависимости

Чтобы включить этот порт, на вкладке Ground Truth, выберите Output depth.

Типы данных: double

Идентификатор метки для каждого пикселя в изображении, выводится как m -by - n массив. m - вертикальное разрешение изображения, а n - горизонтальное разрешение изображения.

В таблице показаны идентификаторы объектов, используемые в сценах по умолчанию, которые можно выбрать из блока Simulation 3D Scene Configuration. Если вы используете пользовательскую сцену, в Unreal® Редактор, можно назначить новые типы объектов неиспользованным идентификаторам. Если сцена содержит объект, которому не присвоен идентификатор, этому объекту назначается идентификатор 0. Обнаружение разметки маршрута не поддерживается.

Я быНапечатать
0

Нет/по умолчанию

1

Создание

2

Не используется

3

Другое

4

Не используется

5

Поляк

6

Не используется

7

Дорога

8

Тротуар

9

Растительность

10

Транспортное средство

11

Не используется

12

Типовой знак трафика

13

Знак упора

14

Знак выражения

15

Знак ограничения скорости

16

Предел веса

17-18

Не используется

19

Предупреждающий знак со стрелами влево и вправо

20

Предупреждающий знак левого шеврона

21

Предупреждающий знак правого шеврона

22

Не используется

23

Правый односторонний знак

24

Не используется

25

Знак только школьного автобуса

26-38

Не используется

39

Знак кроссвалька

40

Не используется

41

Сигнал трафика

42

Кривая правого предупреждающего знака

43

Кривая левого предупреждающего знака

44

Вверх по стреле вправо предупреждающий знак

45-47

Не используется

48

Знак пересечения железных дорог

49

Уличный знак

50

Предупреждающий знак кругового перекрестка

51

Пожарный гидрант

52

Выходной знак

53

Знак велосипедного маршрута

54-56

Не используется

57

Небо

58

Ограничение

59

Эстакада

60

Автомобильная охранная железная дорога

61-66

Не используется

67

Олень

68-70

Не используется

71

Баррикада

72

Мотоцикл

73-255

Не используется

Зависимости

Чтобы включить этот порт, на вкладке Ground Truth, выберите Output semantic segmentation.

Типы данных: uint8

Расположение датчика вдоль оси X, оси Y и оси Z сцены. Значения Location указаны в мировых координатах сцены. В этой системе координат ось Z указывает вверх от земли. Модули измерения указаны в метрах.

Зависимости

Чтобы включить этот порт, на вкладке Ground Truth, выберите Output location (m) and orientation (rad).

Типы данных: double

Ориентация датчика крена, тангажа и рыскания вокруг оси X, оси Y и оси Z сцены. Значения Orientation указаны в мировых координатах сцены. Эти значения положительны в направлении по часовой стрелке при взгляде в положительных направлениях этих осей. Модули указаны в радианах.

Зависимости

Чтобы включить этот порт, на вкладке Ground Truth, выберите Output location (m) and orientation (rad).

Типы данных: double

Параметры

расширить все

Установка

Уникальный идентификатор датчика, заданный как положительное целое число. В мультисенсорной системе идентификатор датчика различает датчики. Когда вы добавляете новый блок датчика к модели, Sensor identifier этого блока равен N + 1. N является самым высоким значением Sensor identifier среди существующих блоков датчиков в модели.

Пример: 2

Имя родительского элемента, на котором установлен датчик, указывается как Scene Origin или как имя транспортного средства в вашей модели. Имена транспортных средств, которые можно выбрать, соответствуют параметрам Name блоков Simulation 3D Vehicle with Ground Following в вашей модели. Если вы выбираете Scene Originблок помещает датчик в источник сцены.

Пример: SimulinkVehicle1

Место установки датчика.

  • Когда Parent name Scene Originблок устанавливает датчик в источник сцены. Можно задать Mounting location значение Origin только. Во время симуляции датчик остается стационарным.

  • Когда Parent name - имя транспортного средства (для примера, SimulinkVehicle1) блок устанавливает датчик в одно из предопределенных мест установки, описанных в таблице. Во время симуляции датчик перемещается вместе с транспортным средством.

Место установки транспортного средстваОписаниеОриентация относительно источника транспортного средства [крен, тангаж, рыскание] (град.)
Origin

Передний датчик, установленный на источнике транспортного средства, который находится на земле, в геометрическом центре транспортного средства (см. Системы координат для нереальной симуляции Engine в Automated Driving Toolbox)

[0, 0, 0]
Front bumper

Передний датчик, установленный на переднем бампере

[0, 0, 0]
Rear bumper

Обращенный назад датчик, установленный на заднем бампере

[0, 0, 180]
Right mirror

Обращенный вниз датчик, установленный на правом боковом зеркале

[0, –90, 0]
Left mirror

Обращенный вниз датчик, установленный на левом боковом зеркале

[0, –90, 0]
Rearview mirror

Передний датчик, установленный на зеркале заднего вида, внутри транспортного средства

[0, 0, 0]
Hood center

Передний датчик, установленный на центре капота

[0, 0, 0]
Roof center

Передний датчик, установленный на центре крыши

[0, 0, 0]

Крен, тангаж и рыскание положительны по часовой стрелке при взгляде в положительном направлении оси X, оси Y и оси Z, соответственно. При взгляде на транспортное средство от верхней части вниз угол рыскания (то есть угол ориентации) против часовой стрелки-положительный, потому что вы смотрите в отрицательном направлении оси.

Расположение датчика (X, Y, Z) относительно транспортного средства зависит от типа транспортного средства. Чтобы указать тип транспортного средства, используйте параметр Type блока Simulation 3D Vehicle with Ground Following, к которому вы монтируете датчик. Чтобы получить места установки (X, Y, Z) для типа транспортного средства, смотрите страницу с описанием для этого транспортного средства.

Чтобы определить местоположение датчика в мировых координатах, откройте блок датчика. Затем на вкладке Ground Truth выберите Output location (m) and orientation (rad) и проверьте данные из Location выходного порта.

Выберите этот параметр, чтобы задать смещение от места установки с помощью параметров Relative translation [X, Y, Z] (m) и Relative rotation [Roll, Pitch, Yaw] (deg).

Смещение перемещения относительно места установки датчика, заданное как действительный вектор 1 на 3 вида [X, Y, Z]. Модули измерения указаны в метрах.

Если вы монтируете датчик к транспортному средству путем установки Parent name на имя этого транспортного средства, то X, Y и Z находятся в транспортном средстве системе координат, где:

  • Ось X указывает вперед от транспортного средства.

  • Ось Y указывает налево от транспортного средства, если смотреть в прямом направлении транспортного средства.

  • Ось Z указывает вверх.

Это источник - место установки, заданное в параметре Mounting location. Этот источник отличается от источника транспортного средства, который является геометрическим центром транспортного средства.

Если вы монтируете датчик к источнику сцены путем установки Parent name на Scene Origin, тогда X, Y и Z находятся в мировых координатах сцены.

Для получения дополнительной информации о транспортном средстве и мировых системах координат смотрите Системы координат для Unreal Engine Simulation в Automated Driving Toolbox.

Пример: [0,0,0.01]

Зависимости

Чтобы включить этот параметр, выберите Specify offset.

Вращательное смещение относительно места установки датчика, заданное как действительный вектор 1 на 3 вида [Roll, тангаж, рыскание]. Крен, тангаж и рыскание являются углами вращения вокруг осей X -, Y- и Z, соответственно. Модули указаны в степенях.

Если вы монтируете датчик к транспортному средству путем установки Parent name на имя этого транспортного средства, то X, Y и Z находятся в транспортном средстве системе координат, где:

  • Ось X указывает вперед от транспортного средства.

  • Ось Y указывает налево от транспортного средства, если смотреть в прямом направлении транспортного средства.

  • Ось Z указывает вверх.

  • Крен, тангаж и рыскание положительны по часовой стрелке при взгляде в прямом направлении оси X, оси Y и оси Z, соответственно. Если вы просматриваете сцену с 2D перспективы сверху вниз, то угол рыскания (также называемый углом ориентации) будет противоположно часовой стрелке-положителен, потому что вы просматриваете сцену в отрицательном направлении оси Z.

Это источник - место установки, заданное в параметре Mounting location. Этот источник отличается от источника транспортного средства, который является геометрическим центром транспортного средства.

Если вы монтируете датчик к источнику сцены путем установки Parent name на Scene Origin, тогда X, Y и Z находятся в мировых координатах сцены.

Для получения дополнительной информации о транспортном средстве и мировых системах координат смотрите Системы координат для Unreal Engine Simulation в Automated Driving Toolbox.

Пример: [0,0,10]

Зависимости

Чтобы включить этот параметр, выберите Specify offset.

Шаг расчета блока в секундах, заданная как положительная скалярная величина. Частота систем координат среды симуляции 3D является обратной частотой шага расчета.

Если вы задаете значение шага расчета -1блок наследует свои шаги расчета от блока Simulation 3D Scene Configuration.

Параметры

Эти собственные параметры камеры эквивалентны свойствам cameraIntrinsics объект. Чтобы получить собственные параметры для камеры, используйте приложение Camera Calibrator.

Для получения дополнительной информации о процессе калибровки камеры см. Приложение Single Camera Calibrator и Что такое калибровка камеры?.

Фокусное расстояние камеры, заданное как положительный целочисленный вектор 1 на 2 вида [fx, fy]. Модули указаны в пикселях.

fx = <reservedrangesplaceholder1> × <reservedrangesplaceholder0>

fy = <reservedrangesplaceholder1> × <reservedrangesplaceholder0>

где:

  • F - фокусное расстояние в мировых единицах измерения, обычно миллиметрах.

  • [sx, sy] - количество пикселей на мировую единицу измерения в x и y направлении, соответственно.

Этот параметр эквивалентен FocalLength свойство cameraIntrinsics объект.

Оптический центр камеры, заданный как положительный целочисленный вектор 1 на 2 вида [cx, cy]. Модули указаны в пикселях.

Этот параметр эквивалентен PrincipalPoint свойство cameraIntrinsics объект.

Размер изображения, произведенного камерой, задается как положительный целочисленный вектор 1 на 2 вида [mrows, ncols]. Модули указаны в пикселях.

Этот параметр эквивалентен ImageSize свойство cameraIntrinsics объект.

Коэффициенты радиального искажения, заданные как вещественный неотрицательный вектор 1 на 2 или 1 на 3. Радиальное искажение происходит, когда световые лучи изгибаются больше, чем ребра линзы, чем в ее оптическом центре. Искажение больше, когда линза меньше. Блок вычисляет радиально-искаженное положение точки. Модули безразмерны.

Этот параметр эквивалентен RadialDistortion свойство cameraIntrinsics объект.

Коэффициенты тангенциального искажения, заданные как вещественный неотрицательный вектор 1 на 2. Тангенциальное искажение происходит, когда линза и плоскость изображения не параллельны. Координаты выражены в мировых единицах измерения. Модули безразмерны.

Этот параметр эквивалентен TangentialDistortion свойство cameraIntrinsics объект.

Угол наклона осей камеры, заданный как неотрицательный скаляр. Если ось X и ось Y в точности перпендикулярны, то перекос должен быть 0. Модули безразмерны.

Этот параметр эквивалентен Skew свойство cameraIntrinsics объект.

Основная истина

Выберите этот параметр, чтобы вывести карту глубины в Depth порт.

Выберите этот параметр, чтобы вывести семантическую карту сегментации идентификаторов меток в Labels порту.

Выберите этот параметр, чтобы вывести положение и ориентацию датчика в портах Location и Orientation, соответственно.

Совет

Алгоритмы

Блок использует модель камеры, предложенную Жаном-Ивом Буге [1]. Модель включает в себя:

  • Модель pinhole-камеры [2]

  • Искажение объектива [3]

Модель камеры pinhole не учитывает искажения объектива, потому что идеальная камера pinhole не имеет объектива. Чтобы точно представлять реальную камеру, полная модель камеры, используемая блоком, включает радиальное и тангенциальное искажение объектива.

Для получения дополнительной информации смотрите Что такое калибровка камеры?

Ссылки

[1] Bouguet, J. Y. Camera Calibration Toolbox for Matlab. http://www.vision.caltech.edu/bouguetj/calib_doc

[2] Чжан, З. «Гибкий новый техник калибровки камеры». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 22, № 11, 2000, стр. 1330-1334.

[3] Heikkila, J., and O. Silven. «Четырехэтапная процедура калибровки камеры с неявной коррекцией изображения». Международная конференция IEEE по компьютерному зрению и распознаванию шаблонов. 1997.

Введенный в R2019b