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

Concurrency Programming에서 생길 수 있는 대표적인 문제로 Data Race가 있습니다. 이를 해결하기 위해 std::mutex를 사용하게 되는데, mutex의 operations를 그대로 사용하는 경우 개발자가 실수를 하기 쉽습니다. 따라서 std::lock_guard를 사용하면 실수를 없앨 수 있습니다. ( 그런데 이는 Concurrency Programming의 또 다른 Dead Lock이라는 문제를 유발할 수 있습니다. 이를 개선한 여러 lock manager들-unique_lock, scoped_lock, shared_lock 또한 존재합니다.) 이에 대해 자세히 하나씩 설명드리겠습니다. 먼저 다음 포스팅을 참고하시면 좋습니다. 2022.08.07 - [Modern C++/Co..

처음 접하는 경우 헷갈릴 수 있는 개념으로, Concurrency Programming과 Parallel Programming의 차이에 대해 확실히 구분하고 갈 필요가 있습니다. 또한 이러한 프로그래밍 방식을 사용하기 위해 기초적으로 알아야 하는 std::thread에 대해 설명드리겠습니다. Single threaded process VS Multi threaded process Thread에 관한 기본적인 설명은 다음 블로그를 참고하면 됩니다. https://goodgid.github.io/What-is-Thread/ 쓰레드(Thread)란 무엇인가? Index goodgid.github.io 기본적으로 Process에는 Main Thread가 존재하며 이외에 다른 Thread가 없을 경우 Single..

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..