Skip to main content
Skip table of contents

센서 통신 프로토콜

이 섹션에서는 센서의 검출 데이터를 외부로 전송하기 위한 ROS, UDP와 같은 센서 통신 프로토콜 정보를 설명한다.


 센서 종류별로 지원하는 통신의 메시지 프로토콜 및 데이터 구조에 대해 설명한다.

Camera

시뮬레이터에서는 카메라 센서의 통신으로 ROS, UDP, Apollo를 지원한다.

ROS

카메라 센서에서 전송하는 ROS 메시지의 프토토콜 정보은 아래와 같다.

카메라의 Depth 이미지는 다른 GT 타입과 달리 ROS 메시지가 아래와 같다.

 

UDP

카메라 센서에서 전송하는 UDP 메시지 프토토콜 정보는 아래와 같다.

23.R1.0 에서는 카메라 센서의 UDP 패킷 구조가 아래와 같이 바뀌었다.

  • Timestamp (8 bytes) 정보 추가

  • Raw Image Data를 JPEG 압축하여 전송. 같은 Resolution이더라도 매번 Packet의 크기, 개수 변동이 생길 수 있음.

  • JPEG Packet의 크기가 64987 Byte가 넘어가면 64987Byte씩 여러 Packet으로 나누어 전송

전송 데이터 패킷 구조

  • Header (3byte) : Packet Header 값.“MOR”

  • Timestamp (8byte) : TotalSecond(4byte) + Millisecond(4byte)

  • Index (4byte) : 해당 Packet 내 JPEG Data Block의 순서

  • Size (4byte) : 해당 Packet 내 JPEG Data Block의 크기

  • Partial JPEG Data (가변, 최대 64,987byte) : JPEG 압축된 이미지의 일부 데이터

  • Tail (2byte) : Packet의 Tail 값. “AI”. 마지막 Packet인 경우 “EI”

 

2D/3D BBox 데이터 패킷 구조

23.R1.0 에서는 카메라 센서의 2D/3D BBox 데이터를 UDP 전송 기능을 제공한다.

  • UDP 패킷에는 Traffic Light를 제외한 Vehicle, Pedestrian, Obstacle 객체에 대한 2D/3D BBox 데이터 정보가 함께 전송된다.

  • ObjectX Data에 해당하는 Packet의 크기가 64987 Byte가 넘어가면 64987Byte씩 여러 Packet으로 전송

  • UDP Packet Field (총 (115 x N) + 13 byte)

    • Header (3byte) : Packet 데이터 종류 설명

      • “BOX” 로 고정 값

    • Timestamp (8byte) : TotalSecond(4byte) + Millisecond(4byte)

    • Index (4byte)

    • Size (4byte)

    • Object1 Data Block (96 + 16 + 3 = 115 byte) : Object 별 정보가 담긴 Block

      • 3D BBOX (4x3x8 = 96 byte) : 3D BBOX의 8-point 코너값 출력

      • 2D BBOX (4x4 = 16 byte) : 2D BBOX의 표현 값 출력

      • Class (3 byte) : 해당 Object의 Tag 정보

    • Tail (2byte) : Packet의 Tail 값. “EO”

3D LiDAR

시뮬레이터에서는 3D 라이다 센서의 통신으로 ROS, UDP를 지원한다.

 

ROS

설정 방법은 카메라와 동일하며 아래와 같은 메시지 프로토콜을 따른다.

Velodyne 3D 라이다 모델은 시뮬레이터에서 ROS 통신을 지원하지 않으므로 아래와 같은 방법으로 통신한다.

  1. UDP통신으로 velodyne_LiDAR에서 나오는 데이터를 velodyne package를 이용하여sensor_msgs/PointCloud2로 변환

  2. roslaunch velodyne_pointcloud 32e_points.launch rpm:={RPM Value}

  • {RPM Value} 는 설정한 Rotation Rate에 대응하는 값 입력

    • RPM = Rotation Rate * 60e

    • 예시) 5Hz 설정 시 → 300 입력

    • RPM 미입력 시 Default 값인 600(10Hz)으로 설정됨.

 

UDP

시뮬레이터에 제공하는 3D LiDAR Protocol은 아래의 Velodyne의 Protocol을 그대로 따른다.

 

GPS

설정 방법은 카메라와 동일하며 아래와 같은 메시지 프로토콜을 따른다.

ROS

  • Message Type : morai_msgs/GPSMessage

  • Default Topic : /gps

  • 타입 설명 : GPS정보

 

UDP

설정 방법은 카메라 센서와 동일하며 아래와 같은 프로토콜을 따른다.

 

 

  • NMEA0183 Protocol을 따르고, RMC/GGA sentence 두가지 format으로 동시에 들어온다.

  • Format Type(char): GPRMC/GPGGA. Format의 종류를 나타낸다.

  • Time(float) : GPS 정보가 들어올 때의 time stamp.

  • 차량 위치 정보(Lat/Long/Alt, float) : GPS 센서에서 측정한 위도/경도/고도.

 

IMU

ROS

설정 방법은 카메라와 동일하며 아래와 같은 메시지 프로토콜을 따른다.

  • Message Type : sensor_msgs/Imu

  • Default Topic : /Imu

  • 타입 설명 : IMU정보

 

UDP

설정 방법은 카메라 센서와 동일하며 아래와 같은 프로토콜을 따른다.

 

  • 전체 패킷 크기 : 107 Bytes

  • 데이터 크기 : 80 Bytes

  • Orientation(ori_*)

    • 방향을 나타내는 데이터이며 Quaternian이다.

  • Angular Velocity(ang_vel_*)

    • 각속도를 나타내는 데이터이며 rad/s 단위이다.

  • Linear Acceleration(lin_acc_*)

    • 가속도를 나타내는 데이터이며 m/s^2 단위이다.

 

Radar

ROS

  • Message Type : morai_msgs/RadarDetections.msg

  • Default Topic : /radar

  • 타입 설명 : radar정보

    • Header header

    • uint16 point_id

    • float32 x

    • float32 y

    • float32 z

    • float32 azimuth

    • float32 rangerate

    • float32 rcs

  • Radar(for RVIZ visualization)

    • Message Type : sensor_msgs/PointCloud

    • Default Topic : /radar

    • 타입 설명 : radar pcd정보

 

JavaScript errors detected

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

If this problem persists, please contact our support.