Skip to main content
Skip table of contents

센서 검출 데이터

이 섹션에서는 각 센서에서 검출한 데이터 형식 및 구조에 대해 설명한다.


3D LiDAR

3D 라이다 센서 설정에 의해 생성되는 검출 데이터는 크게 점군 데이터(Point Cloud)를 포함하는 bin 파일과 3D BBox 정답 데이터를 포함하는 텍스트 파일로구성된다.

Point Cloud 데이터

3D 라이다 센서에서 검출하는 Point Cloud 데이터는 아래와 같은 형식으로 저장되며, 센서 설정에 따라 Intensity, Semantic, Instance 타입을 가진다.

  • 파일 생성 포맷 : bin 파일

  • bin 파일 내 4바이트 씩 포인트 클라우드의 x, y, z, intensity가 공백없이 일렬로 저장되어 있음. 원점은 라이다를 마운트한 위치.

  • 파이썬 사용자의 경우, numpy 의 fromfile 을 통해서 아래와 같이 load가 가능함.

  • 저장 위치는 SaveFile/SensorData/LIDAR_* 이며, 파일 이름은 포인트 클라우드를 저장한 날짜와 시간으로 정해짐.

Intensity 타입

실제 LiDAR Sensor 와 동일하게 각 Point의 Intensity 값을 출력하는 타입으로, 센서 설정에서 Intensity Type을 Intensity로 설정한다.

  • File 생성 포맷: bin 파일

  • 한 줄에 한 Point에 대한 직교좌표계 기준 X,Y, Z 위치 값,과 Intensity 값을 출력(Point N 개인 경우 N 줄)

Intensity 값은 UDP와 같은 통신에 의해 전송 시에는 0 ~ 255 사이로 표시되나, 파일로 생성 시에는 0~1 사이의 값을 가진다.

Semantic 타입

Intensity Field에 Intensity 대신 각 객체를 분류하는 값을 출력하는 타입으로, 센서 설정에서 Intensity Type을 Semantic으로 설정한다.

라이다 센서의 Semantic 타입 데이터는 카메라 센서의 Semantic 타입 데이터와 동일한 라벨링 색상표를 기준으로 매핑된 Intensity 값을 가진다.

관련한 자세한 내용은 카메라 센서의 Semantic Segmentation 데이터에 대한 라벨링 색상표를 참고한다.

Instance 타입

Intensity Field에 Intensity 대신 Vehicle, Pedestrian, Obstacle 객체를 분류한 값을 출력하는 타입으로, 센서 설정에서 Intensity Type을 Instance로 설정한다.

22.R4.2 버전까지 Instance Segmentation Label 규칙이 아래와 같이 적용됨

라이다 센서의 Instance 타입의 포인트 클라우드 데이터는 Vehicle. Ped, Obstacle 객체 별로 아래 라벨링 맵에 따른 Intensity 값을 가진다.

Class

Intensity (unsigned integer 8)

Vehicle

0 ~ 149

Ped

150 ~ 254.

Obstacle

Random (50, 100, 150, 200, 250, 45, 90, …) 50씩 증가

23.R1.0 버전부터 Instance Segmentation Label 규칙이 아래와 같이 바뀜

Vehicle. Ped, Obstacle 객체의 구분 없이 배치한 순서부터 1부터 순차적으로 값 할당함

  • Vehicle. Ped, Obstacle 외 객체에 대해서는 할당 값 없음

  • Ego Vehicle은 무조건 0값을 가짐

예시:

구분

Intensity Field Value

Intensity Pointcloud

Instance Pointcloud

EGO

intensity1

0

vehicle_car_car

intensity2

1

human_person_man

intensity3

2

human_person_man

intensity4

3

human_person_woman

intensity5

4

building

intensity6

0

POINT_OUTSIDE_FOV

*Point가 LiDAR의 감지거리 밖으로 나간 경우

0

0

…

… 

3D Bounding Box

라이다 센서 설정에서 Ground Truth(GT) 항목을 Instance로 설정하면 이에 대한 3D BBox의 정답 데이터가 { }_instance.txt 형식의 텍스트 파일로 생성된다.

22.R2.0 버전부터 AV (Autonomous Vehicle)의 인지 성능 향상을 위해 3D Bounding Box Object의 3차원 회전각 모두 제공함. 3D Bounding Box 파일(.txt)에 Yaw 외 Roll, Pitch 추가함.

차량 객체 하나를 기준으로 라이다 센서에서 검출하는 3D BBox 정답 데이터 구조의 예시는 아래와 같다.

위 데이터 구조에 대하여 3D BBox 정답 데이터를 구성하는 각 값에 대한 정보는 아래와 같다.

  • 0: 3D BBox로 둘러싸인 클래스, 크게 세 가지 클래스(Vehicle, Pedestrian, Object)로 분류

  • 1-3: center_x, center_y, center_z of 3D BBox (단위 : m)

    • LiDAR 좌표계를 기준으로 계산된 Object 좌표계의 원점

    • LiDAR 좌표계는 X-axis : Forward, Y-axis : Left, Z-axis : Up인 ISO 8855 convention을 따름

  • 4-6: roll (x 방향), pitch (y 방향), yaw (z 방향) of 3D BBox (단위 : radian)

    • LiDAR 좌표계를 기준으로 계산된 Object 좌표계의 회전각

  • 7-9: 검출한 객체의 크기, size_x (x 방향), size_y (y 방향), size_z (z 방향) (단위 : m)

  • 10: 센서 기준에서 객체까지의 상대 거리 (단위 : m)

  • 11-13: 센서 기준에서 객체에 대한 상대 속도, x, y, z 방향(단위: m/s)

  • 14: 검출된 객체의 unique ID

  • 저장 위치는 위에서 설명한 bin 파일과 동일하게 SaveFile/SensorData/LIDAR_* 이며, 파일 이름은 저장한 날짜와 시간으로 정해짐.

Camera 센서 데이터

RGB 이미지

Ego 차량에 카메라를 장착 후, 카메라 설정에서 Ground Truth 항목을 Intensity으로 설정하면 RGB 형식의 검출 데이터가 생성된다.

  • 생성 포맷: *.png 파일

  • 센서의 캡처 기능을 이용하면 검출 데이터는 ‘{시뮬레이터 설치 경로}/MoraiLauncher_Win/MoraiLauncher_Win_Data/SaveFile/SensorData/CAMERA_*’경로 에 저장된다. 파일 이름은 이미지를 저장한 날짜와 시간으로 정해짐.

Semantic Segmentation 이미지

카메라 설정에서 Ground Truth 항목을 Semantic로 설정하면 Semantic Segmentation 방식으로 검출된 이미지 데이터가 생성된다.

  • 생성 포맷 : png 파일

  • Semantic Segmentation 이미지 저장 위치와 파일 이름은 위의 RGB 이미지 방식과 동일함.

라벨링 색상표

Semantic Segmentation 방식으로 검출된 데이터는 아래의 라벨링 색상표에 따라, 차량, 보행자, 차선과 같은 동일한 객체끼리 분류된 각 클래스 별 RGB 값으로 구성된다.

라이다 센서의 Semantic 타입 데이터 또한 카메라 센서 데이터와 동일한 라벨링 색상표를 따르므로, 아래 공식에 의한 LiDAR Semantic 값이 표에 추가되었다.

  • (LiDAR Semantic Value) = Rounds((R + G + B) / 3)

  • * (예외 1). : Sky의 경우 LiDAR에서는 나타나지 않으므로 값이 할당되지 않음

  • ** (예외 2): 위 수식을 적용하면 Road Sign은 Asphalt 값과 같기 때문에 +1하여 128로 할당함

  • *** (예외 3): Obstacle로 배치하는 차량들은 Obstacle이 아닌 Vehicle로 분류

Sensor type

Camera

3D LiDAR

Object

Class

R

G

B

Rounds((R + G + B) / 3)

Vehicle

Vehicle

255

2

2

86

Sedan

255

60

60

125

SUV

255

75

75

135

Truck

255

90

90

145

Bus

255

105

105

155

Van

255

120

120

165

Pedestrian

Pedestrian

98

2

255

118

Obstacle***

Obstacle

236

255

2

164

Road

Asphalt

127

127

127

127

White Lane

255

255

255

255

Yellow Lane

255

255

0

170

Blue Lane

0

178

255

144

Crosswalk

76

255

76

135

Stop Line

255

0

0

85

Road Sign

204

127

51

128**

Map Object

Traffic Light

255

74

240

189

Traffic Sign

99

48

250

132

Sidewalk

255

102

30

129

Standing OBJ

113

178

37

109

Building

153

255

51

153

Road Edge

178

178

178

178

ETC

Sky

0

255

255

X*

ETC

23

2

6

10

* 표에서 클래스 명은 객체 분류하기 위한 목적으로 작성한 것이며, 2D/3D BBOX 데이터의 클래스 값과 무관함

  • 객체 종류

    • Vehicle : 배치 가능한 차량

    • Pedestrian : 배치 가능한 보행자 및 자전거, 보행기 등 탑승 가능한 물체에 탑승한 사람

    • Obstacle : 배치 가능한 사물

    • Road : Map에 기본적으로 구성되어 있는 도로 관련 표시 사항

    • Map Object : Map에 기본적으로 구성되어 있는 사물

    • ETC : 기타 물체 및 하늘

  • 라벨링 색상표 적용된 규칙

    • LiDAR Semantic Value는 Camera RGB 값의 평균 값의 정수 반올림한 값

    • Vehicle, Pedestrian, Obstacle 객체의 경우, 세부 클래스로 분류되지 않으면 기본 값이 할당되며, 세부 클래스로 분류된 경우 해당 종류 별 값 할당

Instance 이미지

카메라 설정에서 Ground Truth 항목을 Instance으로 설정하면 Instance 라벨 링에 따른 이미지가 검출된다.

  • 이미지 생성 포맷: png 파일

  • Instance 라벨 이미지는 같은 클래스라도 다른 픽셀 값으로 라벨링 되어 있어서 클래스 안에 ID 를 구분하도록 만듬.

2D Bounding Box

2D Bounding Box(2D BBox) 는 카메라 센서에서 검출한 객체를 둘러싼 2차원 직사각형 형태의 정답데이터로 Target Object들의 위치를 나타낸다.

타겟 객체의 위치 좌표 정보는 대상 객체를 감싸는 Pixel 좌표계 좌상단(Min) x, y + 우하단(Max) x, y의 총 4개 값으로 구성된다.

예를 들어 카메라 센서에서 검출한 차량 객체 한 개에 해당하는 좌표 정보는 아래와 같다.

Pixel 좌표계에서의 각 좌상단(Min) x, y값 + 우하단(Max) x, y 값

  • Min x (4 byte / float): pixel 좌표계에서 좌/상단의 x 좌표

  • Min y (4 bytes / float): pixel 좌표계에서 좌/상단의 y 좌표

  • Max x (4 bytes / float): pixel 좌표계에서 우/하단의 x 좌표

  • Max y (4 bytes / float): pixel 좌표계에서 우/하단의 y 좌표

검출 데이터 형식

2D BBox 데이터는 GT 타입을 Instance 로 설정하여 캡처하면 해당 Instance 이미지와 함께 텍스트 파일로 생성된다.

23.R1.0 버전에서는 2D BBox의 데이터 구조가 아래와 같이 바뀌었다.

  • 기존 6개 데이터 구조에 Instance Color (RGBA) 추가되어 객체 한 개 기준으로 총 7개의 데이터로 구성
    {객체의 태그명} + {픽셀 좌표계 좌상단(Min) x, y 값} + {픽셀 좌표계 우하단(Max) x, y 값} + 객체의 unique ID + Instance Color (RGBA)

  • 생성 포맷: txt 파일

  • 데이터 구조: 총 7개의 데이터로 구성( 객체 한 개 기준)

Index

Data

비고

1

Class Name of detected Object

Class definition의 Tag와 동일 (E.g., human_person_woman)

2

2D_BBOX_Xmin

3

2D_BBOX_Ymin

4

2D_BBOX_Xmax

5

2D_BBOX_Ymax

6

Unique ID of the detected Object

MORAI SIM에서 해당 Object에게 할당된 unique ID

7

Instance Color (RGBA)

Instance.png에서 해당 object가 가지는 색상을 의미.

RGB 3체널은 Semantic color (Class definition에서 해당 object의 Tag에 할당한 색상)을 의미하며, A는 Semantic class군에서 해당 object가 가지는 고유한 ID를 의미함. 


예시:

  • 검출 가능 타겟 객체 : Vehicle, Pedestrian, Obstacle

3D Bounding Box

23.R1.0 버전에서는 카메리 센서에서 검출한 객체에 대한 3D BBox 데이터 생성 기능을 제공한다.

3D Bounding Box(ㅇD BBox) 는 카메라 센서에서 검출한 객체를 둘러싼 3차원 직육면체 형태의 정답데이터로 Target Object들의 위치를 나타낸다.

타겟 객체의 위치 좌표 정보는 Camera 좌표계를 기준으로 3D BBox의 8 point 꼭짓점로 구성된다.

이 중 1개 point에 대한 Camera 좌표계는 Camera가 바라보는 방향의 축을 Optical Axis라고 할 때 아래의 (x, y, z) 로 구성된다.

  • X : Right

  • Y : Down

  • Z : Forward (=Optical Axis)

검출 데이터 형식

3D BBox 데이터는 GT 타입을 Instance 로 설정하여 캡처하면 해당 Instance 이미지와 함께 텍스트 파일로 생성된다.

  • 3D BBOX 표현값 정의 (단위 : m)

3D_BBOX_X1, 3D_BBOX_Y1, 3D_BBOX_Z1 : 1번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X2, 3D_BBOX_Y2, 3D_BBOX_Z2 : 2번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X3, 3D_BBOX_Y3, 3D_BBOX_Z3 : 3번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X4, 3D_BBOX_Y4, 3D_BBOX_Z4 : 4번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X5, 3D_BBOX_Y5, 3D_BBOX_Z5 : 5번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X6, 3D_BBOX_Y6, 3D_BBOX_Z6 : 6번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X7, 3D_BBOX_Y7, 3D_BBOX_Z7 : 7번 Point의 Camera 좌표계 기준 X, Y, Z 좌표
3D_BBOX_X8, 3D_BBOX_Y8, 3D_BBOX_Z8 : 8번 Point의 Camera 좌표계 기준 X, Y, Z 좌표

  • 생성 포맷: txt 파일

  • 데이터 구조: 총 77개의 데이터로 구성( 객체 한 개 기준)

Index

Label

비고

1

Class Name of detected Object

Class definition의 Tag와 동일 (E.g., human_person_woman)

2 ~ 4

3D_BBOX_X1, Y1, Z1

5 ~ 7

3D_BBOX_X2, Y2, Z2

8 ~ 10

3D_BBOX_X3, Y3, Z3

11 ~ 13

3D_BBOX_X4, Y4, Z4

14 ~ 16

3D_BBOX_X5, Y5, Z5

17 ~ 19

3D_BBOX_X6, Y6, Z6

20 ~ 22

3D_BBOX_X7, Y7, Z7

23 ~ 25

3D_BBOX_X8, Y8, Z8

26

Unique ID of detected Object

MORAI SIM에서 해당 Object에게 할당된 unique ID

27

Instance Color (RGBA)

2D BBOX에서의 Instance Color와 동일

  • 검출 가능 Target Object: Vehicle, Pedestrian, Obstacle

Depth 이미지

카메라 설정에서 Ground Truth 항목을 Depth로 설정하면 객체의 깊이 값을 검출하여 Depth 이미지로 생성한다.

  • Depth GT를 출력할 Range 내에서 거리가 멀어질 수록 흰색에 가까워짐.

  • 최소 거리보다 가까운 Object는 검은색(0)으로 표시됨.

  • 최대 거리보다 먼 Object는 검은색(0)으로 표시됨.

Veiw 기능으로 Depth GT 데이터를 확인하면 아래의 화면과 같이 각 설정한 Depth Data bit 범위 내 ([0,2^8] or [0,2^16])에서 빨간색 픽셀로 표시된다.

RGB Image

Depth Image (Simulator 상 Camera View)

센세 캡처 기능으로 Depth GT를 아래와 같은 이미지 파일(. png)로 생성할 수 있다.

Depth Image (png 파일)

  • 생성 포맷: png 파일

  • 저장 위치는 SaveFile/SensorData/CAMERA_* 이며, 파일 이름은 이미지를 저장한 날짜와 시간으로 정해짐.

기존 Depth GT 는 8 bits 이미지로만 생성되었으나, 23.R1.0에서는 카마라 센서의 Depth 이미지 생성 기능이 개선되어

8bit 설정 시 8bit Image, 16bit 설정 시 16bit Image로 생성 가능하다.

GPS 데이터

  • 저장 포맷 : txt 파일

  • GPS 데이터 구조는 아래와 같다.

    • 1: Latitude (단위: deg)

    • 2: Longitude (단위: deg)

    • 3: Altitude (단위: m)

    • 4: EastOffset (단위 : m), * UTM 맵 원점을기준으로, 동쪽 방향의 Offset 값 (Map 별로 고정된 상수값)

    • 5: NorthOffset (단위 : m), * UTM 맵 원점을기준으로, 북쪽 방향의 Offset 값 (Map 별로 고정된 상수값)

  • 저장 위치는 SaveFile/SensorData/GPS_* 이며, 파일 이름 또한 저장한 날짜와 시간으로 정해짐.

IMU 데이터

  • 저장 포맷 : txt 파일

  • IMU 데이터 구조는 아래와 같다.

    • 1-2 : TimeStamp. 1은 초 단위, 2는 나노초 단위.

    • 3-6 : Orientation X, Y, Z, W. 센서의 자세를 쿼터니안으로 표현.

    • 7-9 : Angular Velocity X, Y, Z. 각속도의 X, Y, Z 축 기준 component (단위 : rad/s)

    • 10-12 : Linear Acceleration X, Y, Z. 가속도의 X, Y, Z 축 기준 component (단위 : m/s^2)

  • 저장 위치는 SaveFile/SensorData/IMU_* 이며, 파일 이름 또한 저장한 날짜와 시간으로 정해짐.

Radar 데이터

  • 저장 포맷: bin 파일

  • bin 파일 내 각 radar measurement의 index 정보, 위치, 방위각, 속도 정보 및 rcs(amplitude) 값이 공백 없이 일렬로 저장되어 있음. 원점은 레이더를 마운트한 위치.

    • 0: point_id

    • 2-4: x, y, z별 위치

    • 5: azimuth

    • 6: range rate

    • 7 : rcs

  • 파이썬 사용자의 경우, numpy 의 fromfile 을 통해서 아래와 같이 float32 변수로 load가 가능함.

  • 저장 위치는 SaveFile/SensorData/RADAR_* 이며, 파일 이름은 포인트 클라우드를 저장한 날짜와 시간으로 정해짐.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.