본문 바로가기
기계공학부 시절의 기록/ROS일기

[catkin] workspace와 package

by juhyeonglee 2020. 8. 6.
728x90
반응형

8/6 catkin, workspace, package의 역할

 

일반적으로 프로젝트를 수행할 때, 프로젝트를 담을 파일을 만들고 이 안에서 관련 data들을 저장한다.

마찬가지로, ros를 할 때 프로젝트를 담을 workspace를 만들고 그안에 package를 추가한다. 이 때, 여러 package가 존재하는데 이를 관리하는 것이 catkin 인 것 같다.

 

catkin : a powerful build and management system

 

catkin workspace : 최상위 directory로써 모든 package를 담는다.

 

catkin package : 모든 ros 소프트웨어는 catkin package로써 구성되고 분배된다. workspace와 마찬가지로 그냥 하나의 directory(파일)에 지나지 않는다. node를 위한 sourcecode를 포함하며 유용한 scripts와 환경설정파일 등을 포함한다.

 

[정리]

하나의 workspace안에 여러 package가 있으며 각각 directory로서 존재한다. 하나의 package안에는 소스코드, 스크립트 등의 파일이 존재한다.

 

8/7 catkit workspace만들기

1) directory 만들기

$ mkdir -p ~/catkin_ws/src

프로젝트를 저장할 catkin_ws를 만들고 그안에 src파일을 만든다.

 

2) src에 CMakeLists.txt 생성

$ cd ~/catkin_ws/src

src파일안에 생성하기 위해 src로 이동한다.

 

$ catkin_init_workspace

CMakeList.txt를 생성한다. 이는 소스코드로 파일이름이 src(source)임을 보고 유추할 수 있다.

 

3) catkin_ws 디렉토리에서 build

$ cd .. 

작업공간을 catkin_ws로 옮긴다

 

$ catkin_make

작업공간을 catkin_ws로 옮겼지만 신기하게도 src파일 안의 CMakeList.txt를 이용해 build한다. wiki에 따르면 build한다는 것은 사람들이 읽고 쓰는 컴퓨터언어인 소스코드를 컴퓨터에 적용하기위해 컴파일하는 것이라고 한다. 따라서 cmake는 소스코드가되고 이를 컴파일하기 위한 명령문이 catkin_make이다.

그 결과로 catkin_ws에 build 파일과 devel파일이 새롭게 생성되고 그안에는 잡다한 하지만 중요한 여러 파일이 또 생성되어 있음을 볼 수 있다.

http://wiki.ros.org/catkin/commands/catkin_make

 

catkin/commands/catkin_make - ROS Wiki

catkin_make is a convenience tool for building code in a catkin workspace. catkin_make follows the standard layout of a catkin workspace, as described in REP-128. Usage You should always call catkin_make in the root of your catkin workspace, assuming your

wiki.ros.org

 

$ source devel/setup.bash

build과정으로 생성된 devel파일 안의 setup.bash를 실행하여 그 작업공간이 ros환경의 최상위에 overlay되도록 쉘에 등록한다...? 무슨말인지 모르지만 감은 온다...!

setup.bash를 실행하면 environment variables가 setting되는데 이것이 시스템이 필요한 모든 package와 library 등을 찾게 도와준다고 한다.

 

$ roslaunch <package이름> 파일명.launch

이전에 ros를 실행할 때 rosmaster를 만들고 또 다른 각각의 창에 새로운 node들을 생성하였지만 roslaunch를 사용하면 한번에 여러개의 노드를 생성할 수 있다고 한다.

http://wiki.ros.org/roslaunch

 

roslaunch - ROS Wiki

kinetic melodic noetic   Show EOL distros:  EOL distros:   electric fuerte groovy hydro indigo jade lunar diamondback: Only showing information from the released package extracted on Unknown. No API documentation available. Please see this page for in

wiki.ros.org

 

 

 

728x90
반응형

댓글2