Concept
이번 포스팅의 주제는 라이다 데이터 전처리 기법 #3, 변환 행렬 (Transformation matrix)를 이용한 라이다 PCD 변환입니다.
지상에서 수집되는 라이다는 수집되는 장치 또는 위치에 고정된 형태로 시스템이 구축된 상태에서 가동됩니다. 설치과정에서 축을 고정하게 되어 별도의 전처리가 필요하지 않지만, 예외인 경우가 있습니다. 대표적으로 드론 탑재 시스템이 있습니다.
3차원 축을 기준으로 움직이는 드론에 탑재된 라이다의 기준 축은 필연적으로 잡음이 섞이게 됩니다. 예측 필터로 그려지는 SLAM 모델링에서는 어느정도 잡음이 억제되지만, 순간순간의 PCD 프레임은 축이 기울거나 흔들릴 수 있습니다.
이럴때 간단하게 변환 행렬 (Transformation matrix)을 통해 축 변환을 PCD에도 적용할 수 있습니다.
POST
1.라이다 데이터 전처리 [KITTI DATASET 활용하기]
2. 각도에 따라 라이다 데이터 분할하기 [Segmentation]
3. 변환 행렬을 이용하여 라이다 데이터 축 변환하기 [Transformation]
4. 복셀화를 이용한 LIDAR 라이다 PCD 데이터 압축 [Voxcelization]
Algorithm (Transformation Matrix)
축 변환을 위해 선형대수학 변환 행렬의 개념이 도입됩니다. 3차원 공간의 좌표축의 중심(원점)을 기준으로 θ 만큼 회전시키는 행렬은 식 1과 같습니다. 각도와 변환을 원하는 축에 따라 PCD 데이터에 행렬 곱셈을 해주면 반시계 방향으로 회전됩니다.
- X축 회전 $R_{X}(\theta) =$ \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & \sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix}
- Y축 회전 $R_{Y}(\theta) =$ \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix}
- Z축 회전 $R_{Z}(\theta) =$ \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}
SourceCode
1.Source Code 및 데이터 다운로드
github.com/DEEPI-LAB/LiDAR-Point-Cloud-Preprocessing-matlab
git clone github.com/DEEPI-LAB/LiDAR-Point-Cloud-Preprocessing-matlab
2. 변환 행렬 함수 만들기
function output = transformation(input, angle)
x = input;
% 각도 라디안 변경
z =deg2rad(angle);
% Transformation 행렬
u_1 = [cos(z) ; 0; -sin(z)];
u_2 = [0 ; 1 ;0];
u_3 = [sin(z) ; 0 ; cos(z)];
P = [u_1 , u_2 , u_3];
x_p = x(:,1);
y_p = x(:,2);
z_p = x(:,3);
% 행렬 연산
new_x = (P*[x_p' ; y_p' ; z_p'])';
output= new_x;
end
저는 Y축을 기준으로 회전하기 위해 Y축 변환 행렬을 적용하였습니다. 다각도 회전을 위해서는 순차적으로 변환 행렬 곱셈을 연산하면 됩니다. 추가로 드론에서 지상 SLAM 구현을 위해 수집된 라이다 데이터 일부를 업로드했습니다. VLP16 모델이라 해상력은 낮지만 본 포스팅의 변환행렬 예시로는 좋은것같습니다.
Your Best AI Partner DEEP.I
AI 바우처 공급 기업
객체 추적 및 행동 분석 솔루션 | 제조 생산품 품질 검사 솔루션 | AI 엣지 컴퓨팅 시스템 개발
인공지능 프로젝트 개발 외주 및 상담
E-mail: contact@deep-i.ai
Site: www.deep-i.ai
'Matlab' 카테고리의 다른 글
[Matlab] 매트랩에서 개발자 코딩 폰트 설정하기 (D2 Coding) (0) | 2021.01.27 |
---|---|
[Matlab] 매트랩 화면에 개발자용 테마 적용하기 (3) | 2021.01.27 |
[Matlab] 이미지로 동영상 만들기 및 동영상의 프레임을 이미지로 저장하기 (0) | 2021.01.11 |
[Matlab] 극좌표계를 이용한 LIDAR 라이다 PCD 데이터 Segmentation #2 (0) | 2021.01.04 |
[Matlab] LIDAR 라이다 PCD (Point Cloud Data) 데이터 전처리 #1 KITTI DATASET 활용 (0) | 2020.12.10 |