출처 : 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 스택과 관련된 정보를 알아보는 명령어
[출처] [ROS] 자습서 02: ROS Package 생성|작성자 표윤석
'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 |