반응형

1. Building Packages

패키지의 dependencies 설정이 완료되면 패키지를 빌드할 수 있다.

내용을 진행하기에 앞서 환경설정 파일(setup.bash)을 source하도록 하자.

 * 리눅스 환경 설정 파일들은 수정하기만 한다고 바로 내용이 적용되는 것이 아니다. 새로운 환경설정 내용을 바로 적용하기 위해서

    source 명령어가 사용된다.

 

 

 

1.1 Usung catkin_make

catkin_make는 CMake 작업환경에서 cmake와 make가 합쳐진 도구로 볼 수 있다.

catkin_make를 사용하지 않는다면 아래와 같은 과정을 각각의 CMake프로젝트에 대해 수행하게 된다.

해당 CMake 프로젝트의 폴더 안에서 build 디렉터리를 생성하고 cmake .. 와 make 단계를 진행하게 된다.

하지만 catkin_make를 사용하면 catkin 프로젝트 안에서 아래와 같이 진행할 수 있다.

위의 명령어를 통해 catkin프로젝트의 src폴더를 찾아 빌드를 진행하게 된다. 패키지의 소스코드가 다른 폴더(예를들어 my_src라는 폴더)에 들어있다면 catkin_make 는 다음과 같이 사용될 수 있다.

 

 

 

1.2 Building Your Package

 이전 게시물에서 catkin workspace와 beginner_tutorials 패키지를 생성하였다. catkin_ws로 이동하여 src디텍터리의

내용을 확인하면 CMakeLists.txt 파일과 beginner_tutorials 디렉터리를 확인할 수 있다.

 

앞의 게시물에서 beginner_tutorials 디렉터리 아래에 catkin_create_pkg가 생성한 파일들을 담아 놓았다.

이제 catkin_make를 사용하여 이 패키지를 빌드하자.

 

catkin_ws 디렉터리에서 아래 명령어를 입력한다.

 

 

그럼 해당 디렉터리에 build폴더가 생기며 빌드가 완료된다.

(build파일이 생기는 것을 확인하지 못했으면 폴더를 삭제 후 다시 catkin_make를 해보자.)

 

 

반응형

'ROS > ROS Wiki' 카테고리의 다른 글

Using rqt_console and roslaunch  (0) 2021.01.05
Understanding ROS Services and Parameters  (0) 2021.01.05
Understanding ROS Topics  (0) 2021.01.04
Understanding ROS Nodes  (0) 2021.01.03
Creating a ROS Package  (0) 2020.12.31
반응형

1. What makes up a catkin Package?

우선 내용을 다루기 전에 ROS에서 자주 등장하는 catkin이 무엇인지 알아보자.

Catkin은 ROS의 빌드 시스템으로 볼 수 있고 패키지들을 효율적으로 빌드하여 다른 상황에서 쉽게 사용될 수 있도록 한다.

ROS는 CMake를 ROS에 맞도록 특화면 catkin 빌드 시스템을 만들었다.

그럼 CMake는 무엇인가?

CMake는 플랫폼과 독립적으로 Build Process를 기술한 파일로 특정 IDE나 특정 빌드 도구에 한정되어 하나의 형식으로

한정되는(예를들어 Visual Studio의 sln/vcproj를 다른 플랫폼에서 바로 빌드할 수 없음) 문제점들을 CMake를 통해

해결할 수 있다.

 

ROS의 패키지들이 catkin package로 다뤄지기 위해선 몇가지 조건이 필요하다.

 

* 패키지는 반드시 catkin을 따르는 .xml파일이 필요하다.

   패키지.xml 파일은 패키지에 대한 메타 정보를 제공한다.

   (메타정보 : 데이터를 효율적으로 이용하기 위해 설명해놓은 정보)

 

* 패키지는 반드시 catkin을 사용하는 CMakeLists.txt 파일을 포함하고 있어야 한다.

 

* 각각의 패키지는 각각의 폴더를 갖고 있어야 한다.

   이는 다수의 패키지들이 같은 경로를 공유할 수 없다는 것을 의미한다.

 

 

 

2. Packages in a catkin Workspace

catkin 패키지들은 catkin workspace를 통해 사용하는 것이 좋지만 catkin 패키지만을 독립적으로 빌드할 수 있다.

workspace는 아래와 같은 형태를 갖는다.

 

튜토리얼을 시작하기 전에 새로운 empty catkin workspace를 만들자.

(참고: wiki.ros.org/catkin/Tutorials/create_a_workspace)

 

 

 

3. Creating a catkin Package

새로운 catkin package를 만들기 위한 catkin_create_pkg 스크립트 사용법을 다루고 이를 통해 할 수 있는 작업을 다룬다.

 

우선 위의 과정에서 생성한 empty catkin workspace에서의 경로에서 source 경로로 이동한다.

'beginner_tutorials'라는 새로운 패키지를 생성하기 위해 std_msgs, roscpp, rospy에 의존적인

catkin_create_pkg 스크립트를 사용한다.

위의 과정을 통해 package.xml, CMakeLists.txt 등이 담긴 beginner_tutorials 폴더를 생성하게 되고

catkin_create_pkg 패키지에 부여한 정보들을 통해 설정되게 된다.

우리는 [depend1], [depend2], [depend3]에 의존적인 package_name 패키지를 생성한 것이다.

 

 

 

4. Building a catkin workspace and sourcing the setup file

이제 catkin workspace의 패키지를 빌드해보자.

이를 진행하면 devel 디렉터리 안에 /opt/ros/melodic 안에 있는 내용들과 유사한 구조의 파일들이 생성되게 된다.

workspace를 ROS 환경에 추가하기 위해 아래 내용을 진행한다.

 

 

 

5. Package Dependencies

5.1 First-order dependencies

 

앞에서 catkin_create_pkg 패키지를 사용할때 몇가지 의존성을 설정하였다(roscpp, rospy, std_msgs).

이들은 rospack tool을 통해 확인할 수 있다.

위의 내용을 통해 rospack은 catkin_create_pkg를 실행할 때 사용되는 arguments들을 나타내는 것을 확인할 수 있다.

이러한 의존성(dependencies)는 package.xml 파일에 저장되게 된다.

 

5.2 Indirect Dependencies

 

대부분의 경우 하나의 dependency는 각각의 dependencies를 갖고 있는데 예를들어 rospy 패키지는 다음과 같은

dependencies를 갖는다.

그리고 패키지들은 다수의 직접적이지 않은(Indirect) dependencies를 갖는데 rospack을 통해 이들을 확인할 수 있다.

 

6. Customizing Your Package

catkin_create_pkg를 통해 실행되는 파일들을 살피며 각각의 Customizing을 통해 패키지를 설정한다.

 

 

6.1 Customizing the package.xml

새로운 패키지 안의 package.xml 파일이 실행된다.  package.xml을 살펴보자.

 

 

6.1.1 description tag

.xml 파일의 line5에 위치한 description 부분을 수정한다. 문장은 짧게 구성되어야 하고 짧게 구성하기 힘든 경우

분할하여 작성하여야 한다.

 

6.1.2 maintainer tags

이는 다른 사람들이 패키지와 관련하여 어떻게 컨텍할 수 있을지 표기하는 부분이다. 적어도 하나의 maintainer tag가 요구되고

maintainer의 이름은 tag의 중앙부에 위치시킨다.

혹은 이메일을 남기기도 한다.

 

6.1.3 license tags

open source 라이센스나 소프트웨어 라이센스 등을 표시한다.

 

6.1.4 dependencies tags

dependencies는 build_depend, buildtool_depend, exec_depend, test_depend 로 나뉘어진다.

자세한 내용은 wiki.ros.org/catkin/package.xml#Build.2C_Run.2C_and_Test_Dependencies 를 참고하자.

 

위의 과정에서 std_msgs, roscpp, rospy를 catkin_create_pkg 패키지의 arguments로 설정하였으므로

다음과 같이 표시된다.

 

catkin 에서의 buildtool_depend를 디폴트로 하여 지정한 dependencies들이 표시된다.

우리의 경우 지정한 dependencies들이 빌드과정과 실행과정에서 모두 사용 가능하기를 원하므로 exec_depend 태그를

추가해준다.

6.1.5 Final package.xml

최종적인 xml 파일의 형태를 확인한다.

 

6.2 Customizing the CMakeLists.txt

위의 과정을 통해 package.xml 파일은 당신의 package에 맞게 최적화되었다.

CMakeLists.txt 파일은 ROS 코드를 빌드하는 과정을 통해 변경되게 될 것이다.

 

이렇게 ROS Package를 생성하는 과정을 진행하였다.

반응형

'ROS > ROS Wiki' 카테고리의 다른 글

Using rqt_console and roslaunch  (0) 2021.01.05
Understanding ROS Services and Parameters  (0) 2021.01.05
Understanding ROS Topics  (0) 2021.01.04
Understanding ROS Nodes  (0) 2021.01.03
Building a ROS Package  (0) 2020.12.31

+ Recent posts