[Documentation] [TitleIndex] [WordIndex

(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

ROS 환경 설치와 설정

Description: 이 자습서는 ROS의 설치와 설정 방법에 대해 보여줍니다.

Tutorial Level: BEGINNER

Next Tutorial: ROS 파일시스템의 탐색

ROS 설치

이 자습서들을 수행하기 전에 설치가 완료되지 않았다면 아래의 링크를 통해 설치를 끝낸 뒤 시작하시길 바랍니다. ROS 설치 지침

참고: apt와 같은 패키지 관리자를 통해 ROS를 설치하셨을 경우, 이렇게 설치된 패키지들은 일반 사용자에 대한 쓰기권한이 없어 수정이 불가능합니다. 외부에서 소스를 가져오거나 사용자가 직접 새로운 ROS패키지를 만들어, 이를 토대로 ROS의 작업을 하고자 할 때는 항상 접근 가능한 경로에서(예: 홈 폴더) 작업을 진행해야 합니다.

작업 환경 관리

ROS를 설치하는 중에 setup.*sh파일을 source하거나 쉘의 시동 스크립트에 이 source부분을 추가하기도 합니다. 이것은 ROS가 쉘 환경을 이용한 combining space(?)의 개념에 의존하기 때문입니다. 이는 각기 다른 버전의 ROS나 패키지의 집합에 대한 개발을 더 간편하게 합니다.

만약 ROS 패키지를 찾거나 사용하는데 문제가 발생한다면, 환경변수의 설정이 제대로 되어있는가 확인해 보시길 바랍니다. ROS에서 사용되는 환경변수 를 참고해서 ROS_ROOT, ROS_PACKAGE_PATH 가 제대로 설정되어 있는가 확인합니다. 이를 간단히 수행하기 위한 명령어는 아래와 같습니다

$ export | grep ROS

주어진 setup.*sh 파일이 없으나, source를 위해 setup.*sh 파일이 필요할 수도 있습니다.

환경 설정 파일들은 사용자를 위해 자동적으로 생성되지만, 각각 다른 곳에서 생성될 수 있습니다.

참고: 자습서들을 통해 rosbuildcatkin이라는 것을 보셨을 것입니다. 이 두 가지 방법은 ROS에서 코드를 빌드하고 구성하는데 사용되는 방법들입니다. 일반적으로 rosbuild가 사용하기 편하고 간결한 반면에 catkin은 보다 CMake의 표준 규약에 가까워 조금 어렵게 느껴질 수 있습니다. 그러나 catkin은 ROS package를 외부에서 가져온 코드와 통합하려는 분들이나, 만든 소프트웨어를 릴리즈하려는 분들에게는 rosbuild에 비해 보다 많은 유연성을 보장합니다. 이 둘에 대한 자세한 정보는 catkin or rosbuild(en)을 참고하세요.

만약 ROS를 우분투 상에서 apt를 이용해 설치하셨다면, '/opt/ros/<distro>/에서 setup.*sh를 찾을 수 있을 것입니다. 이는 아래의 명령으로 적용할 수 있습니다.

# source /opt/ros/<distro>/setup.bash

<distro> 대신 사용하고 계시는 ROS 배포판의 약칭을 적어주시면 됩니다.

예를 들어 ROS Groovy를 사용 중이시라면 입력할 명령은 아래와 같습니다.

$ source /opt/ros/groovy/setup.bash

이 명령을 .bashrc에 추가해 주지 않는 이상 우리는 매번 새로 쉘을 실행할 때 마다 ros 명령어들을 사용하기 위해 입력해주어야 합니다. 또는 여러 버전의 ROS 배포판을 한 컴퓨터에 설치해두고(예:fuerte와 groovy) 그 둘 사이를 전환하며 사용하기 위해 매번 입력하는 방법을 사용할 수도 있습니다.

다른 플랫폼에서는 이런 setup.*sh 파일을 사용자가 ROS를 설치한 장소에서 찾을 수 있습니다.

ROS 작업공간 만들기

이 지침은 ROS Groovy만을 위한 것입니다. fuerte 또는 그 이전의 배포판을 사용하시는 분은 rosbuild를 선택해주세요.

catkin 작업공간을 만들어 봅시다.

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

위의 명령들을 실행하고 난 뒤에도 작업공간이 비어있지만(src폴더 안에는 어떤 패키지도 없고 CMakeLists.txt만 존재한다.) 이 작업공간을 "빌드"하는 것이 가능합니다.

$ cd ~/catkin_ws/
$ catkin_make

catkin_makecatkin 작업공간과 같이 사용하기에 무척 편리한 명령입니다. 현재 폴더를 살펴보면 'build'와 'devel'폴더가 생긴 것을 알 수 있습니다. 'devel'폴더의 안에는 몇 가지 setup.*sh파일이 들어있습니다. 이 파일들을 쉘에 등록하면 이 작업공간이 ROS 환경의 최상위에 오버레이됩니다. 자세한 이해를 위해서는 catkin링크를 이용하시길 바랍니다. 새로운 setup.*sh파일을 쉘에 적용하기 전에 아래를 참고하시길 바랍니다.

$ source devel/setup.bash

ROS 소스코드를 작업할 때, "작업공간"안에서 일을 처리하는 것은 꽤 유용할 수 있습니다. 다음 자습서들을 따라하기 위해, 그를 수행할 공간과 새로운 스택과 패키지를 만드는 기술이 필요합니다.

rosws는 SVN, Git, Mercurial등의 다양한 버전 관리 도구들과 ROS 오버레이에 설치된 모든 패키지들을 관리하는데 획일화된 인터페이스를 제공합니다. 보다 자세한 학습을 위해서는 링크된 rosws자습서를 참고하세요.here.

새 작업공간 만들기

아래의 명령은 ~/ros_workspace에 새로운 작업공간을 만들기 위한 것입니다. 이는 /opt/ros/<distro>에 설치되어 있는 패키지 집합의 확장으로 간주됩니다.

rosws init ~/ros_workspace /opt/ros/<distro>

참고: rosws 는 rosinstall 패키지의 일부입니다.이는 기본적으로 설치되는 것은 아니며, 아래의 명령으로 우분투 패키지 매니저를 사용해 내려받을 수 있습니다.

sudo apt-get install python-rosinstall

Sandbox 폴더와 새로운 패키지 작성

새로운 패키지는 ROS_PACKAGE_PATH변수 안에 있는 경로에 있어야만 합니다. 작업공간에 대한 setup.bash가 쉘에 정상적으로 등록이 되어 있다면, rosws는 자동으로 ROS_PACKAGE_PATH에 경로를 추가합니다. rosws로 설치된 새로운 패키지들이 항상 저장소에 보관되어야 하지만, 자습서의 내용을 수행하는 동안 추가적인 rosws명령 없이 그때그때 만드는 패키지들을 담는 sandbox폴더를 만들어 두면 상당히 편리합니다. sandbox폴더를 만들기 위해 우리는 새로운 폴더 sandbox를 만들고 rosws를 이용해 .rosinstall파일에 추가할 것입니다.

mkdir ~/fuerte_workspace/sandbox
rosws set ~/fuerte_workspace/sandbox

매번 작업공간의 정보가 수정될 때마다 ROS_PACKAGE_PATH를 갱신하기 위해 ~/ros_workspace/setup.bash를 쉘에 다시 등록해주는 작업이 필요합니다.

source ~/fuerte_workspace/setup.bash

쉘 설정부분의 source /opt/ros/fuerte/setup.bash 줄을 ~/ros_workspace/setup.bash 또는 자주 사용하는 작업공간의 setup.bash로 대치하는 경우도 많습니다.

보다 많은 ROS 작업공간에 대한 자습서는 이곳에서 찾을 수 있습니다.

설정 확인

패키지의 경로가 제대로 설정되었는가 확인해 보기 위해서 ROS_PACKAGE_PATH 변수를 echo해봅니다.

$ echo $ROS_PACKAGE_PATH

아래와 유사한 형태로 보이면 성공입니다.

/home/your_user_name/ros_workspace/sandbox:/opt/ros/<distro>/share:/opt/ros/<distro>/stacks

이제 환경설정은 끝났습니다. 다음 자습서로 이동합니다. ROS 파일시스템의 탐색.


2019-10-19 12:50