본문 바로가기
Programming Language/ROS

ROS Package 생성

by 민트초코맛꼬깔콘 2014. 8. 13.

출처 : http://passionvirus.blog.me/80129398144

[ROS] 자습서 02: ROS Package 생성|작성자 표윤석




[ROS] 자습서 02: ROS Package 생성



--------------------------------------------------------------------------------

원본 : http://www.ros.org/wiki/ROS/Tutorials/CreatingPackage

작업 : 2011년 05월 02일, ROS Diamondback 를 기준으로 작성함.

주의 : 원본를 중심으로 설명하지만 개인적으로 이해한 내용이기 때문에 틀린 해석 및 오류가 있을 가능성이 있음. 또한, 원본 번역이 아닌 재구성한 내용임.



--------------------------------------------------------------------------------

1. ROS Package 생성

: roscreate-pkg를 이용하여 새로운 패캐지를 생성하고, rospack을 이용하여 해당 패키지의 의존성을 살펴보도록 한다.



--------------------------------------------------------------------------------

1.1 roscreate-pkg의 이용

:  roscreate-pkg 명령어를 이용하여 새로운 패키지를 생성해 보겠다. 이 명령어는 패키지 생성시에 필요한 파일등을 자동 생성시켜주어 사용자의 부주의로 잘못된 패키지 생성을 막아준다.


>> 사용방법(일반적인 방법 및 의존성 추가 방법의 2가지가 존재한다.)

$ roscreate-pkg [package_name]

$ roscreate-pkg [package_name] [depend1] [depend2] [depend3]



--------------------------------------------------------------------------------

1.2 실제 사용 방법

: 이제부터는 실제로 패키지 생성을 해보도록 하자.  새로 만들 패키지는 beginner_tutorials package 라는 패키지로 공통 ROS 패키지에 속해 있는 std_msgs, roscpp, and rospy 에 의존하도록 생성해 보자.


: 패키지를 생성하기전에 사용자의 폴더에 패키지 폴더를 만들어 주고, 이를 PACKAGE_PATH 에 등록해주어야 한다. 그래야만 생성된 폴더가 패키지 폴더로 인식된다. 우선 아래의 예제대로 폴더를 생성 후  PACKAGE_PATH 에 폴더를 등록해 주도록 하자. 만약 계속 사용된다면 .bashrc 에 PACKAGE_PATH 를 영구적으로 등록해주어야 한다.


>> 사용예

$ cd ~/

$ mkdir ros_tutorials

$ export ROS_PACKAGE_PATH=~/ros_tutorials:$ROS_PACKAGE_PATH



: 폴더 생성 및 경로 등록이 완료되었다면 해당 폴더로 이동 후, roscreate-pkg 명령어를 이용하여 std_msgs, rospy, roscpp 에 의존하는 beginner_tutorials 패키지를 생성하도록 하자.


>> 사용예

$ cd ~/ros_tutorials

$ roscreate-pkg beginner_tutorials std_msgs rospy roscpp


>> 결과값

Creating package directory ~/ros/ros_tutorials/beginner_tutorials

Creating include directory ~/ros/ros_tutorials/beginner_tutorials/include/beginner_tutorials

Creating cpp source directory ~/ros/ros_tutorials/beginner_tutorials/src

Creating python source directory ~/ros/ros_tutorials/beginner_tutorials/src/beginner_tutorials

Creating package file ~/ros/ros_tutorials/beginner_tutorials/Makefile

Creating package file ~/ros/ros_tutorials/beginner_tutorials/manifest.xml

Creating package file ~/ros/ros_tutorials/beginner_tutorials/CMakeLists.txt

Creating package file ~/ros/ros_tutorials/beginner_tutorials/mainpage.dox


Please edit beginner_tutorials/manifest.xml and mainpage.dox to finish creating your package



: 아래의 첫번째 명령어는 rospack 에 새로운 정보를 갱신하라는 명령어이고, 두번째 명령어는 이번에 생성한 beginner_tutorial 의 정보를 물어보는 명령어이다.


>> 사용예

$ rospack profile

$ rospack find beginner_tutorial


>> 결과값

: YOUR_PACKAGE_PATH 은 사용자의 폴더를 가르킨다.

YOUR_PACKAGE_PATH/beginner_tutorials


: roscd를 이용하여 현재 폴더를 생성된 폴더로 이동이 가능하다.


>> 사용예

$ roscd beginner_tutorials 


>> 결과값

: 폴더가 이동되었음을 확인 할 수 있다.



--------------------------------------------------------------------------------

1.3 rospack를 이용해 패키지의 1급 의존성을 알아보자.

: rospack depends1 명령어를 이용하면 해당 패키지의 1급 의존성을 확인해 볼 수 있다.


>> 사용예

$ rospack depends1 beginner_tutorials 


>> 결과값

std_msgs

rospy

roscpp



: 또한, 해당 패키지의 manifest.xml 를 살펴보면 의존성 관계를 알아 볼 수 있다. 여기서 명령어 cat 대신 gedit로 보기를 권장 한다.(왜냐? 보기 편하니까!)


>> 사용예

$ roscd beginner_tutorials

$ cat manifest.xml


>> 결과값

<package>

...


  <depend package="std_msgs"/>

  <depend package="rospy"/>

  <depend package="roscpp"/>

</package>



--------------------------------------------------------------------------------

1.4 rospack를 이용해 패키지의 간접 의존성을 알아보자.


>> 사용예

rospack depends beginner_tutorials


>> 결과값

genmsg_cpp

roslib

std_msgs

roslang

rospy

xmlrpc++

rosconsole

roscpp



--------------------------------------------------------------------------------

1.5 ros 클라이언트 라이브러리

rospy 은 Python에 대한 클라이언트 라이브러리, roscpp 은  C++ 에 대한 클라이언트 라이브러리이다. 이외에도 ROS 는 Octave, LISP,  Java, Lua 등을 지원하기 위해 특별한 클라이언트 라이브러리가 존재한다.



--------------------------------------------------------------------------------

1.6 복습

roscreate-pkg = ros+create-pkg : ROS 패키지 생성시 필요한 모든 구성요소 자동 생성하는 명령어

rospack = ros+pack(age) : ROS 패키지와 관련된 정보를 알아보는 명령어

rosstack = ros+stack : ROS 스택과 관련된 정보를 알아보는 명령어


'Programming Language > ROS' 카테고리의 다른 글

TROUBLE SHOOTING  (0) 2014.11.14
ROS_PACKAGE(2)  (0) 2014.09.22
OROCOS (RTT, KDL)  (0) 2014.08.01
ROS fuerte 설치  (0) 2014.07.04