일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 | 31 |
- PointCloud
- Coding Test
- Multi threaded
- Data Packet
- Frame rate
- object detection
- Interference Pattern
- VLS-128
- coordinate system
- HDmap
- lidar
- nvidia
- Alpha Prime
- Single threaded
- PointCloud Frame
- Reflectivity
- Motion compensate
- Phase Lock
- Smart Pointer
- timestamp
- PYTHON
- Phase Offset
- 3-sigma rule
- Data Race
- Veloview
- 센서셋
- Quaternion 연산
- Azimuth
- ApolloAuto
- Alpha Prime(VLS-128)
- Today
- Total
엔지니어 동행하기
Robosense LiDAR의 Data Packet 분석: Wireshark 활용 본문
Robosense LiDAR의 Data Packet 분석: Wireshark 활용
엔지니어 설리번 2022. 7. 24. 14:01Wireshark를 이용하면 장비 간 주고받는 데이터를 확인할 수 있습니다. LiDAR를 PC에 연결하고 PC에서 LiDAR의 Data Packet을 파싱해 Point Cloud 데이터를 사용합니다. 이때 이를 계산하는 일련의 과정에서 문제가 발생하면 당연히 가장 첫 번째 단에서 데이터가 PC에 잘 들어오는지를 먼저 확인해야 합니다. 즉 LiDAR의 Data Packet이 이더넷에 실리는 데이터 형태를 Wireshark로 확인해야 합니다.
Robosense Ruby의 Data Packet
먼저 메뉴얼 상에 Ruby LiDAR의 Data Packet 구조를 확인해야 합니다.
Robosense에서는 MSOP이라는 용어를 정의해서 사용하고 있습니다. MSOP(Main data Stream Output Porotocol)은 Scan 해서 얻은 데이터, 즉 Point Cloud 정보를 포함하고 있습니다. MSOP Packet은 총 1248 bytes로 Header가 80 bytes, 각 388 bytes인 Data Block 3개, Tail이 4 bytes로 이루어져 있습니다.
Communication Protocol
아래 표를 보면, 80 bytes인 Header가 또 어떤 정보들로 이루어져 있는지 확인할 수 있습니다. 80bytes 중 앞쪽 4 bytes가 Header Header 정보임을 알 수 있습니다. 각 정보가 의미하는 바는 메뉴얼에 자세히 설명되어 있습니다. (해당 포스팅은 이를 설명하는 것이 아닌, Protocol를 이용해 Wireshark Data를 해석하는 데에 초점을 두고 있습니다.) 또한 Data Field, Tail에 대한 설명도 확인할 수 있습니다.
Wireshark Data 분석 방법
LiDAR와 PC가 연결된 상태에서 Wireshark를 통해 아래와 같이 LiDAR 데이터를 확인할 수 있습니다. Frame의 크기는 1290 bytes이고, 그 중 LiDAR 데이터의 크기는 1248 bytes입니다. 즉 42 bytes만큼의 추가적인 정보가 붙어서 이더넷에 실린다는 것을 알 수 있습니다. 그 중 일부는 Source Port(6699), Destination Port(6699), Length, Checksum입니다.
이러한 데이터들은 실제로 Hex (16진수) format으로 통신이 이루어지고 이는 아래에서 확인할 수 있습니다. 16진수 표현을 위의 정보와 매칭할 수 있어야 합니다. 먼저 16진수 숫자 2개가 1 bytes에 대응됩니다. 즉 첫 번째 노란색 Box의 1a 2b는 2 bytes이고, 이는 Source Port가 6699 임을 의미합니다. 이런 식으로 각 bytes가 무엇을 의미하는 분석 해야 합니다. 파란색으로 Drag 된 부분이 LiDAR Data(MSOP Packet)과 대응되며 1284 bytes입니다.
실제로 16진수 1a2b를 10진수로 변환하면 6699입니다.
https://www.rapidtables.com/convert/number/hex-to-decimal.html
마찬가지 방식으로 LiDAR Data 내에 있는 Header 정보를 분석할 수 있습니다. LiDAR Data를 분석할 때는 메뉴얼의 Communication Protocol을 활용하면 됩니다. 앞쪽의 80 bytes가 Header에 해당하고 그 중 4 bytes가 Header의 Header 정보를 나타냅니다. 55 aa 05 5a가 의미하는 바는 이미 약속이 돼 있고, 메뉴얼을 확인하면 됩니다.
https://www.robosense.ai/en/resources
Downloads - RoboSense LiDAR - Autonomous Driving, Robots, V2X
www.robosense.ai
'Perception Engineering (LiDAR) > LiDAR' 카테고리의 다른 글
Robosense LiDAR의 Data Packet과 PointCloud Frame의 관계 (0) | 2022.07.30 |
---|---|
Python, LiDAR pcap데이터 Parsing 코드 구현 (0) | 2022.07.25 |
Veloview 활용, 선택한 Point의 Azimuth & laserID 확인하기 (0) | 2022.06.18 |
LiDAR Timestamp(UTC time)의 의미, Frame rate 계산&분석 방법 (0) | 2022.06.18 |
Alpha Prime(VLS-128) 데이터, VeloView로 확인하기 (0) | 2022.06.12 |