01장 ROS2 설치

01-1장 ROS2 설치

본 장에서는 ROS2를 다루기 위한 첫번째 작업인 환경구축 즉, 설치를 진행하겠습니다. 설치과정은 검색을 통해 찾다보면 아래와 같은 한줄설치도 찾을 수 있겠지만, 대부분이 ROS를 처음 접하는 분들이라는 가정하에 command를 하나하나 파헤쳐보도록 하겠습니다.

1. Setup Locale

사용하는 지역 및 언어를 선택하는 과정입니다. 우리가 살고 있는 한국으로 설정해도 상관없지만, 한국은 ROS가 많이 퍼지지 않아 개발된 지역인 미국으로 설정하는 것을 권장합니다. (en_US.UTF-8 -> 영어, 미국, UTF-8 encoding)

$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8

2. Setup Sources

$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'

3. Install ROS2 packages

$ sudo apt update
$ sudo apt install ros-dashing-desktop

4. Setup ROS Environment - Editing bashrc file

ROS2 command에 접속하기 위해서 새로운 터미널 창을 열때마다

echo "source /opt/ros/<distro>/setup.bash" >> ~/.bashrc

위의 명령을 실행시켜야 한다. 이러한 귀찮음(?)을 방지하고자 bashrc 파일에 위의 문장을 적어 반복적인 과정을 막고자 한다.

geditor로 bashrc파일을 실행시키자. (원하는 editor를 사용하도록 하.)

$ gedit ~/.bashrc

실행파일에 아래의 명령어를 맨 아래에 추가한다.

source /opt/ros/dashing/setup.bash

* 여기서 dashing은 ROS2 version의 일종이며 자신이 설치한 것에 맞는 version을 적으면 된다. *

사용하기 전에 ROS 2 개발 환경을 올바르게 구성해야합니다. 이 작업은 두 가지 방법으로 수행 할 수 있습니다. 열려있는 모든 새로 shell에서 설정 파일을 소싱하거나 시작 스크립트에 source 명령을 추가합니다.

이제 기본적인 설치과정이 모두 끝났다. 다음 명령어를 실행시켜 ROS 2 환경이 올바르게 설정되어 있는지 확인하도록 하자.

$ printenv | grep -i ROS

위의 명령어를 입력시킬시 아래 같은 command line이 나온다면 설치에는 문제가 없다.

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=dashing

ROS 2에서 패키지를 찾거나 사용하는 데 문제가있는 경우 가장 먼저해야 할 일은 환경 변수를 확인하고 해당 변수가 버전 및 배포판으로 설정되어 있는지 확인하는 것입니다.

약 10년간의 역사를 갖고 있는 ROS는 설치가 끝나면 대대적으로 수행하는 작업이 있다. 바로 Turtlesim이다.

5. Turtlesim

Turtlesim은 OpenRobotics 에서 제공하는 공식 예제 패키지이며, ROS를 처음 접하는 사람들이 기본적인 기능을 수행해볼 수 있는 QT를 이용한 시뮬레이터 제공해준다.

참고(Github) : https://github.com/ros/ros_tutorials/tree/dashing-devel/turtlesim

$ sudo apt install git //code share site인 git을 설치하는 과정.
$ sudo apt install ros-dashing-turtlesim
$ git clone https://github.com/ros/ros_tutorials.git -b dashing-devel

이제 본격적으로 하나씩 실행시켜 보도록 하겠다. 나중에 설명하겠지만 실행시키는 대부분이 Node라는 프로세서로 구성되며 간단하게 실행시키는 과정은 다음과 같다.

$ ros2 run <package_name> <executable_name>

앞에서 실행의 예를 보여주기 위한 turtlesim이라는 package를 다운받았으므로 위의 명령어를 활용하여 실행시켜보자!

$ ros2 run turtlesim turtlesim_node

새로운 터미널을 열고 turtle_teleop_key를 실행시키고 G|B|V|C|D|E|R|T keys를 사용하면 화면 상 거북이를 원하는 방향으로 움직일 수 있으며, 'F' keys를 사용하여 움직임을 멈출 수 있다. (주의할 것은 반드시 turtle_teleop_key를 실행시킨 터미널 위에서 버튼을 눌러야하며 절대적인 위치(absolute orientations)를 기준으로 움직인다.)

$ ros2 run turtlesim turtle_teleop_key

이번 장의 목표는 ROS2설치와 더불어 turtlesim에 대한 일반적인 개요를 얻는 것이므로 ROS의 GUI(Graphic User Interface)인 rqt를 사용하여 turtlesim을 실행시켰을 때 나타나는 과정에 대해 이해해보도록 하자.

+ GUI(Graphic User Interface): 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것.

+ CLI(Command Line Interface): 사용자가 terminal창에 컴퓨터 키보드 등을 통해 문자열의 형태로 입력한 작업명령을 바탕으로 컴퓨터와 상호 작용하는 방식(컴퓨터가 응답한 출력도 문자열 형).

6. RQt

앞에서 언급했듯이 RQt는 Node에 대해 쉽게 알 수 있도록 GUI도구이며, RQt는 오픈 소스 크로스 플랫폼 프레임 워크 QT7을 사용하여 구축되었다. 이는 통신방법에 따른 메시지 type나 값들을 확인하고 조정할 수 있다. 다음 명령어를 통해 설치하여 사용해보자!

$ sudo apt update
$ sudo apt install ros-<distro>-rqt-*

이제 rqt를 실행시켜보자! 아래와 같은 명령어를 입력하면 rqt가 실행된다. ( ROS2에서는 대부분의 tool을 실행시킬때 이름만 입력하면 실행되지만 ROS1에서는 rqt를 실행시키기 위해서 "rosrun rqt_console rqt_console"와 같이 일부 늘린듯한 문법을 지켜야 했다. 물론, ros2에서도 위와 비슷하게 실행할 수 있다"ros2 run rqt_console rqt_console".)

$ rqt

+ 처음 rqt를 실행시킨다면 빈 화면이 뜰 것이다. 이때 Menu에서 Plugins > Services > Service Caller를 선택하면 다양한 선택사항들이 보이기 시작할 것이다.

또한 rqt가 모든 플러그인 자체를 찾는 데 시간이 걸릴 수 있습니다. Plugins을 클릭 했지만 서비스 또는 다른 선택사이 보이지 않으면 rqt를 닫고 터미널에 다음 명령어를을 입력해야한다.

$ rqt --force-discover

이렇게 rqt를 실행하는 과정에 대해 알아봤다. 아직 와닿지 않을수도 있지만, 다음 장인 Node간의 통신방법을 살펴보는 과정에서 많이 사용되므로 실행은 이쯤에서 마치도록 하고 rqt에 대한 추가적인 설명을 하고 마치겠다. RQt에는 지금 다 가장 기본적이고 핵심인 rqt(핵심 기반 모듈)를 제외하고 2가지의 meta-package가 더 있다.

  • rqt_common_plugins- 도구 작성을위한 백엔드 도구

    TODO : 현재 이 메타 패키지는 아직 포팅되지 않았기 때문에 ROS 2에서 사용할 수 없다.

  • rqt_robot_plugins- 런타임 중에 로봇과 상호 작용하기위한 도구

    TODO : 현재 이 메타 패키지는 아직 포팅되지 않았기 때문에 ROS 2에서 사용할 수 없다.

위 2가지의 meta-package는 현재 ROS2에 포팅하기 위해 Amazon과 협력중에 있으며, 아래의 접근방식을 가지고 임하고 있다.

  • RQT 공통 플러그인 및 종속성 만 타겟팅

  • Python3 & ament build system에 대한 추가 지

  • OSX & Windows 지원

  • DDS와 함께 작동하도록 ROS middleware plugins 재 작업

  • 현재 개발 중인 다른 core ROS libraries인 rosbag, roslaunch 및 actionlib를 ROS의 새로운 APIs에 처음 채택하여 지원

ROS2는 아직 개발중이라 사용에 제약이 있을 수 있지만, 그만큼 다양한 기능을 제공해주기 위한 것이니 겁먹지 말고 공부를 이어가기를 바란다.

여기서 문제!!

설치과정을 위과 같이 한줄로 설치하는 .sh파일을 만들어보세요!

+ 모든 과정을 따라하며 명령어들을 익히는 것을 추천하지만, 다른환경을 구축하거나 시간이 부족할경우 command로 일일이 치는 것이 귀찮은 경우가 종종있습니다. 이를 위해 위의 설치과정을 한줄만 입력하면 설치할 수 있도록 구현해보도록 하자! -> linux에 적응하고 과정을 복습하는데 많은 도움이 된다.

dashing version

$ sudo wget https://raw.githubusercontent.com/seongjunChoi0714/ROS/master/install_ros2_dashing.sh && chmod 755 ./install_ros2_dashing.sh && bash ./install_ros2_dashing.sh

foxy version

$ sudo wget https://raw.githubusercontent.com/seongjunChoi0714/ROS/master/install_ros2_foxy.sh && chmod 755 ./install_ros2_foxy.sh && bash ./install_ros2_foxy.sh

Last updated