1.Getting Started에서 완료
foxy 버전에서 nav 2를 build하는 방법을 알아보자.
(갑자기 왜 패키지를 build해야 하는 건지 의문이 들었는데,
일반 프로그래밍에서 프로그램을 build하는 것과 똑같은 것 같다.
각각의 코드 파일을 컴파일하고 하나의 실행 파일로 링킹하는 것을 빌드라고 하는데,
ros 패키지의 경우 각 노드를 컴파일하고 통신을 고려한 실행 파일로 링킹하는 것이 빌드인가?
어쨌든 실행 가능하도록 만드는 것이 빌드이고,
프로그램을 build하는 과정이 필요하듯 패키지를 build하는 과정이 필요한 거라고 나는 결론내렸다.
조금 부족한 설명인 것 같기는 하지만..)
nav2_ws라는 workspace를 만들어 거기에 nav 2의 branch를 clone할 것이다.
$ mkdir -p ~/nav2_ws/src
$ cd ~/nav2_ws/src
$ git clone https://github.com/ros-planning/navigation2.git --branch foxy-devel
$ cd ~/nav2_ws
$ rosdep install -y -r -q --from-paths src --ignore-src --rosdistro foxy
$ colcon build --symlink-install
colcon build --symlink-install 실행시
/opt/ros/foxy/include/rcl/allocator.h:25:9: error: ‘rcutils_allocator_t’ does not name a type
란 에러가 났다.
(다른 에러도 많은데 저 에러가 가장 근본적 원인인 듯.)
이 에러를 해결해야 한다
참고사이트
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tommybee&logNo=50151980103
https://docs.ros2.org/beta3/api/rcl/allocator_8h.html
해당 사이트를 참고해서, rcl/allocator.h 파일에 rcutils/allocator.h파일을 include하자는 발상을 가지고 VScode에서 #include "/opt/ros/foxy/include/rcutils/allocator.h" 문장을 추가했더니 패키지가 성공적으로 빌드되었다.
12분이나 걸렸다..
Nav2의 main branch를 따라가기 위해 docker image를 설치하는 게 좋다(는데 무슨 말인지는 잘 모르겠다. 그냥 docker라는 게 일단 필요하다니 설치해 보겠다.)
Nav2 폴더에 있는 Dockerfile image를 build하기 위한 과정이다.
$ sudo docker build -t nav2/latest .
실행시 sudo: docker: command not found
란 에러가 나서
https://nixcp.com/docker-command-not-found/
사이트를 참고해 에러를 해결했다.
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
다시 docker build를 실행해 준다.
참고로, Dockerfile이 실제로 존재하는 nav2_ws/src/navigation2에서 진행해야 한다. 아닐 경우 dockerfile을 찾을 수 없다는 에러가 뜰 것이다.(나는 처음에 그냥 home에서 진행했었다가, 그 에러가 떠서 https://stackoverflow.com/questions/35511604/docker-unable-to-prepare-context-unable-to-evaluate-symlinks-in-dockerfile-pa 를 참고해 디버깅했다.)
$ cd nav2_ws/src/navigation2/
$ sudo docker build -t nav2/latest .
build가 꽤.. 오래 걸리고 중간중간 새빨간 경고 메시지들도 간간히 나오는데 이게 맞나 싶긴 하다
아니 십 한 40분 걸려서 빌드 끝났는데 망함
빌드가 다 안됐다네요..
모르겠다 난 최선을 다했고 일단 앞으로 간다. 나중에 문제 생기면 그떄 해결한다..ㅜ
이건 지금은 해결 못하겠음..
$ sudo docker pull rosplanning/navigation2:main
아 이 와중에 이 코드는 설치하다 용량 부족해서 중단됨
ㅇㄴ
failed to register layer: Error processing tar file(exit status 1): write /usr/share/doc/libboost-regex1.71.0/copyright: no space left on device
이럼..
$ sudo docker system prune
로 docker용량을 정리 후, 다시 실행해 봤다..
됐다..휴ㅜ
nav2_ws에서 doxygen실행하기