ROS2의 파일 시스템은 설치 폴더와 사용자 작업 폴더로 구분된다.
< 기본 설치 폴더 >
: 'ros-humble-desktop'을 설치하면 /opt 폴더에 ros라는 폴더가 생성되고 그안에 ROS 버전 별 폴더가 생성된다.
-> ros2를 사용하기에 필요한 도구들이 담긴이 파일 경로는 각자 사용자의 .bashrc에서 "source /opt/ros/humble/setup.bash" 코드를 써주어서 cmd 즉, 터미널 창을 열었을때 자동으로 참조할 수 있도록 해줘야한다.
-> 자신의 bashrc에 선언을 안 해놓으면 터미널 창을 켜줄때마다 ros2를 사용하기 위해 "source /opt/ros/humble/setup.bash"을 입력하고 시작해야하는 번거러움이 있다.
-> 이 경로에서 기본적으로 제공하는 ros2 라이브러리들은 거의 대부분이 바이너리화 되어있기 떄문에 해당 코드에 대한 내용이 궁금하다면 ros2 공식 홈페이지에 가서 관련 코드들을 봐야한다.
ex) nav2 패키지 관련 코드(github) : https://github.com/ros-navigation/navigation2
< 사용자 작업 폴더 >
-> 사용자가 원하는 곳에 폴더명으로 생성해주면 된다.
-> 자신의 workspace에서 ros2를 사용하려면 각자 사용자의 .bashrc에서
"source ~/<자신의 workspace명>/install/local_setup.bash" 코드를 써주어서 cmd 즉, 터미널 창을 열었을때 자동으로 참조할 수 있도록 해줘야한다.
- Workspace : ROS2 상에서 작업을 하는 환경
- bashrc 파일 : 터미널을 열면 자동으로 bashrc를 읽어온다.
-> 터미널 초기 설정이라고 생각하면 편하다. - Package : 작업 환경 안에서의 하나의 큰 단위
-> 하나의 기능별로 묶어서 Package로 나타낸다고 생각하면 편하다. - build : 코드 빌드 후 생기는 찌꺼기 비슷한 것이 들어간다.
- log : 빌드하면서 생겼던 로그들이 기록된다.
- install : 빌드가 완료된 후 실행 가능한 파일이나 설정 파일, launch 파일이 설치된다.
-> ROS2의 패키지가 실제로 실행될때 컴퓨터가 참조하는 경로이다
-> 바이너리화(컴퓨터 언어)로 되어 있는 경우도 있고, launch 파일의 경우 우리가 코딩한 형태 그대로 담기는 경우가 있다. - src : 사용자 작업 패키지로, 사용자 소스 코드 공간이다.
< src 하위에 오는 폴더(파일) 구성 >
파일 | 내용 |
/include | 헤더 파일이 담기는 파일 |
/launch | ros2 launch에 사용되는 .launch 파일 -> .py 스크립트들을 한번에 실행하고 싶을 때 사용하는 파일 |
/node | rospy용 스크립트 |
/msg | 메세지 파일 -> 사용자 정의 메세지 또한 포함 |
/src | 코드 소스 파일 |
/srv | 서비스 파일 |
CMakeList.txt | 빌드 설정 파일 |
package.xml | 패키지 설정 파일 |
=> 보통 위의 파일들을 사용자의 입맛에 따라 하나의 패키지로 묶어서 사용한다.
=> ex) 기능별 or 센서별
< ROS2의 Package 유형 >
1. Python Package
- package.xml : 패키지에 대한 메타 정보(패키지 관리자, 종속성 등) 포함된 파일
- setup.py : 패키지를 컴파일하는 방법에 대한 지침이 포함된 파일
- setup.cfg : 스크립트가 설치될 위치를 정의하는 파일
- /<package_name> : 패키지와 같은 이름을 갖는 디렉토리(폴더)로, 이 폴더 안에 Python 스크립트를 넣는다.
2. C++ Package
- package.xml : 패키지에 대한 메타 정보 (패키지 관리자, 종속성 등) 포함된 파일
- CMakeList.txt : 컴파일을 위한 CMake 설정 파일
- /launch : launch 파일이 담긴 디렉터리
- /src : C++ 소스 파일이 담긴 폴더
* Python Package에서 스크립트 컴파일 지침은 setup.py이고, C++ Package에서 소스 파일 컴파일 지침은 CMakeList.txt 이다.
'ROS2 이론 정리' 카테고리의 다른 글
ROS2 SLAM에 대한 모든 것 (0) | 2025.01.07 |
---|---|
ROS2 URDF에 대한 모든 것 (0) | 2025.01.06 |
ROS2 TF에 대한 모든 것 (0) | 2025.01.06 |
노드 간의 통신 방식 3가지 (0) | 2025.01.06 |
ROS 기본 개념 (1) | 2025.01.03 |