Sensor Data Format
본 페이지는 각 센서를 통해 저장한 데이터를 해석하는 방법에 대해 기술한다.
Sensor data 저장 방법
센서를 세팅 후 연결한 상태에서 시뮬레이터 상에 Space Key를 누른다.
키를 누르면 아래와 같이 SaveFile/SensorData/ 폴더에, 센서에서 나오는 센싱 데이터와 라벨 데이터가 Space Key를 누른 시점에 대해서 저장된다.
LiDAR Point Cloud
저장 포멧 : bin 파일
bin 파일 내 4바이트 씩 포인트 클라우드의 x, y, z, intensity가 공백없이 일렬로 저장되어 있음. 원점은 라이다를 마운트한 위치.
파이썬 사용자의 경우, numpy 의 fromfile 을 통해서 아래와 같이 load가 가능함.
라이다 포인트 클라우드는 semantic 설정 시 차량, 보행자, 차선 등 object class 마다 다른 intensity가 나오도록 되어 있음.
Class | Intensity (unsigned integer 8) |
---|---|
Asphalt | 127 |
Building | 153 |
Traffic Light | 190 |
White Lane | 255 |
Yellow Lane | 170 |
Blue Lane | 144 |
Road Sign | 127 |
Traffic Sign | 132 |
Crosswalk | 136 |
Stop Line | 85 |
Sidewalk | 129 |
Road Edge | 178 |
Standing OBJ | 109 |
Object On Road | 92 |
Vehicle | 86 |
Pedestrian | 118 |
Obstacle | 164 |
StopLinePrefabs | 92 |
Light | 94 |
Obstacle1 | 67 |
Obstacle2 | 101 |
Obstacle3 | 101 |
Obstacle4 | 67 |
Obstacle5 | 101 |
Sedan | 125 |
SUV | 135 |
Truck | 145 |
Bus | 155 |
Van | 165 |
Stroller | 40 |
Stroller_person | 50 |
ElectronicScooter | 60 |
ElectronicScooter_Person | 70 |
Bicycle | 80 |
Bicycle_Person | 90 |
Motorbike | 100 |
Motorbike_Person | 110 |
Sportbike | 120 |
Sportbike_Person | 130 |
라이다 포인트 클라우드는 instance 설정 시 차량과 보행자 별로 다른 intensity가 나오도록 할 수 있음. 이는 라이다로 잡히는 shape 마다 서로 다른 identity를 부여하기 위한 용도로 쓰임.
Class | Intensity (unsigned integer 8) |
---|---|
Vehicle | 0 ~ 149 |
Pedestrian | 150 ~ 254. |
Obstacle | Random (50, 100, 150, 200, 250, 45, 90, …) 50씩 증가 |
저장 위치는 SaveFile/SensorData/LIDAR_* 이며, 파일 이름은 포인트 클라우드를 저장한 날짜와 시간으로 정해짐.
3D Bounding Box
22.R2.0 버전부터 AV (Autonomous Vehicle)의 인지 성능 향상을 위해 3D Bounding Box Object의 3차원 회전각 모두 제공함. 3D Bounding Box 파일(.txt)에 Yaw 외 Roll, Pitch 추가함.
저장 포멧 : txt 파일
txt 파일 안 3d bbox 포멧 (key : value)
0 : 3d bbox들의 클래스 이름
Vehicle, Pedestrian, Object
1 : 3d bbox들의 클래스 id
Vehicle : 0, Pedestrian : 1, Object : 2
2-4 : 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을 따름
5-7 : roll (x 방향), pitch (y 방향), yaw (z 방향) of 3D BBox (단위 : radian)
LiDAR 좌표계를 기준으로 계산된 Object 좌표계의 회전각
8-10 : size_x (x 방향), size_y (y 방향), size_z (z 방향) (단위 : m)
11-12 : 상대 거리와 상대 속도 (단위 : m, m/s)
13 : 감지된 물체의 unique ID
저장 위치는 SaveFile/SensorData/LIDAR_* 이며, 파일 이름은 저장한 날짜와 시간으로 정해짐.
RGB Image
저장 포멧 : .png 파일
카메라를 설치한 후, 카메라 세팅 패널 창 Image Setting 부분 Ground Truth 항목에 None으로 설정해야 RGB로 저장 됩니다.
저장 위치는 SaveFile/SensorData/CAMERA_* 이며, 파일 이름은 이미지를 저장한 날짜와 시간으로 정해짐.
Semantic Segmentation Image
저장 포멧 : png 파일
카메라를 설치한 후, 카메라 세팅 패널 창 Image Setting 부분 Ground Truth 항목에 Semantic으로 설정해야 semantic 라벨 이미지로 저장됨.
Segmentation 이미지 라벨링 맵의 RGB 값은 아래와 같음.
Class | R | G | B |
---|---|---|---|
Sky | 0 | 255 | 255 |
ETC | 23 | 2 | 6 |
Asphalt | 127 | 127 | 127 |
Building | 153 | 255 | 51 |
Traffic Light | 255 | 74 | 240 |
White Lane | 255 | 255 | 255 |
Yellow Lane | 255 | 255 | 0 |
Blue Lane | 0 | 178 | 255 |
Road Sign | 204 | 127 | 51 |
Traffic Sign | 99 | 48 | 250 |
Crosswalk | 76 | 255 | 76 |
Stop Line | 255 | 0 | 0 |
Sidewalk | 255 | 102 | 30 |
Road Edge | 178 | 178 | 178 |
Standing OBJ | 113 | 178 | 37 |
Object On Road | 178 | 9 | 90 |
Vehicle | 255 | 2 | 2 |
Pedestrian | 98 | 2 | 255 |
Obstacle | 236 | 255 | 2 |
StopLinePrefabs | 255 | 22 | 0 |
Light | 255 | 2 | 25 |
Obstacle1 | 100 | 100 | 2 |
Obstacle2 | 200 | 100 | 2 |
Obstacle3 | 100 | 200 | 2 |
Obstacle4 | 2 | 100 | 100 |
Obstacle5 | 2 | 200 | 100 |
Sedan | 255 | 60 | 60 |
SUV | 255 | 75 | 75 |
Truck | 255 | 90 | 90 |
Bus | 255 | 105 | 105 |
Van | 255 | 120 | 120 |
Stroller | 120 | 0 | 0 |
Stroller_person | 120 | 15 | 15 |
ElectronicScooter | 140 | 20 | 20 |
ElectronicScooter_Person | 140 | 35 | 35 |
Bicycle | 160 | 40 | 40 |
Bicycle_Person | 160 | 55 | 55 |
Motorbike | 180 | 60 | 60 |
Motorbike_Person | 180 | 75 | 75 |
Sportbike | 200 | 80 | 80 |
Sportbike_Person | 200 | 95 | 95 |
저장 위치와 파일 이름은 RGB 이미지를 저장하는 방식과 동일함.
Instance Image
이미지 저장 포멧 : png 파일
2d bbox 라벨링 : txt 파일
카메라를 설치한 후, 카메라 세팅 패널 창 Image Setting 부분 Ground Truth 항목에 instance으로 설정해야 instance 라벨 이미지와 2d bbox로 저장됨.
Instance 라벨 이미지는 같은 클래스라도 다른 픽셀 값으로 라벨링 되어 있어서 클래스 안에 ID 를 구분하도록 만듬.
txt 파일 안에 들어가는 2d bbox는 KITTI data set과 되도록 비슷한 포멧으로 구성함.
1 : 2d bbox들의 클래스
Vehicle
Pedestrian
Object
2 : Truncated(1), 현재는 0으로만 출력.
3 : Occluded(1), 현재는 0으로만 출력.
4 : Alpha(1), 현재는 0으로만 출력.
5-8 : 2d bbox의 좌상단 우하단 좌표. 순서대로 x1, y1, x2, y2
9-11 : 물체의 dimension. point cloud 3d bbox와 중복되므로 0으로만 출력
12-14 : 물체의 location. point cloud 3d bbox와 중복되므로 0으로만 출력
15 : 물체의 회전각 (yaw). point cloud 3d bbox와 중복되므로 0으로만 출력
16 : 물체와 카메라간 상대 거리
17-19 : 물체와 카메라간 상대 속도 x, y, z
저장 위치와 파일 이름은 RGB 이미지를 저장하는 방식과 동일함.
Depth Image
저장 포멧 : png 파일
카메라를 설치한 후, 카메라 세팅 패널 창 Image Setting 부분 Ground Truth 항목을 Depth로 설정해야 Depth 이미지로 저장됨.
Depth GT를 출력할 Range 내에서 거리가 멀어질 수록 흰색에 가까워짐.
최소 거리보다 가까운 Object는 검은색(0)으로 표시됨.
최대 거리보다 먼 Object는 검은색(0)으로 표시됨.
Simulator 상 Depth GT의 Camera View는 선택한 Depth Data bit 범위([0,2^8] or [0,2^16]) 내 값에서 빨간색 픽셀로 출력되나, Depth Image(png 파일)는 흑백인 8bit image로 출력됨.
저장 위치는 SaveFile/SensorData/CAMERA_* 이며, 파일 이름은 이미지를 저장한 날짜와 시간으로 정해짐.
GPS data
저장 포멧 : txt 파일
txt 파일 안 GPS data 포멧
1 : Latitude (단위 : deg)
2 : Longitude (단위 : deg)
3 : Altitude (단위 : m)
4 : EastOffset (단위 : m)
5 : NorthOffset (단위 : m)
저장 위치는 SaveFile/SensorData/GPS_* 이며, 파일 이름 또한 저장한 날짜와 시간으로 정해짐.
IMU data
저장 포멧 : txt 파일
txt 파일 안 IMU data 포멧
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_* 이며, 파일 이름 또한 저장한 날짜와 시간으로 정해짐.