K-dimensional Tree는 K 차원으로 공간상의 점들을 정리하는 자료구조 중 하나이다. 이진트리(binary tree)의 종류인데, 제약조건이 추가 됐을 뿐이다. K-d Tree는 range나 nearset neighbor 탐색에 매우 유용하다. Kd tree는 그 공간의 차원에 제한 되는데, 포인트 클라우드는 일반적으로 3차원이므로 여기서 사용하는 kdTree의 차원은 3차원이다. kd tree는 기본적으로 x축을 기준으로 yz 평면에 평행하게 한번, y축 기준으로 한번, z축 기준으로 한번 나누어 이를 Tree 형식으로 만드는 원리이다. 이렇게 계속 나눠서 이진 트리 형태의 구조가 된다. 사진에서는 KdTree를 이용해서 Nearest-Neighbor 방법이 적용되는 모습을 볼 수 있..
#rangeimage #로봇공학 #pointcloud #포인트클라우드 Range image란 특정 위치에서 환경속의 특정 포인트까지의 거리를 2D 이미지로 표현한 것을 말한다. 특정 위치는 주로 센서의 위치가 되는 경우가 일반적이다. Range image는 거리에 상응하는 픽셀값들을 가지게 된다. 만약 range image를 만드는게 사용 된 센서가 픽셀값들이 잘 켈리브레이션이 되어 있다면 바로 실제 수치값으로 변환될 수 있다. ToF를 쓰는 뎁스카메라에 대해서 이야기해보자. 깊이는 RF펄스 대신 광펄스가 사용된다는 점을 제외하고 rador image와 range image는 비슷하다. ToF는 스캔방식이 아니고 single light pulse 형태로 전체 환경(scene)을 캡쳐한다는 점에서 회전 하..
Point cloud의 경우 실제 표면에 대한 point들의 집합을 말한다고 볼 수 있다. 따라서 Point 들의 집합으로 어떻게 표면을 나타낼 수 있는지가 중요한 요소가 된다. 표면은 작은 평면들의 집합으로 볼 수 있다. 따라서 먼저 Point set들을 평면으로 나타낼 수 있어야하고 이를 위해 중학생때 배웠던 평면방정식을 한번 되짚어보자. 평면 방정식은 점 3개의 위치만 알면 이를 평면식으로 나타낼 수 있다. 점 p1, p2, p3와 크래머의 정리를 이용해서 평면의 법선벡터와 원점과의 거리 d를 확인 할 수 있다. Pointcloud에서는 2가지 방법으로 법선 벡터를 찾을 수 있다. 1. point cloud에서 surface meshing 방법을 이용해 surface를 만들고 mesh를 바탕으로 법..
설치 환경 Ubuntu 20.04 ROS Noetic(에서 뭔가 문제가 있다..추후에 확인하는 걸로 개인적으로 멜로딕으로 하는 게 맞는 것 같다...) !!! 참고로 로스를 깔면 PCL이 설치되어 있다. 새로 잘못깔면 ROS를 밀어야하는 경우도 생기니 조심하자.!!! 설치 순서 1. 설치 파일 받기 https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.10.1 tar xvfz pcl-pcl-1.10.1.tar.gz tar xvfz pcl-pcl-1.10.1.tar.gz 2. 경로 이동 후 build 폴더 만들기 cd pcl-pcl-1.7.2 && mkdir build && cd build 3. CMake 하기 cmake .. 4. install 하기 ..