2017년 1월 16일 월요일

#RobotOperatingSystem_01



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 작업환경에서의 cmakemake가 합쳐져 있는 도구라 생각하면됨.





































앞서 배운것처럼 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를 구성가능해진다.

댓글 없음:

댓글 쓰기