ROS2 설치하기
- 한줄 설치를 하는 것이 가장 편하기는 하지만, 로봇을 개발하다 보면 하드웨어의 지원, 클라이언트의 요구, 기획 단계에서 어쩔 수 없는 상황 등으로 로봇SW를 운용해야 하는 환경을 구축해야 하는데 많은 고민을 해야 할 때가 있다.
- 이러한 상황속에서 제대로 대응하기 위해선 이러한 기초 세팅 역시 직접 하나하나 설치해보는 것이 가장 중요하다.
- 이번 게시글에서는 Ubuntu 20.04에서 설치하는 ROS Galastic 버전의 설치를 진행하도록 하겠다.
3.1 ROS Galatic 버전 설치 페이지 찾기
- 구글에서 ros galatic install이라고 검색하면 바로 첫 화면에 공식 설치 안내 페이지가 나올 것이다.
- 안내 페이지에는 크게 바이너리(binary) 설치와 소스 코드에서 직접 빌드(building from source)하는 총 두가지 방법이 안내되어 있다.
- 인텔 CPU를 사용하는 Ubuntu 20.04라면 그냥 바이너리 설치를 진행하는 것이 가장 빠르고 쉬운 방법이다.
3.2 Set Locale
- 아마 한국에서 영어 전용으로 설치했다 하더라도 Locale 명령을 실행해보면 KR.UTF-8로 서정되어 있을 것이다.
- 에러 없는 설치를 위해서 ROS2의 인스톨 가이드에서는 locale 설정을 통해 같은 UTP-8로 모두 설정하라고 안내되어 있다.
- 따라서 다음 코드를 카피해서 터미널에 붙여 넣는다.
- 붙여 넣기는 ctrl+shift+v라는 것을 잊지 말자
3.3 Setup Sources
- 이제 인스톨 전단계이다. 소스를 등록하는 과정이다.
$ apt-cache policy | grep universe
- 위 명령을 통해 우분투의 패키지 관리자에게 패키지 리스트를 요청해 보자.
- 만약 여기서 맨 끝에 v=20.04, o=ubuntu, a=focal, l=ubuntu, c=universe, b=amd64 구절이 보이면 이상이 없는 것이다.
- 이 구절이 보이지 않는다면 다음 명령어를 실행하면 된다.
-ROS2는 GPG key를 받아서 인증을 받고 패키지를 설치한다. 그렇기에 다음 두 코드를 터미널에서 실행해야 한다.
- 첫 번째 줄은 필요한 패키지를 설치하는 명령어. 두 번째 줄은 GPG key를 다운로드하는 명령어이다.
- 위 명령어의 경우 출력되는 결과가 없기 때문에 잘 되었는지 궁금할때가 있다. 이 코드가 잘 실행되었는지 궁금하면 다음 명령을 입력한다.
ls /usr/share/keyrings/
- 위 명령을 실행하여 /usr/share/keyrings 디렉토리를 조회하면 ros-archive-keyring.gpg라는 파일이 보일 것이다.
- 다음 으로는 gpg 파일의 소스 코드를 레파지토리에 추가하는 명령어이다.
- 위 명령이 잘 수행되었는지 확인하는 방법은 다음 명령어를 통해 /etc/apt/sources/list.d/에서 ros2.list라는 파일이 있는지 확인하면 된다.
ls /etc/apt/sources.list.d/
3.4 Install ROS2 package
- 설치 마지막 단계이다
- update와 upgrade를 순차적으로 실행해 준다.
- 다음으로는 apt install 명령을 통해 ros를 설치해 준다.
- desktop install (추천됨)
- ROS, RViz, demos, tutorials 등이 설치된다.
3.5 ROS2 설치 확인하기
- 지금까지 진행한 설치가 잘 되었는지 확인할 단계이다.
- 먼저 터미널을 두개 준비한다.
source /opt/ros/galatic/setup.bash
- 그리고 위의 source 명령어로 시작하는 명령을 두 터미널 모두 입력한다.
- 지금은 위 명령이 ROS2 galatic의 실행 명령을 터미널에서 호출할 수 있도록 하는 환경을 설정했다는 정도만 알고 있으면 된다.
- 그리고 하나의 터미널에는 talker를, 다른 listener라는 노드를 실행한다.
- 노드의 개념과 실행 명령은 나중에 제대로 공부할 것이다.
ros2 run demo_nodes_cpp talker # 1번 터미널에
ros2 run demo_nodes_py listener # 2번 터미널에
- 위 그림에서ㅠ 한쪽에는 talker를, 또 한쪽에는 listener를 실행한 것은 talker라는 노드에서 chatter라는 이름의 토픽이 listener라는 노드로 전송된다는 것을 의미한다.
* chatter라는 토픽이 뭘까?
'Robot' 카테고리의 다른 글
ROS2 공부 - colcon (1) | 2023.05.02 |
---|---|
ROS2 공부 4일차 - python으로 ROS 사용하기 (0) | 2023.03.25 |
ROS2 공부 3일차 - ROS2 기본 명령 익히기 (0) | 2023.03.24 |
ROS2 공부 1일차-terminator (1) | 2023.03.23 |