일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- lidar
- Multi threaded
- PYTHON
- nvidia
- VLS-128
- Single threaded
- Motion compensate
- 센서셋
- Data Packet
- Frame rate
- Coding Test
- object detection
- Reflectivity
- HDmap
- 3-sigma rule
- Interference Pattern
- Phase Lock
- timestamp
- Data Race
- ApolloAuto
- Veloview
- Alpha Prime
- Phase Offset
- coordinate system
- Alpha Prime(VLS-128)
- Quaternion 연산
- PointCloud Frame
- Smart Pointer
- Azimuth
- Today
- Total
목록Perception Engineering (LiDAR) (19)
엔지니어 동행하기

LiDAR 기능에 Phase Lock이라는 기능이 있습니다. 그 기능이 무엇을 의미하며 어떤 상황에 어떻게 사용할 수 있는지에 대해 설명드리겠습니다. 해당 포스팅은 Velodyne VLS128 User Manual의 Appendix Phase Lock 내용을 바탕으로 작성하였습니다. 참고로 Robosense 사의 LiDAR 또한 Phase Lock 기능을 제공합니다. Phase Lock 기능과 PPS 1 PPS(Purse Per Second)는 1초 동안 1번의 pulse가 발생함을 의미하고, 이는 일반적으로 Time Synchronization에 사용됩니다. Phase Lock은 PPS의 rising edge 시점에 해당 Offset 각도의 레이저가 방출되는 것을 보장하는 기능입니다. 따라서 Phase..

LiDAR는 물체를 인식하기 위해 레이저를 방출하고 반사된 레이저를 다시 수신합니다. 이때, 물체의 material에 따라 레이저의 반사율이 달라지고, 측정되는 point의 intensity 값이 상이하게 측정됩니다. 이에 대해 자세히 설명드리겠습니다. Reflectivity (Robosense Ruby의 Manual 내용을 정리하였습니다. 해당 Manual에서는 Reflectivity를 Intensity 의미로 사용하고 있습니다.) Reflectivity와 관련하여 다음 3가지 사실을 알아야 합니다. - LiDAR의 출력인 Data Packet에 포함되고, 각 Data Point에 대응되는 Reflectivity 값을 바로 얻을 수 있습니다. - 0~255의 이산화 된 값으로 얻어집니다. - Objec..
회전식 LiDAR를 통해 얻어지는 PointCloud는 모터가 회전하며 주변 물체를 scan 하기 때문에 필연적으로 1 Frame 안에 있는 point 간 취득된 시점이 달라지게 됩니다. 따라서 자율주행차량과 같이 LiDAR가 움직인다면, 이를 고려하여 Data Point 각각의 위치를 보상해줘야 합니다. Frame과 timestamp LiDAR가 한 번 회전하면서 scan한 PointCloud는 3개의 Data Block씩 timestamp를 공유하며, 여러 timestamp 값을 가집니다. 이에 대한 자세한 설명은 아래 포스팅을 참고하면 됩니다. 2022.07.30 - [Perception Engineering (LiDAR)/LiDAR] - Robosense LiDAR의 Data Packet과 Poi..

LiDAR에서 출력되는 데이터 형태(Data Packet)와 실제로 LiDAR를 쓸 때 사용하는 Frame이라는 용어를 데이터 측면에서 연관 지어 설명드리도록 하겠습니다. 이에 대한 구체적인 이해를 하기 위해서는 Data Packet을 decoding 하고 frame으로 만들어 주는 Driver 코드를 알아야 합니다. 참고로 먼저 확인하면 좋은 포스팅 첨부합니다. 2022.07.24 - [Perception Engineering (LiDAR)/LiDAR] - Robosense LiDAR의 Data Packet 분석: Wireshark 활용 Robosense LiDAR의 Data Packet 분석: Wireshark 활용 Wireshark를 이용하면 장비 간 주고받는 데이터를 확인할 수 있습니다. LiDA..

LiDAR에서 Point Cloud 데이터, 즉 (x, y, z, intesntiy, timestamp) 배열 형태의 데이터가 바로 얻어지는 것이 아닙니다. LiDAR는 데이터에 대한 추가 정보를 담고 있는 묶음 (Data Packet) 형태로 출력을 합니다. 때문에 PC는 이 데이터를 Parsing 해서 Point Cloud 데이터를 얻어야 합니다. (Python) .pcap data Parsing Code Wireshark를 통해 LiDAR에서 PC로 입력되는 데이터를 확인할 수 있고, 이를 .pcap 확장자로 저장할 수 있습니다. 일회적으로 데이터를 분석하는 구체적인 방법은 아래 포스팅을 읽어 보시면 됩니다. 2022.07.24 - [Perception Engineering/LiDAR] - Robo..

딥러닝 모델을 사용하지 않고, Point Cloud 데이터에서 Vehicle을 찾고자 한 시도가 있었습니다. 기본적으로 고전적인 알고리즘을 활용하고 있습니다. LiDAR 데이터 특성에 맞게 적용한 부분에 대해 중점적으로 설명드리겠습니다. Segmentation Point Cloud 데이터를 취득하면, 각 Point를 Cluster로 묶어야 합니다. 즉 같은 Object에 속하는 Point끼리 묶어 Cluster를 만들어야 하며 이러한 과정을 Segmentation이라 합니다. 해당 논문에서는 Object로 Vehicle만 다루고 있습니다. Segmentation 알고리즘을 아래 pseudo code로 나타냈습니다. 기본 아이디어는 distance threshold(r)를 이용한다는 것입니다. 각 scan..

Wireshark를 이용하면 장비 간 주고받는 데이터를 확인할 수 있습니다. 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 Poro..

NVIDIA CUDA를 활용하여 계산을 가속화하고 결과적으로 Object Detection 컴포넌트의 출력 frame을 높일 수 있습니다. 이번 포스팅에서는 Object Detection 결과인 Bounding Box에 적용하는 NMS(Non Maximum Suppression) 알고리즘을 병렬 프로그래밍으로 작성해보겠습니다. NMS에 대한 설명보다 CUDA Programming의 전체적인 그림을 그리는데 중점을 둘 것입니다. CUDA Programming, Data Flow 핵심 아이디어는 데이터를 CPU와 GPU사이에서 옮기는 비용이 크기 때문에, 가속하고자 하는 연산은 GPU에서 모두 끝내고, 결과 데이터만 CPU로 다시 가져오는 방식으로 프로그래밍을 한다는 것입니다. Data Flow를 3가지 단..