자율주행 자동차/인지

라이다란 - LiDAR 기초, 라바콘 인지, 딥러닝

이게될까 2024. 7. 3. 23:55
728x90
728x90

이 것이 라이라의 기본적인 원리이다.

레이저가 발사하고 복귀한 시간을 가지고 우린 거리를 구할 수 있다. 
거리 = 시간 / 2 * 빛의 속도 - TOF 

이렇게 구한 거리를 가지고 Point Cloud를 만들 수 있고, 그 정보를 ROS를 통해 Python이나 matlab에서 사용하고 있다.

 

우리는 32채널 라이다를 사용한다. 

1.수직 해상도 (Vertical Resolution): 32채널
2.수평 해상도 (Horizontal Resolution): 512, 1024, 또는 2048
3.범위 (Range): 120m
4.수직 시야각 (Vertical Field of View): 33.2° (±16.6°)
5.수직 각도 해상도 (Vertical Angular Resolution): 0.53° - 1° (여러 옵션)
6.정밀도 (Precision): ±1.5 - 10cm
7.초당 점 수 (Points Per Second): 655,360
8.회전 속도 (Rotation Rate): 10 또는 20Hz
9.전력 소비 (Power Draw): 14 - 20W
10.무게 (Weight): 425g
11.방수 방진 등급 (Ingress Protection Rating): IP68, IP69K

 

 

여기서부터 라바콘 인지에 대한 설명

각종 파라미터 들이다
roi - 내가 관심 있는 지역의 (x 시작 , x 끝, y 시작, y 끝, z 시작, z 끝 )이다.
NumClusterPoint는 몇 개 이상의 포인트가 모여야 하나의 클러스터로 보겠다는 뜻이다.
시뮬레이션에선 64채널 라이다를 사용하였으므로 'OS1Gen1-64'를 썼으나 실 사용에선 32로 바꾸고, 옆에 있는 포인트는 수평 방향으로 몇개를 사용할 것인지 이다.

OS1Gen1-32 파라미터 내부

rosReadXYZ에서 라이다 데이터를 받을 때 차량이 이동하는 변위를 imu로 계산하여 적절히 계산하여 준다.

포인트 클라우드!

전처리도 이러한 방식으로 진행하였다.

 

여기서 0.3은 최소거리로, 각 점이 0.3m마다 연결되어있어야 하나의 클러스터로 본다는 뜻이다.
그래서 여기서 아까 지정해준 NumClusterPoints 개수가 넘는 cluster 들만 인정해준다.!

이렇게 하여 전방에 있는 라바콘을 인지하였다.

최소 거리가 2m 인 경우 전부 하나의 cluster로 본다.

최소 거리가 0.5m인 경우 애매하게 나눠진 것을 볼 수 있다.

0.05m로 나눈 경우이다. 이제 거의 모든 객체를 분할하였다. 또한 그러면서 많은 물체들이 사라지기도 하였다.

 

라이다 딥러닝

Pre-trained(사전 학습 된) 네트워크를 가져와서 사용합니다.
네트워크는 Convolution으로 이루어진 이미지 네트워크와 비슷하며 Point Cloud 의 X,Y,Z좌표, Intensity, 거리 값이 들어갑니다.

Pre-trained 모델 사용 이유
1.
데이터 부족
2.
학습 리소스 부족

 

 

결과는 처참했습니다.....

차량도 제대로 잡지 못하고, 배경을 차라고 잡기도 하고...

64채널 라이다가 아니라서 그런 것 같네요 ㅎ....

 

이건 gazebo에서 진행한 segmentation인데.... 하필 intensity 데이터를 받지 않아서 할 수 있는게 없네요...

 

728x90