[ROS 튜토리얼] 1.1.2 ROS 파일 시스템 활용 방법
- 취미/ROS
- 2021. 3. 16.
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)들이 존재한다. ls
나 cd
같은 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 툴들과 마찬가지로, roscd
는 ROS_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 프로그램을 실행한적이 있다면 상관없다.
기본 경로는 ~/.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_node
와 turtle_teleop_key
노드는 이름의 turtle 부분이 중복되는데, turtle 까지만 입력한 후 더블 tab 하면 draw_square
와 mimic
노드는 제외되고 turtle이라고 시작하는 노드만 추려서 추천해준다.
4. Review
여기까지 살펴보았을 때 ROS 툴의 작명 패턴을 눈치챌 수 있다.
- rospack = ros + package
- roscd = ros + cd
- rosls = ros + ls
이러한 작명 패턴은 대부분의 ROS 툴에 적용된다. 해당 튜토리얼에서는 ROS를 탐험하는 법을 살펴보았다. 다음 튜토리얼에서는 패키지를 만들어 보도록 한다.
'취미 > ROS' 카테고리의 다른 글
[ROS 튜토리얼] 1.1.4 ROS 패키지 빌드하기 (0) | 2021.03.24 |
---|---|
[ROS 튜토리얼] 1.1.3 패키지 생성하기 (0) | 2021.03.22 |
[ROS 튜토리얼] 1.1.1 ROS 설치 및 환경 구축 (0) | 2021.03.14 |
[ROS] Intel - RealSense 'd435' depth camera (5) | 2021.01.30 |
[ROS] Ubuntu 18.04 LTS에 ROS Melodic 설치하기 #2 (0) | 2021.01.10 |