Post

PCL 삽질기

PCL 삽질기

라이다 다뤄보기 위해 드라이버부터 설치하는데 거기서부터 모든 것이 시작되었다.(사실 나중에 알고보니 PCL 문제도 아니었다. 젠장)

C++ 버전 11로 빌드해야 한다는 정체불명의 메모 하나를 믿고 단순히 C++버전만 14에서 11로 낮춰 주었다.

당연하게도 C++11은 PCL 1.10.0의 최소 요구사항 C++14를 충족하지 못하여 빌드가 불가능했다.

그때 눈치를 챘어야 했는데….

한치의 의심도 없이 PCL 충돌 문제만 해결하면 라이다 이슈를 해결할 수 있으리라 믿고 장장 5일에 걸린 대 삽질을 시작했다.

무의미한 반복과 지금 와서보면 의미없는 짓을 제거하고 누군가에겐 도움이 될 만한 내용만 걸러서 서술해 보겠다.(쓰고 나니 별거 없더라…)

PCL 버전을 낮추기 위한 방법

먼저 깃허브에서 원하는 버전을 받아준다.

https://github.com/PointCloudLibrary/pcl/releases

우분투 환경에서 진행할 것이기에 tar.gz 파일로 받아준다.

다운받은 경로로 가서 압축을 풀어준다

1
2
cd Downloads
tar xvfz pcl-pcl-1.당신이 받은 버전.tar.gz

압축 푼 폴더에 build 폴더를 만들고 cmake 한다

1
2
3
4
cd pcl-pcl-1.당신이 받은 버전.tar.gz
mkdir build
cd build
cmake ..

여기까지 순조롭게 왔다면

1
sudo make -j8 install

필자의 경우 cmake 단계에서도 몇번 고배를 마시고, make install에서는 왠지는 몰라도 거의 모든 에러를 다 경험한 것 같다.

  1. 메모리 에러 -> 별도의 글로 다루어 보겠다.
  2. c++ 충돌
  3. 저장공간 부족
  4. 그냥 엄청 느려서 한눈판사이 절전모드 들어감

5…..지금 생각해보니 그냥 본인의 잘못이 큰 것 같다만..

PCL…그냥 단순한 라이브러리라고 생각했는데 여태껏 빌드해본 어떤 패키지(몇 개 안해봄)보다 무겁고 험난했다.

중간에 메모리 에러가 나서 몇번씩 초기화하고 메모리를 잡아가면서 진행해야 했고, 그 때문이었는지 그냥 우연이었는지 저장공간 부족 에러가 떠서 잘 안쓰는 파일을 다른데로 이주시키고 다시 진행해야 했고, 여러번 끊겼다가 다시 시작해서인지 GNU관련 에러도 뿜어내고, 무엇보다도 J8, J12, J16 다 해봤는데 정말 역대급으로 속도가 느렸다.

특히 J16으로 하니 모든 코어를 풀로 사용해서 그런지 커서가 안움직일 정도라서 그냥 모셔두어야 했다.

결국 몇번 터뜨려먹은 다음에 J12로 비행기 이륙소리를 한참 들어가면서 결국 빌드에 성공했다.

이렇게 빌드 하고 나면 정상적인 설치와 설치된 버전 확인을 위해

1
dpkg -s libpcl-dev | grep 'Version'

명령어를 입력하여 확인할 수 있다.

그러나 필자를 기다리고 있는 에러는 따로 있었다. 다시 라이다 패키지로 돌아와 빌드를 진행하니…. “Could not find a package configuration file provided by “pcl_ros””

그렇다. 그랬던 것이다. 내가 백날 설치했던 PCL은 pcl_ros가 아닌 그냥 PCL이었고, pcl-ros를 아래 명령어로 설치하니 다시 1.10.0이 설치되는 것이었다.

1
sudo apt install ros-본인 ROS 버전-pcl-ros

그래서 이제부터 pcl-ros 버전을 낮추는 방법에 대해 설명하냐? 그렇지 않다.

여기서 나의 PCL 삽질기는 여기서 마무리 된다. 왜냐고?

사실 PCL이 문제가 아니었음을 이 삽질을 새벽까지 하다가 엎어져 잠이 들기 직전 스쳐 지나간 생각이 증명해 주었기 때문에….

그렇게 황금같은 주말을 밤새가며 했던 삽질은 아무런 성과도, 보람도 없이 이렇게 찝찝하게 끝이 났다.

결국 여기서 쓸만한 내용은 PCL 다운그레이드 방법이 되시겠다.

올리지 않으려고 했는데, 5일간의 삽질에 대한 넋두리가 필요해서 그냥 올린다.

거의 뭐 ‘안녕하세요 이웃님들, 오늘은 PCL 삽질에 대해 알아보았어요~~~’ 급의 글이라 몹시 죄송스러울 따름이다.

This post is licensed under CC BY 4.0 by the author.