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-82. 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-desktop4. 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=dashingROS 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.shfoxy version
$ sudo wget https://raw.githubusercontent.com/seongjunChoi0714/ROS/master/install_ros2_foxy.sh && chmod 755 ./install_ros2_foxy.sh && bash ./install_ros2_foxy.shLast updated
Was this helpful?