catkin?
ROS 빌드 시스템
실행 가능한 프로그램, 라이브러리, 스크립트, 인터페이스를 생성한다.
화면에 catkin_ws_oroca가 생성된 것을 볼 수 있다.
catkin_ws_oroca안에 들어가면 build devel src가 기본으로 생성되어 있는 것을 볼 수 있다.
build : 라이브러리 및 작업결과 저장
devel :설치파일들 저장
src : 작업공간_package 생성 및 사용
[ROS Package]
$ cd ~catkin_ws_oroca/src
# catkin_create_pkg [패키지이름][의존성-의존할 요소]
$ catkin_create_pkg basics std_msgs rospy
: basics라는 package를 만드는데 내부 구성은 rospy, roscpp를 사용할거다.
$ cd ~catkin_ws_oroca/
$ catkin_make
CMakeLists.txt, package.xml 파일을 자동생성
여기서 잠깐! catkin_make는 catkin을 이용한 일련의 작업 과정에서 쓰이는 편리한 도구로 이는 일반적으로 CMake 작업환경에서의 cmake와 make가 합쳐져 있는 도구라 생각하면됨.



앞서 배운것처럼 rospack을 이용해서 package정보를 알 수 있는데 rospack 요소 중에 depends1은 직접 의존(dependencies),
depends는 간접 의존(indirect dependencies)까지 포함.
$rospack depends1을 이용해서 package인 basics의 의존 정보를 알 수 있다.
$rospack depends는 package인 basics의 간접의존까지 모두 검색

$roscd basics를 이용해서
$cd cd catkin_ws_oroca/src/basics/
라는 명령어를 치지 않고 바로 basics package로 이동가능.
단, package인 경우만 이동가능 한 것을 볼 수 있음. 단순 ros의 ws(WorkSpace)도 이동x
자, 이제 그럼 package.xml을 살펴보자.
(1) description tag
<description>The basics package</description>
<description>은 package에 대한 설명을 하는 부분으로써 가능한 한 줄로 요약한다는 전제를 가지고,
패키지에 대한 설명을 적는다. 하지만 한 줄로는 설명이 어려운 경우 여러 줄이라도 가능하다.
(2) maintainer tags
package.xml에서 가장 중요한 부분 중 하나.
패키지의 관리자에 대한 정보가 기록되는 부분이며 최소 한 명 이상의 정보가 입력되어야.
관리자의 이름은 태그의 몸체가 되고, 반드시 입력되어야 하는 웹메일 주소를 속성으로 가지고 있음.
(3) license tags
라이센스에 대한 정보를 반드시 입력해야 한다.
라이센스에 대한 정보는 (https://opensource.org/licenses/alphabetical)에서 찾아 볼 수 있다.
현재 사용자는 명시하지 않았지만,
ROS tutorial(http://wiki.ros.org/ko/ROS/Tutorials/CreatingPackage)에서는
ROS의 핵심부분에서 이미 사용되고 있는 BSD라이센스를 사용하겠다고 명시해놓고 있다.
(4)dependencies tags
package의 의존성을 알려주는 태그의 모음들을 볼 수 있다.
모든 package는 적어도 하나 이상의 의존성을 가진다.
- <buildtool_depend>: 이 패키지가 스스로 빌드하기 위해서 필요한 빌드 시스템에 대해 명시한다.
- <build_depend>: 이 패키지를 빌드할 때 어떤 패키지들이 필요한지 명시한다.
- <run_depend>: 이 패키지를 실행시킬 때 팔요해지는 패키지들에 대해 명시한다.(specify which packages are needed to run code in this package, or build libraries against this package.)
- <test_depend>: unit tests를 위한 추가적인 의존성만을 명시한다. build_depend나 run_depend에 명시한 의존성을 명시하면 안된다.
위 네가지의 태그를 사용할 수 있다.
package.xml에 쓰이는 자세한 설명을 알고 싶다?
: http://wiki.ros.org/catkin/package.xml#Build.2C_Run.2C_and_Test_Dependencies
참고로 위에서 언급한 바와 같이 package.xml은 package를 생성하면 자동으로 만들어진다.
하지만 이 파일을 사용자가 다시 한 번 어떤 내용인지 인지하고 재작성을 실시한다면
보다 견고하고 간결해진 package를 구성가능해진다.
댓글 없음:
댓글 쓰기