본문 바로가기

Robot

ROS2 공부 2일차-ROS2 설치

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