OpenRTM-aist(Python버전) 1.x계열 인스톨

여기에서는 OpenRTM-aist(Python버전)의 Windows에의 인스톨 방법을 설명합니다. ※이후의 설명은 편의상 OpenRTM-aist-1.0.0에 대해서 쓰여져 있습니다.

Ubuntu/Debian에서의 인스톨

ubuntu_logo2.png

Python판 OpenRTM-aist는 Ubuntu나 Debian GNU Linux로 이용 가능한 deb 패키지가 제공되고 있습니다. 대응하고 있는 배포 버전은 다운로드 페이지로부터 확인할 수 있습니다. Ubuntu/Debian GNU Linux에의 대응 및 버전은, 예고없이 변경 또는 정지되는 일이 있으므로 양해 바랍니다.

인스톨의 방법에는 크게 나누어 이하의 2종류의 인스톨 방법이 있습니다.

  • openrtm.org 가 제공하는 일괄 인스톨 스크립트를 사용
  • apt-get 나 synaptic 패키지 매니저를 사양

원하시는 방법으로 인스톨 해 주십시오.

일괄 인스톨·스크립트를 사용하는 방법

openrtm.org 가 제공하는 인스톨·스크립트 pkg_install_python_ubuntu.sh또는 pkg_install_python_debian.sh를 다 운로드페이지로부터 다운로드하여 root권한으로 실행합니다.이 스크립트는 필요한 패키지를 차례차례 apt-get로 인스톨 해 갈 것입니다.

OpenRTM-aist를 개발·실행하기 위해서 필요한 패키지를 빠짐없이 인스톨 하기에 편리합니다. 처음으로 OpenRTM-aist를 인스톨 하시는 분에게 추천합니다.

다만, OpenRTM-aist와 관계된 모든 패키지를 인스톨 하므로, 필요 없는 것도 인스톨 될 가능성이 있습니다. 관계자나 잘 알고 계시는 분은 수동으로 인스톨도 무관합니다

이하 일괄 인스톨 스크립트를 사용한 인스톨의 순서입니다.

 > wget [pkg_install_python_XXX.sh 의 다운로드 URL]
 > su
 # sh pkg_install_python_XXX.sh
 //도중 몇개의 질문이 있으므로,''y''혹은 ''Y''를 입력하면서 완료시킨다.

apt-get를 사용하는 방법

source.list의 편집

openrtm.org에서는 apt-get으로부터 이용 가능한 패키지 리포지터리(repository)를 제공하고 있습니다. 다만 디폴트의 패키지 리포지터리에는 포함되어 있지 않으므로 apt-get의 설정을 변경할 필요가 있습니다.

/etc/apt/sources.list 에 이하의 행을 추가합니다.

 > su
 # vi /etc/apt/sources.list # "sources.list" 를 편집

  deb http://www.openrtm.org/pub/Linux/ubuntu/ (code name) main
  또는
  deb http://www.openrtm.org/pub/Linux/debian/ (code name) main

의 1행을 추가. "(code name)"의 부분에는 이하의 debian/ubuntu의 버전에 대응한 코드네임을 지정합니다.

버전 code name
Debian GNU Linux
Debian 3.1 sarge
Debian 4.0 etch
Debian 5.0 lenny
Ubuntu
Ubuntu 7.04 feisty
Ubuntu 7.10 gutsy
Ubuntu 8.04 hardy
Ubuntu 8.10 intrepid
Ubuntu 9.04 Jaunty
Ubuntu 9.10 karmic
Ubuntu 10.04 lucid
Ubuntu 9.10 maverick

apt-get에 의한 인스톨

다음의 순서로 인스톨을 실시합니다. 도중 몇개의 질문이 있으므로, y를 입력하면서 완료시켜 주십시오.

 # apt-get update
 # apt-get install python
 # apt-get install python-omniorb2-omg omniidl4-python omniorb4-nameserver
 # apt-get install openrtm-aist-python openrtm-aist-python-example

또한 인스톨 끝난 OpenRTM-aist를 특정 버전인 상태로 보관 유지하고 싶은 장소에 /etc/apt/preferences를 편집해 이하의 행을 추가합니다. (이 예제에서는 1.0 계열에 버전으로 고정합니다.)

 Package: OpenRTM-aist-Python
 Pin: version 1.0.*

자세한 것은 http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html#s-pin 를 참조해 주십시오.

인스톨의 확인

인스톨을 확인합니다.

 $ dpkg -l 'openrtm*'
 Desired=Unknown/Install/Remove/Purge/Hold
 | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
 |/ Err?=(none) /Reinst-required (Status,Err: uppercase=bad)
 ||/ Name                       Version                    Description
 +++-==========================-==============================================================================================
 ri  openrtm-aist-python        1.0.0-release0             OpenRTM-aist, RT-Middleware distributed by AIST
 ri  openrtm-aist-python-exampl 1.0.0-release0             OpenRTM-aist, RT-Middleware distributed by AIST

패키지의 상세

각 패키지의 내용은 이하와 같습니다.

openrtm-aist-python

openrtm-aist-python에는 Python 모듈과 커멘드군이 포함되어 있습니다.

  • 커멘드
     /usr/bin/rtcprof_python
     /usr/bin/rtcd_python
  • 설정 파일 샘플
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/examples/rtc.conf.sample
  • OpenRTM-aist 본체의 Python 모듈
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/*
  • OpenRTM-aist의 유틸리티 모듈
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtcprof
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtcd
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtc-template
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtm-naming

openrtm-aist-python-example

openrtm-aist-python-example에는 RTC의 샘플이 포함되어 있습니다.

  • 샘플
     /usr/share/OpenRTM-aist/examples/python/SimpleIO/
     /usr/share/OpenRTM-aist/examples/python/SimpleService/
     중략

Fedora에서의 인스톨

Python판 OpenRTM-aist는 Fedora Linux로 이용 가능한 RPM 패키지가 제공되고 있습니다. 대응하고 있는 Fedora Linux의 버전은 다운로드 페이지로부터 확인 할 수 있습니다. Fedora Linux에의 대응 및 그 버전은 예고없이 변경 또는 정지되는 일이 있습니다. 양해 바랍니다.

Fedora Linux에의 인스톨의 방법에는 크게 나누어 이하의 2종류의 인스톨 방법이 있습니다.

  • openrtm.org 가 제공하는 일괄 인스톨 스크립트를 사용
  • yum 패키지 매니저를 사용

일괄 인스톨·스크립트

openrtm.org가 제공하는 인스톨·스크립트 pkg_install_python_fedora.sh를 다운로드 페이지로부터 다운로드해, root 권한으로 실행합니다. 이 스크립트는 필요한 패키지를 차례차례 yum로 인스톨 합니다.

OpenRTM-aist를 개발·실행하기 위해서 필요한 패키지를 빠짐없이 인스톨하기 때문에 편리합니다. 처음으로 OpenRTM-aist를 인스톨 하시는 분에게 추천합니다. 다만, OpenRTM-aist에 관련된 모든 패키지를 인스톨 하므로, 필 요 없는 것도 인스톨 될 가능성이 있습니다. 자세하게 알고계신 분께서는 수동으로 인스톨 하셔도 좋습니다. 이하, 일괄 인스톨 스크립트를 사용한 인스톨의 순서입니다.

 > wget [pkg_install_python_fedora.sh 의 다운로드 URL]
 > su
 # sh pkg_install1_python_fedora.sh
 //도중, 몇개의 질문을 물어보므로,''y''혹은 ''Y''를 입력하면서 완료시킵니다.

yum를 사용하는 방법

/etc/yum.repos.d/openrtm.repo의 작성

openrtm.org에서는 yum로부터 이용 가능한 패키지 리포지터리를 제공하고 있습니다. 다만, 디폴트의 패키지 리포지터리에는 포함되어 있지 않으므로, yum 의 설정을 변경할 필요가 있습니다.

이하와 같은 설정을 기록한 파일 /etc/yum.repos.d/openrtm.repo를 작성해 둡니다. 작성에는 통상 root 권한이 필요합니다.

 [openrtm]
 name=Fedora $releasever - $basearch
 failovermethod=priority
 baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/$releasever/Fedora/$basearch/os/Packages
 enabled=1
 gpgcheck=0
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
/etc/yum.repos.d/openrtm.repo

yum에 의한 인스톨

openrtm.repo 를 작성하면, 다음의 순서로 인스톨을 실시합니다. 도중, 몇개의 질문에 y를 입력하면서 완료시킵니다.

 > su
 # yum install python
 # yum install omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standard
 # yum install OpenRTM-aist-Python OpenRTM-aist-Python-example

인스톨의 확인

마지막에 이하의 커멘드로 인스톨의 확인을 합니다.

 # rpm -qa | grep  OpenRTM-aist-Python
 OpenRTM-aist-Python-example-1.0.0-RELEASE.fcx.i386
 OpenRTM-aist-Python-1.0.0-RELEASE0.fcx.i386

패키지의 상세

각 패키지의 내용은 이하와 같습니다

OpenRTM-aist-Python

OpenRTM-aist-Python에는 Python 모듈과 커멘드군이 포함되어 있습니다.

  • 커멘드
     /usr/bin/rtcprof_python
     /usr/bin/rtcd_python
  • 샘플 설정 파일
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/examples/rtc.conf.sample
  • OpenRTM-aist 본체의 Python 모듈
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/*
  • OpenRTM-aist의 유틸리티 모듈
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtcprof
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtcd
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtc-template
     /usr/lib/python<version>/dist-packages/OpenRTM_aist/utils/rtm-naming

OpenRTM-aist-Python-example

OpenRTM-aist-Python-example에는 RTC의 샘플이 포함되어 있습니다.

  • 샘플
     /usr/share/OpenRTM-aist/examples/python/SimpleIO/
     /usr/share/OpenRTM-aist/examples/python/SimpleService/
     중략

Vine Linux에서의 인스톨

Python판 OpenRTM-aist는 Vine Linux로 이용 가능한 RPM 패키지가 제공되고 있습니다. 대응하고 있는 Vine Linux의 버전은 다운로드 페이지로부터 확인 할 수 있습니다. Vine Linux에의 대응 및 그 버전은 예고없이 변경 또는 정지되는 일이 있습니다, 양해 바랍니다.

Vine Linux에의 인스톨의 방법에는 크게 나누어 이하의 2종류의 인스톨 방법이 있습니다.

  • openrtm.org가 제공하는 일괄 인스톨·스크립트를 사용
  • apt-get 나 synaptic 패키지 매니저를 사용

Vine Linux 일괄 인스톨·스크립트

openrtm.org가 제공하는 인스톨·스크립트 pkg_install_python_vine.sh를 다운로드 페이지로부터 다운로드해, root 권한으로 실행 합니다. 이 스크립트는 필요한 패키지를 차례차례 apt-get로 인스톨 해 갑니다.

OpenRTM-aist를 개발·실행하기 위해서 필요한 패키지를 빠짐없이 인스톨 해주므로 편리합니다. 처음으로 OpenRTM-aist를 인스톨 하시는 분에게 추천합니다. 다만, OpenRTM-aist에 관계된 모든 패키지를 인스톨 하므로 필 요 없는 것도 인스톨 될 가능성이 있습니다. 자세하게 알고계신 분은 수동으로 인스톨 하셔도 관계없습니다. 이하, 일괄 인스톨 스크립트를 사용한 인스톨의 순서입니다.

 > wget [pkg_install_python_vine.sh 의 다운로드 URL]
 > su
 # sh pkg_install1_python_vine.sh
 //도중, 몇개의 질문을 물어보므로,''y''혹은 ''Y''를 입력하면서 완료시킨다.

apt-get를 사용하는 방법

sources.list의 수정

openrtm.org에서는 apt-get로부터 이용 가능한 패키지 리포지터리를 제공하고 있습니다. 다만, 디폴트의 패키지 리포지터리에는 포함되어 있지 않으므로, apt-get의 설정을 변경할 필요가 있습니다. 우선,/etc/apt/sources.list의 말미에 다음의 한문장을 추가합니다. 이 때 root 권한이 필요하므로 주의해 주십시오.

 rpm http://www.openrtm.org/pub/Linux/Vine/apt x.x/$(ARCH) main

여기서,x.x의 부분은 버전 번호입니다. 예를 들면,Vine5.0라면 x.x5.0로 바꿔놓습니다.

 rpm http://www.openrtm.org/pub/Linux/Vine/apt 5.0/$(ARCH) main

sources.list 를 수정하여, 다음의 순서로 인스톨합니다.

 > su
 # apt-get update
 # apt-get install python
 # apt-get install omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standarda
 # apt-get install OpenRTM-aist-Python OpenRTM-aist-Python-example

도중, 몇개의 질문에 y혹은 Y를 입력해 완료 시킵니다. apt-get은 현재는 synaptic 커멘드로 바꾸는 것을 추천하고 있습니다.

인스톨의 확인

인스톨의 확인을 이하와 같이 해 실시합니다.

 # rpm -qa | grep OpenRTM-aist-Python
 OpenRTM-aist-Python-example-1.0.0-RELEASE.vlXX
 OpenRTM-aist-Python-1.0.0-RELEASE0.vlXX

패키지의 상세

각 패키지의 내용은 이하와 같습니다

OpenRTM-aist-Python

OpenRTM-aist-Python 에는 Python 모듈과 커멘드군이 포함되어 있습니다.

  • 커멘드
     /usr/bin/rtcprof_python
     /usr/bin/rtcd_python
  • 샘플 설정 파일
     /usr/lib/python<version>/site-packages/OpenRTM_aist/examples/rtc.conf.sample
  • OpenRTM-aist 본체의 Python 모듈
     /usr/lib/python<version>/site-packages/OpenRTM_aist/*
  • OpenRTM-aist의 유틸리티 모듈
     /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtcprof
     /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtcd
     /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtc-template
     /usr/lib/python<version>/site-packages/OpenRTM_aist/utils/rtm-naming

OpenRTM-aist-Python-example

OpenRTM-aist-Python-example에는 RTC의 샘플이 포함되어 있습니다.

  • 샘플
     /usr/share/OpenRTM-aist/examples/python/SimpleIO/
     /usr/share/OpenRTM-aist/examples/python/SimpleService/
     중략

Windows에서의 인스톨

openrtm.org에서는 Windows용의 msi(Microsoft Windows installer) 패키지를 제공하고 있습니다. msi 패키지를 이용하는 것으로 의존 라이브러리인 omniORB나, RTSystemEditor라고 하는 툴도 동시에 인스톨 할 수 있습니다.

msi 패키지에 의한 인스톨

openrtm.org의 다운로드 사이트로부터, msi 패키지를 다운로드합니다. msi 패키지에는 필요한 omniORBpy 나 RTSystemEditor라고 하는 툴은 포함되어 있습니다만, Python은 미리 인스톨 해 둘 필요가 있습니다.

또, 구 버전의 OpenRTM-aist나 omniORB등의 의존 패키지가 인스톨 되고 있는 경우는, 미리 언인스톨하는 것을 추천합니다.

인스톨러의 기동

openrtm.org로부터 msi를 다운로드해 실행하면, 이하와 같은 다이얼로그가 나타납니다.

installer_python_00_ko.png
인스톨러 다이얼로그

위저드에 따라서, 인스톨을 진행시킵니다. 「다음」을 클릭하면 사용 허락 계약서의 화면이 되기 때문에, 「동의함」을 클릭해 다음으로 진행합니다.(디폴트에서는 EPL (Eclipse Public License)에 동의 한 것이 됩니다.)

installer_python_01_ko.png
라이센스의 선택

셋업의 종류의 선택

셋업의 종류의 선택으로 진행됩니다. 이하의 3종류의 인스톨 방법을 선택할 수 있습니다.

  • 표준: 모든 기능이 인스톨 됩니다.
  • 사용자 지정: 인스톨 하는 기능을 선택합니다.
  • 전체: 모든 기능이 인스톨 됩니다. 표준과 같다.
    installer_python_02_ko.png
    셋업의 종류의 선택

사용자 지정 인스톨

「사용자 지정」을 선택하면, 인스톨 하는 패키지를 한층 더 세세하게 선택할 수 있습니다.

installer_python_03_ko.png
「사용자 지정」인스톨의 패키지 선택

이하의 6개의 항목이 있습니다. (이미 C++판, 혹은 Java판이 인스톨 되고 있는 경우는, RTSystemEditor 이외의 5개의 항목이 됩니다.)

  • OpenRTM-aist (Python): OpenRTM-aist 본체입니다
  • omniORBpy: omniORB의 Python 모듈입니다
  • Utility: rtcd 나 rtm-naming 등 OpenRTM-aist에 관한 유틸리티 프로그램입니다
  • Documents: Doxygen로 작성된 문서입니다
  • Examples: 샘플 컴퍼넌트군입니다
  • RTSystemEditor: RTSystemEditaor의 스탠드얼론판입니다 통상은 모든 것을 인스톨 해 주십시오.

인스톨

셋업의 종류의 선택 후, 「다음」을 클릭하면 이하의 다이얼로그가 나옵니다.

installer_python_04_ko.png
인스톨

여기서 「설치」를 클릭하면 인스톨이 개시됩니다.

installer_python_05_ko.png
인스톨 진행 상황

아래와 같은 화면이 나오면 인스톨은 완료입니다.「마침」을 클릭해 인스톨을 종료합니다.

installer_python_06_ko.png
인스톨의 완료

인스톨의 상세

인스톨러의 작업 내용

인스톨러는 이하의 작업을 실시합니다.

  • 인스톨 디렉토리 (디폴트는 C:\Python<version>) 이하에 각종 파일을 복사
    • OpenRTM-aist 본체의 모듈을 C:\Python<version>\Lib\site-packages\OpenRTM_aist 이하에 복사
    • 스탠드얼론판 RTSystemEditor를 C:\Program Files\OpenRTP 이하에 복사
    • omniORBpy 모듈, 커멘드 등을 C:\Python<version> 이하에 복사
  • 스타트 메뉴 이하에 OpenRTM-aist 폴더를 작성해 각종 숏컷을 설정
    • rtcd, 네임서버 등의 숏컷을 작성
    • 샘플 RTC의 숏컷을 작성
    • doxygen에 의한 클래스 레퍼런스, IDL 레퍼런스 숏컷을 작성
  • 환경 변수의 설정

인스톨 되는 파일

파일은 이하와 같은 구조로 인스톨 됩니다.

 <python_install_dir>
   + omniORB의 dll, 각종 커멘드
   + rtcd, rtcprofile 등 OpenRTM-aist 관련의 각종 커멘드
   |
   + Lib
   |  + site-packages
   |     + OpenRTM_aist: OpenRTM-aist의 Python 모듈
   |        + RTM_IDL: IDL 파일
   |
   |     + omniORB 관련의 Python 모듈

<install_dir>

   + OpenRTM-aist
   |  + <version>
   |     + bin: 각종 커멘드
   |     + doc: doxygen 문서
   |     + examples
   |         + Python: Python 샘플 컴퍼넌트 (.py)
   |
   + OpenRTP
      + RTSystemEditor: 스탠드얼론판 RTSystemEditor

소스로부터 빌드 (Windows)

Windows상에서 소스 패키지로부터 인스톨 하고 싶은 경우, OpenRTM-aist-Python를 스스로 빌드 할 수 있습니다.

Windows용 소스 코드

Windows용의 OpenRTM-aist(Python버전) 소스 패키지는 Linux용의 소스와는 별도로 배포되고 있습니다. 소스 코드의 내용은 완전히 같습니다만, 이하의 부 분에서 차이가 납니다.

  • 문자 코드 (Windows: Shift-JIS, Linux: EUC)

소스 코드의 구성

오리지날은 subversion 리포지터리의 소스 코드로, 그 소스 코드로부터 Linux상에서는

  • Linux/Unix용 소스 코드 배포 패키지
  • Windows용 소스 코드 배포 패키지

의 2종류를,

Windows상에서는,

  • Windows용 소스 코드 배포 패키지

의 1종류만을 작성하는 구성이 되어 있습니다.

빌드 환경

빌드에 필요한 환경, 라이브러리는 이하와 같습니다.

  • Python
  • omniORBpy

Python

이하의 사이트로부터 최신의 것을 다운로드한 후 인스톨 해 주십시오.

인스톨러를 기동하면, 위저드로 몇개의 선택 부분이 있습니다만, 디폴트인 상태로 인스톨 해도 괜찮습니다.

omniORBpy

OpenRTM-aist-Python의 빌드에는 omniORBpy의 라이브리가 필요합니다. omniORBpy는 이하의 링크에서 소스 코드 및 바이너리를 다운로드 할 수 있습니다만, openrtm.org가 제공하는 빌드가 완료된 바이너리 인스톨러를 사용하는 것이 편리합니다.

소스 패키지의 다운로드

우선 소스 코드 OpenRTM-aist-Python-X.X.X.zip를 다운로드해, 적당한 디렉토리에 압축을 해제합니다.

빌드

커멘드 prompt를 기동해 조금 전 소스 코드의 압축을 해제한한 폴더에 이동 후, 이하의 커멘드로 빌드합니다.

 > OpenRTM-aist-Python-X.X.X
 > python setup.py build

인스톨

정상적으로 빌드가 되었다면, 이하의 커멘드로 인스톨을 완료시킵니다.

 > python setup.py install

이상으로, OpenRTM-aist의 인스톨은 종료입니다.

소스로부터 빌드 (Linux)

패키지가 준비되어 있지 않은 UNIX 환경이나, 크로스 개발 환경, OpenRTM-aist-Python 본체의 소스를 변경해 이용하고 싶은 경우에는, 소스로부터 빌드 할 수 있습니다.

배포 소스의 빌드

OpenRTM-aist (Python판)는 Python의 distutils 모듈을 이용한 빌드 환경을 제공하고 있기 때문에, 여러가지 환경에서 용이하게 빌드 할 수 있습니다.

대응 OS 및 배포

OpenRTM-aist-Python는 아래와 같은 OS 및 Linux 배포 버전에서 동작 하는 것이 확인되고 있습니다.

  • FreeBSD
  • Vine Linux
  • Fedora
  • Debian
  • Ubuntu

이외의 환경에서도, 일반적인 Linux/UNIX 환경이면, 빌드할 수 있을 가능성이 있습니다.

의존 라이브러리

OpenRTM-aist-Python-1.0.0의 인스톨에는 아래와 같은 개발 환경 및 라이브러리가 필요합니다.

  • python: 빌드 툴을 이용하기 위해서 필요
  • omniORBpy: OpenRTM-aist의 빌드(IDL 컴파일)에 필요

각각의 라이브러리등의 문서에 따라 인스톨을 실시해 주십시오. 이러한 패키지가 표준의 디렉토리(/usr, /usr/local 등) 아래에 인스톨 되어 있으면, 이후의 OpenRTM-aist-Python 의 컴파일 작업을 비교적 간단하게 실시할 수 있습니다.

소스의 다운로드

OpenRTM-aist-Python의 소스를 다운로드합니다.

소스 코드의 전개

우선 소스 코드 OpenRTM-aist-Python-X.X.X.tar.gz를 적당한 디렉토리에 전개합니다.

 $ tar xvzf OpenRTM-aist-Python-X.X.X.tar.gz
 $ cd OpenRTM-aist-Python-X.X.X

빌드

OpenRTM-aist-Python는 패키지의 빌드에 distutils 모듈을 사용하고 있습니다. 빌드의 방법은, 다른 distutils를 사용한 패키지와 같게 실시합니다.

 $ python setup.py build [options]

[options]로 사용 가능한 옵션은

 $ python setup.py --help

을 참조해 주십시오.

인스톨

빌드가 정상적으로 종료하면 Python 모듈, 유틸리티 커멘드군을 인스톨 합니다.

 $  su
 # python setup.py install

이상으로, 소스 코드로부터의 빌드 및 인스톨은 종료입니다.

리포지터리(repository)의 소스의 빌드

OpenRTM-aist는 개발에 이용하고 있는 subversion 리포지터리를 일반적으로 공개하고 있습니다. 리포지터리로부터 체크아웃 한 소스 코드로부터 빌드를 실시할 수도 있습니다.

소스의 체크아웃

소스를 리포지터리로부터 체크아웃 합니다.

 $ svn co http://www.openrtp.jp/openrtm/svn/OpenRTM-aist-Python/trunk/OpenRTM-aist-Python
 A    OpenRTM-aist-Python/OpenRTM_aist
 A    OpenRTM-aist-Python/OpenRTM_aist/CorbaPort.py
 A    OpenRTM-aist-Python/OpenRTM_aist/__init__.py
 A    OpenRTM-aist-Python/OpenRTM_aist/Guard.py
 A    OpenRTM-aist-Python/OpenRTM_aist/RTM_IDL
 A    OpenRTM-aist-Python/OpenRTM_aist/RTM_IDL/RTC.idl
 A    OpenRTM-aist-Python/OpenRTM_aist/RTM_IDL/Manager.idl
 중략
 A    OpenRTM-aist-Python/installer/WixUI_es-es.wxl
 A    OpenRTM-aist-Python/installer/WixUI_fr-fr.wxl
 A    OpenRTM-aist-Python/installer/WixUI_de-de.wxl
 A    OpenRTM-aist-Python/installer/WixUI_cs-cz.wxl
 A    OpenRTM-aist-Python/installer/WixUI_da-dk.wxl
 리버젼 349 를 체크아웃 했습니다.

빌드

체크아웃 하면 OpenRTM-aist-Python라고 하는 디렉토리가 되어 있으므로, 그 디렉토리로 들어갑니다.

 $ ls 
 OpenRTM-aist-Python
 $ cd OpenRTM-aist-Python
 $ ls
 MANIFEST.in           OpenRTM-aist.pth  README      setup.py
 MANIFEST_examples.in  OpenRTM_aist/     installer/

setup.py를 사용해 빌드 합니다.

 $ python setup.py build

패키지의 작성

python setup.py sdist를 실시하는 것으로 openrtm.org에서 배포하고 있는 소스의 패키지를 작성할 수도 있습니다. 다만, 패키지의 작성을 실시하려면 doxygen 나 latex, qkc 등 추가의 커멘드가 필요합니다.

 $ python setup.py sdist

 $ ls -l dist/OpenRTM-aist-Python-*
 -rw-r--r-- 1 kurihara kurihara 425300 2010-07-29 22:06 dist/OpenRTM-aist-Python-1.0.0.tar.gz
 -rw-r--r-- 1 kurihara kurihara 597929 2010-07-29 22:06 dist/OpenRTM-aist-Python-1.0.0.zip
 -rw-r--r-- 1 kurihara kurihara  58071 2010-07-29 22:07 dist/OpenRTM-aist-Python-example-1.0.0.tar.gz

생성된 소스 패키지는 각각 이하와 같습니다.

  • OpenRTM-aist-Python-1.0.0.zip: Windows용 소스
  • OpenRTM-aist-Python-1.0.0.tar.gz: 범용 소스 (gzip 압축)
  • OpenRTM-aist-Python-example-1.0.0.tar.gz: 샘플용 소스 (gzip 압축)

동작확인 (Linux)

인스톨이 정상적으로 종료하면, 부속의 샘플로 동작 테스트를 합니다. 샘플은 통상 이하의 장소에 있습니다.

  • /usr/share/OpenRTM-aist/examples/python
  • /usr/local/share/OpenRTM-aist/examples/python

소스로부터 빌드 했을 경우는 소스 디렉토리 이하의

  • OpenRTM_aist/examples/<샘플 컴퍼넌트 세트명>

에도 있습니다.

샘플 컴퍼넌트 세트 SimpleIO를 사용해 OpenRTM-aist가 정상적으로 빌드·인스톨되어 있는지를 확인합니다.

샘플 컴퍼넌트 세트 SimpleIO

RT컴포넌트 ConsoleInComp, ConsoleOutComp로 구성되는 샘플 세트 입니다. ConsoleInComp는 콘솔로부터 입력된 수치를 OutPort로부터 출력하는 컴포넌트, ConsoleOutComp는 InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트입니다. 이것들은 Simple한 I/O(입출력)를 보여 주기 위한 샘플입니다. ConsoleInComp의 OutPort로부터 ConsoleOutComp의 InPort에 연결하여 2개의 컴포넌트를 액티브 (Activate)하는 것으로 동작합니다.

이후, 간단을 위해 샘플은 /usr/share/OpenRTM-aist/examples/python 이하에 있는 것으로 설명을 기술합니다.

샘플을 사용한 테스트

네임서버를 기동

우선, 컴퍼넌트의 참조를 등록하기 위한 네임서버를 기동합니다. Linux등의 패키지로 omniORBpy를 인스톨 했을 경우, 이미 시스템의 서비스로서 네임서버(omniNames)가 기동되어 있는 경우가 있습니다.

이미 omniNames가 기동되어 있는 경우, 이와 같이 됩니다.

 $ ps ax | grep omni
 1550  ?        Sl     0:00 /usr/bin/omniNames -errlog /var/log/omniorb4-nameserver.log
 18418 pts/2    S+     0:00 grep --color=auto omni

omniNames가 기동되어 있지 않는 경우는 이와 같이 됩니다.

 $ ps ax | grep omni
 18418 pts/2    S+     0:00 grep --color=auto omni

 omniNames가 기동하고 있지 않는 경우, rtm-naming 커멘드로 네임서버를 기동합니다.

 $ rtm-naming
 Starting omniORB omniNames: ubuntu910:2809
 
 Thu Dec  3 18:52:14 2009:
 
 Starting omniNames for the first time.
 Wrote initial log file.
 Read log file successfully.
 Root context is  IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000001010200100000003139322e3136382e3130302e31323500942600000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000004e8a174b01000fef
 Checkpointing Phase 1: Prepare.
 Checkpointing Phase 2: Commit.
 Checkpointing completed.

rtc.conf 의 작성

테스트를 위한 RTC 컨피그레이션 파일 rtc.conf를 작성하고 배치합니다. 우선 적당한 작업 디렉토리를 만듭니다. 여기에서는 편의상 홈 디렉토리 아래에 RTCwork 라고 하는 디렉토리를 작업 디렉토리로 해두기로 하겠습니다. 작업 디렉토리 RTCwork에 다음과 같은 내용의 파일 rtc.conf를 작성합니다.

~/RTCWork/rtc.conf로 새롭게 작성해 주십시오.

 $ cd ~/RTCwork
 $ vi rtc.conf

작성하는 파일의 내용은 이하와 같이 됩니다.

 corba.nameservers: localhost
 naming.formats: %h.host_cxt/%n.rtc
 logger.enable: NO
 example.ConsoleOut.config_file: consout.conf
 example.ConsoleIn.config_file: consin.conf
rtc.conf

시스템으로 IPv6가 설정되어 있는 경우,localhost라고 하는 호스트명이 정상적으로 기능하지 않는 경우가 있습니다. 그 경우는 localhost 대신에 127.0.0.1로 수정해 주십시오.

ConsoleIn 컴퍼넌트의 기동

터미널을 기동하고 다음과 같이 앞에서 작성한 rtc.conf를 참조시키는 형태로 ConsoleIn.py를 기동합니다.

 $ python /usr/share/OpenRTM-aist/examples/python/SimpleIO/ConsoleIn.py -f ~/RTCwork/rtc.conf 
 comp_args: ConsoleIn
 

스스로 빌드·인스톨 했을 경우는,

 $ python <source_dir>/OpenRTM_aist/examples/SimpleIO/ConsoleIn.py -f ~/RTCwork/rtc.conf

으로 ConsoleIn 컴퍼넌트를 기동합니다.

ConsoleOut 컴퍼넌트의 기동

터미널을 기동하고 방금전 작성한 rtc.conf를 참조하는 형태로 ConsoleOut.py를 기동합니다.

 $ python /usr/share/OpenRTM-aist/examps/python/SimpleIO/ConsoleOut.py -f ~/RTCwork/rtc.conf
 comp_args: ConsoleOut

스스로 빌드·인스톨 했을 경우도

 $ python <source_dir>/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py -f ~/RTCwork/rtc.conf

으로 ConsoleOut 컴퍼넌트를 기동합니다.

RTSystemEditor 의 기동

RTSystemEditor를 사용해 RT컴퍼넌트의 접속과 액티브를 실시합니다. 여기 에서 Eclipse 패키지를 다운로드해 압축을 해제해 주십시오.

RTSystemEditor는 Java Development Kit6를 사용합니다. 이하의 메뉴얼을 참고해 인스톨해 주십시오. 또, Ubuntu 등에서는 디폴트의 Java 환경은 OpenJDK 가 추천 되고 있습니다. 그러한 경우, OpenJDK에서도 이용하는 것이 가능합니다.

여기 의 페이지를 참고해 RTSystemEditor를 기동해 주십시오.

네임서버의 참조와 확인

네임서버에 접속해 등록 내용을 확인합니다. 네임서버에의 접속은, 좌측의 Name Service View의 콘센트형 아이콘의 버튼을 클릭해, 다이얼로그에

 localhost
 또는
 localhost:2809

라고 입력합니다.(omniNames의 디폴트의 포트 번호는 2809입니다.)

c_unix100_NameServer.png
네임서버에의 접속

네임서버에 등록된 RT컴포넌트를 시스템 에디터에 배치합니다. 왼쪽의 Name Service View 의 ConsoleOut0 및 ConsoleIn0를 중앙의 에디터 위에 드래그 앤드 드롭 합니다. 다음 컴포넌트의 우/좌단의 포트 아이콘을 다른 한쪽으로부터 반대쪽으로 드래그 앤드 드롭 하면 접속 다이얼로그가 표시됩니다. 모두 디폴트로 설정해도 좋습니다. 그리고 OK를 누르면, 접속이 완료됩니다.

c_unix100_oneditor.png
RTSystemEditor에 의한 시스템의 편집

메뉴아래의 녹색의 「재생」버튼을 누르면, 에디터상의 모든 컴포넌트가 액티브 됩니다.

수치 입력과 출력의 확인

ConsoleInComp 와 ConsoleOutComp 의 포트를 접속하면,

 Please input number: 

위와 같은 prompt가 나타나므로, 거기에 숫자를 입력합니다. 입력하는 숫자는, short int 에 들어가는 범위의 수치를 입력해 주십시오.

ConsoleInComp측의 터미널에 숫자를 넣으면 ConsoleOutComp측의 터미널에 입력한 수치가 나타납니다. 이상으로, OpenRTM-aist-Python이 정상적으로 인스톨되어 있는 지를 확인할 수 있었습니다.

동작확인 (Windows)

샘플 컴포넌트의 장소

인스톨 또는 빌드가 정상적으로 종료 되었다면 부속의 샘플로 동작 테스트를 실시합니다. 샘플은 통상 이하의 장소에 있습니다.

  • 시작 메뉴: [시작]>>[OpenRTM-aist]>>[Python]>>[components]>>[examples]
  • C:\Program Files\OpenRTM-aist\1.0\examples\Python
  • OpenRTM_aist/examples (소스로부터 빌드 했을 경우)

샘플 컴포넌트 세트 SimpleIO를 사용하고, OpenRTM-aist 가 정상적으로 빌드·인스톨 되고 있는지를 확인합니다.

샘플 (SimpleIO)을 사용한 테스트

RT컴포넌트 ConsoleIn, ConsoleOut 로 구성되는 샘플 세트 입니다. ConsoleIn는 콘솔로부터 입력된 수치를 OutPort로부터 출력하는 컴포넌트, ConsoleOut 는 InPort에 입력된 수치를 콘솔에 표시 하는 컴포넌트입니다. 이것들은 가장 Simple하게 I/O를 예로 보여주는 샘플입니다. ConsoleInComp의 OutPort로부터 ConsoleOutComp의 InPort에 접속해 2개의 컴포넌트를 액티브 (Activate) 하는 것으로 동작합니다.

이하는 msi 인스톨러로 OpenRTM-aist-Python을 인스톨 한 환경에서, 시작 메뉴로부터 각종 프로그램을 기동하는 것을 전제로 설명합니다. 시작 메뉴 로부터 OpenRTM-aist를 마우스 오른쪽 버튼을 클릭해 「열기」로 폴더를 열어, 각 프로그램에 액세스 하면 편리합니다.

win_start_menu_open2_ko.png
시작 메뉴의 OpenRTM-aist를 열기

네임서버의 기동

우선, 컴포넌트의 참조를 등록하기 위한 네임서버를 기동합니다. 「OpenRTM-aist」>>「Python」>>「tools」>>「Start Naming Service」에 있는 바로가기 를 클릭해 네임서버를 기동합니다.

win_start_menu_open_tool2_ko.png
네임서버에의 바로가기

기동하면, 이하와 같은 콘솔 화면이 열립니다.

win_naming_service2_ko.png
네임서버의 기동

콘솔 화면이 열리지 않는다

네임서버의 콘솔 화면이 열리지 않는 케이스가 있습니다. 이 경우 예상되는 몇개의 원인을 아래와 같이 대처해 주십시오.

omniORBpy가 인스톨 되어 있지 않다.

openrtm.org가 제공하는 msi 인스톨러에는 omniORB가 포함되어 있습니다만, 언인스톨 을 선택하면, omniORB를 인스톨 하지 않고 OpenRTM-aist-Python을 인스톨 할 수도 있습니다.

또, 수동으로 인스톨 했을 경우에는 omniORB가 들어가 있지 않은 경우도 있기 때문에 omniORB가 인스톨 되어 있는지 확인해 주십시오.

그 외

호스트명이나 주소의 설정의 문제로, 기동이 잘 되지 않는 케이스가 있습니다. 그 경우 이용하고 있는 PC의 IP주소를 omniNames.exe에 가르쳐 주면 잘 되는 경우가 있습니다. 환경 변수 OMNIORB_USEHOSTNAME 를 이하와 같이 설정합니다 (이하는 자신의 호스트의 IP주소가 192.168.0.11인 경우의 예).

 변수명(N): OMNIORB_USEHOSTNAME
 변수치(V): 192.168.0.11

샘플 컴포넌트의 기동

네임서버 기동 후, 적당한 샘플 컴포넌트를 기동합니다. 방금전 열어 둔 시작 메뉴 폴더의 「OpenRTM-aist」>>「Python」>> 「components」>>「examples」를 열면, 그림과 같이 몇개의 컴포넌트가 있습니다.

win_start_menu_comps2_ko.png
샘플 컴포넌트 폴더

여기에서는, 「ConsoleIn.py」 「ConsoleOut.py」를 각각 더블 클릭 해 2개의 컴포넌트를 기동합니다. 기동하면, 아래 그림과 같은 2개 의 콘솔 화면이 열립니다.

win_consoleinout_window2_ko.png
ConsoleIn 컴포넌트와 ConsoleOut 컴포넌트

컴포넌트가 기동하지 않는 경우

컴포넌트가 기동하지 않는 경우, 몇개의 원인을 생각할 수 있습니다.

콘솔 화면이 열리자마자 사라진다

rtc.conf 의 설정에 문제가 있어, 기동할 수 없는 케이스가 있습니다. 샘플 컴포넌트의 인스톨 폴더(인스톨시에 아무것도 지정하지 않았던 경우 C:\Program Files\OpenRTM-aist\1.0\examples\Python\SimpleIO) 의 「rtc.conf」를 열어 설정을 확인해 주십시오. 예를 들면 corba.endpoint/corba.endpoints 등의 설정이 현재 실행중의 PC의 호스트 주소와 미스매치를 일으키고 있는 경우 등은 CORBA가 이상 종료합니다.

이하와 같은 최저한의 rtc.conf로 설정 다시 하고 시험해 보십시오.

 corba.nameservers: localhost

RTSystemEditor(RTSE)의 기동

시작 메뉴 폴더로부터, RTSystemEditor를 기동합니다. RTSystemEditor는 「OpenRTM-aist」>>「Python」>>「tools」>>「RT SystemEditor」에 있습니다.

rtse_start_ko.png
RTSystemEditor의 기동

네임서버에의 접속

RTSE가 기동하면 우선 네임서버에 접속합니다. 왼쪽 페인의 상부에 있는, rtse_connect_ns_icon.png의 아이콘을 클릭해 접속 다이얼로그를 엽니다. 접속 다이얼로그의 호스트명의 부분에 방금전 기동한 네임서버의 주소(이 경우 동일 호스트이므로 localhost)를 지정합니다. 포트 번호도 지정할 수 있습니다만, 통상 디폴트의 2809번을 사용하는 경우는 아무것도 지정 하지 않습니다.

rtse_connect_dialog_ko.png
네임서버에의 접속 다이얼로그

접속하면, 네임서비스뷰에 localhost가 나타납니다. 트리 표시의 [+]를 클릭하면, 방금전 기동한 2개의 컴포넌트가 등록되어 있는 것을 알 수 있습니다.

rtse_ns_connected_ko.png
네임서버에 등록된 컴포넌트

에디터에의 배치

시스템을 편집하는 에디터를 엽니다. 상부의 에디터를 여는 버튼 rtse_open_editor_icon_ja.png 을 클릭하면, 윈도우의 중앙에 에디터가 열립니다.

좌측의 네임서비스뷰에 rtse_rtc_icon.png 의 아이콘으로 표시 되고 있는 컴포넌트(2개)를 중앙의 에디터에 드래그 앤드 드롭 합니다.

rtse_dnd_rtcs_ko.png
컴포넌트를 에디터에 배치

접속과 액티브화

ConsoleIn0 컴포넌트의 우측에는 데이터가 출력되는 OutPort rtse_outport_icon.png , ConsoleOut0 컴포넌트의 좌측에는 데이터 가 입력되는 InPort rtse_inport_icon.png 가 각각 붙어있습니다.

이것들 InPort/OutPort(데이터 포트라고 부른다)를 접속합니다. OutPort로부터 InPort(또는 InPort로부터 OutPort)에 드래그 앤 드롭 하면, 그림과 같은 다이얼로그가 나타고 디폴트 설정인 채 OK 버튼을 누릅니다.

rtse_portconnect_ko.png
데이터 포트의 접속

rtse_portconnect_dialog_ko.png
데이터 포트 접속 다이얼로그

2개의 컴포넌트의 사이에 접속선이 나타납니다. 다음에, 에디터 상부 메뉴의 All Activate 버튼 rtse_all_actevate_icon.png 를 클릭해, 컴포넌트를 액티브합니다. 액티브 되면, 컴포넌트가 녹색으로 변화합니다.

rtse_actevated_all_ko.png
액티브 된 컴포넌트

컴포넌트액티브화 되면 ConsoleIn 컴포넌트측에서는

 Please input number: 

라는 prompt 표시로 바뀌기 때문에, 적당한 수치 (short int 의 범위내: 32767 이하)를 입력해 Enter 키를 누릅니다. ConsoleOut 측에서는, 입력한 수치가 표시되어 ConsoleIn 컴포넌트로부터 ConsoleOut 컴포넌트에 데이터가 전송 된 것을 알 수 있습니다.

이상으로, 컴포넌트의 기본 동작의 확인은 종료입니다.

다른 샘플

인스톨러에는, 이 밖에도 몇개의 샘플 컴포넌트가 부속되어 있습니다. 이러한 컴포넌트도 이와 같이 기동해, RTSystemEditor로 포트끼리를 접속해, 액티브하는 것으로 테스트 할 수 있습니다.

부속되어 있는 컴포넌트의 리스트와 간단한 설명을 이하에 나타냅니다.

ConsoleIn.py 콘솔로부터 입력된 수치를 OutPort로부터 출력한다. ConsoleOut.py와 연결해 사용
ConsoleOut.py InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트. ConsoleIn.py와 연결해 사용
SeqIn.py 랜덤인 수치(Short,Long,Float,Double와 그 순서형)을 출력하는 컴포넌트. SeqOut.py와 연결해 사용
SeqOut.py InPort에 입력되는 수치(Short,Long,Float,Double와 그 순서형)을 표시. SeqIn.py와 연결해 사용
MyServiceProvider.py MyService형의 서비스를 제공하는 컴포넌트. MyServiceConsumer.py와 연결해 사용
MyServiceConsumer.py MyService형의 서비스를 제공하는 컴포넌트. MyServiceProvider.py와 연결해 사용
ConfigSample.py Configuration의 샘플. RTSystemEditor에서 Configuration를 변경해 Configuration의 변경에 대해 이해하기 위한 샘플.
TkMobileRobotSimulator.py 모바일 로봇의 간이 시뮬레이터. 로봇의 속도를 InPort로 받아 이동 후의 위치를 OutPort로부터 출력한다.
NXTRTC.py LEGO LEGO MINDSTORM에서 작성한 모바일 로봇을 제어하기 위한 샘플. InPort에서 속도를 받아 적외선 센서와 현재 위치를 각각 OutPort로부터 출력한다.
AutoControl.py 모바일 로봇용의 속도를 출력한다. 측위 센서의 데이터를 InPort로 받아 로봇의 속도를 계산해 OutPort로부터 출력한다.
Composite.py Composite용의 샘플. Motor,Controller, Sensor를 포함 하는 컴포넌트. Composite의 사용 방법을 이해하기 위한 샘플.
Motor.py Composite 컴포넌트용의 샘플. Composite의 자(子)요소로서 사용.
Controller.py Composite 컴포넌트용의 샘플. Composite의 자(子)요소로서 사용.
Sensor.py Composite 컴포넌트용의 샘플. Composite의 자(子)요소로서 사용.
Slider.py Tk를 이용한 GUI 컴포넌트의 샘플. Slider로 지정한 값을 OutPort로부터 출력한다.
TkMotorComp.py Tk를 이용한 GUI 컴포넌트의 샘플. InPort로 받은 값을 GUI로 표시한다.
TkLRFViewer.py Tk를 이용한 GUI 컴포넌트의 샘플. 레이저 레인지 센서 등에서 출력되는 데이터를 표시한다.
TkJoystickComp.py Tk를 이용한 GUI 컴포넌트의 샘플. 간이 조이스틱 컴포넌트.