[ROS 튜토리얼] 1.1.2 ROS 파일 시스템 활용 방법

    Navigating the ROS Filesystem

    • Description : 해당 튜토리얼은 ROS 파일시스템의 개념을 설명하고, roscd, rosls, rospack등의 command-line툴을 다룬다.
    • Tutorial Level : BEGINNER
    • Next Tutorial : Creating a ROS package

    1. Prerequisites

    해당 튜토리얼을 진행하기 위해서 ros-tutorials 패키지를 활용할 것이기 때문에 해당 패키지가 설치 되었는지 확인해야 한다.

    sudo apt install ros-melodic-ros-tutorials

    이미 최신 버전의 패키지가 설치되어 있는 것으로 보인다.


    2. Quick Overview of Filesystem Concepts

    • Package : 패키지는 ROS 코드의 소프트웨어 구성 단위다. 각 패키지에는 라이브러리, 실행 파일, 스크립트 또는 기타 아티팩트 등을 포함할 수 있다.
    • Manifests (package.xml) : 패키지에 관한 설명(혹은설정) 파일이다. 패키지간의 의존성을 정의하고 버전, 유지 관리자, 라이센스등과 같은 패키지에 대한 메타 정보를 캡처하는 역할을 한다.

    3. Filesystem Tools

    수 많은 패키지들에 걸쳐서 코드(code)들이 존재한다. lscd 같은 command-line 툴을 사용하여 경로를 검색하기란 매우 지루한 일이기 때문에 ROS는 사용자들에게 도움이 되고자 자체적인 툴을 제공하고 있다.

     

    1) Using rospack

    rospack을 사용하여 패키지에 대한 정보를 얻을 수 있다. 이 튜토리얼에서는 패키지의 경로를 반환해주는 find 옵션만 다뤄볼 예정이다.

    - 사용법

    rospack find [package_name]

    - 예시

    rospack find roscpp

    - 예상 결과

    YOUR_INSTALL_PATH/share/roscpp

    - 실제 결과

     

    2) Using roscd

    roscd는 rosbash suite의 일부다. 패키지나 스택의 디렉토리로 바로 이동할 수 있다. ROS에서 사용하는 cd 명령어라고 생각하면 된다.

    - 사용법

    roscd [locationname[/subdir]]

    roscpp 패키지가 존재하는 디렉토리로 이동해 볼 것인데 실행이 제대로 됐는지 확인하기 위해 다음과 같이 추가로 Unix 명령어인 pwd을 작성해본다. pwd는 현재 위치하고 있는 경로를 출력하는 명령어다.

    roscd roscpp
    pwd

    - 예상 결과

    YOUR_INSTALL_PATH/share/roscpp

    - 실제 결과

    위의 1) 번 예제와 동일한 경로를 출력하는 것을 볼 수 있다.

     

    다른 ROS 툴들과 마찬가지로, roscdROS_PACKAGE_PATH에 나열되어 있는 디렉토리 내의 ROS 패키지만 찾을 수 있다. 본인의 ROS_PACKAGE_PATH 내부를 확인하고 싶다면 다음과 같이 입력한다.

    echo $ROS_PACKAGE_PATH

    반환된 ROS_PACKAGE_PATH에는 디렉토리 주소가 :으로 구분해 나열되어 있어야 한다. 위와 같이 출력된 경우 2개의 디렉토리를 출력한 것이라고 볼 수 있다.

    /home/conceptbug95/catkin_ws/src

    /opt/ros/melodic/share

     

    다른 환경 변수들과 마찬가지로 ROS_PACKAGE_PATH:로 각 경로를 구분하여 디렉토리를 추가할 수 있다.

     

    (1) Sub-directories

    roscd는 패키지나 스택의 하위 디렉토리로도 이동할 수 있다.

    - 예시

    roscd roscpp/cmake
    pwd

    - 예상 결과

    YOUR_INSTALL_PATH/share/roscpp/cmake

    - 실제 결과

     

    3) roscd log

    roscd log를 사용하여 ROS의 로그 파일들이 저장된 폴더로 이동한다. 하지만 아직 ROS 프로그램을 실행한적이 없다면(=현재 구동중인 roscore가 없다면) 당연히 로그 기록도 없을 것이기 때문에 해당 명령어를 사용했을 때 오류가 발생할 수도 있다. 물론 ROS 프로그램을 실행한적이 있다면 상관없다.

    roscore를 아직 실행시키지 않았을 때
    roscore를 실행중일 때

    기본 경로는 ~/.ros/log 인 것을 알 수 있다.

     

    4) Using rosls

    rosls는 rosbash suite의 일부다. ROS에서 사용할 수 있는 ls 명령어라고 생각하면 되며, 절대 경로가 아닌 패키지의 이름으로 직접 ls할 수 있다는 장점이 있다.

    - 사용법

    rosls [locationname[/subdir]]

    - 예시

    rosls roscpp_tutorials

    - 실제 결과

    이 결과를 제대로 확인해보기 위해 roscpp 패키지의 경로로 이동하여 직접 확인해 보았다.

     

    5) Tab Completion

    패키지의 전체 이름을 모두 입력하는것은 매우 귀찮고 따분한 일이다. 전체 이름을 모두 입력할 필요없이 일부만 입력한 후 tab을 누르면 자동으로 나머지 부분을 완성해주거나, 중복되는 경우 더블 tab 하여 입력 가능한 문구들을 보여준다. ROS에서는 이를 TAB completion툴이라고 부른다.

    ROS 설치 시 기본적으로 설치되는 패키지들 중 turtlesim이란 패키지가 있고, 이 패키지에는 아래와 같이 총 4개의 노드가 존재한다.

    • turtlesim
      • draw_square
      • mimic
      • turtlesim_node
      • turtle_teleop_key

    turtlesim_nodeturtle_teleop_key 노드는 이름의 turtle 부분이 중복되는데, turtle 까지만 입력한 후 더블 tab 하면 draw_squaremimic 노드는 제외되고 turtle이라고 시작하는 노드만 추려서 추천해준다.


    4. Review

    여기까지 살펴보았을 때 ROS 툴의 작명 패턴을 눈치챌 수 있다.

    • rospack = ros + package
    • roscd = ros + cd
    • rosls = ros + ls

    이러한 작명 패턴은 대부분의 ROS 툴에 적용된다. 해당 튜토리얼에서는 ROS를 탐험하는 법을 살펴보았다. 다음 튜토리얼에서는 패키지를 만들어 보도록 한다.

    댓글

    Designed by JB FACTORY