C++언어버전의 OpenRTM-aist는 패키지나 인스톨러가 준비되어 있어, 다양한OS나 배포 파일로 손쉽게 인스톨 하는것이 가능합니다. 또한 소스를 다운로드 하여 자신의 환경에 맞춰 빌드하는것도 가능합니다. 여기에서는 C++ 언어버전의 OpenRTM-aist 인스톨 각각의 방법에 대해서 설명합니다
C++판 OpenRTM-aist는 Ubuntu나 Debian GNU Linux로 이용 가능한 deb 패키지가 제공되고 있습니다. 대응하고 있는 배포 버젼은 다운로드 페이지로부터 확인할 수 있습니다. Ubuntu/Debian GNU Linux에의 대응 및 버젼은, 예고없이 변경 또는 정지되는 일이 있으므로 양해 바랍니다.
인스톨의 방법에는 크게 나누어 이하의 2종류의 인스톨 방법이 있습니다.
원하시는 방법으로 인스톨 해 주십시오.
openrtm.org 가 제공하는 인스톨·스크립트 pkg_install[버전 번호]_ubuntu.sh 또는 pkg_install[버전 번호]_debian.sh를 다운로드 페이지로부터 다운로드하여 root 권한으로 실행합니다. 이 스크립트는 필요한 패키지를 차례차례 apt-get로 인스톨 해 갈 것입니다.
OpenRTM-aist를 개발·실행하기 위해서 필요한 패키지를 빠짐없이 인스톨 하기에 편리합니다. 처음으로 OpenRTM-aist를 인스톨 하시는 분에게 추천합니다.
다만, OpenRTM-aist와 관계된 모든 패키지를 인스톨 하므로, 필요 없는 것도 인스톨 될 가능성이 있습니다. 관계자나 잘 알고 계시는 분은 수동으로 인스톨도 무관합니다
이하 일괄 인스톨 스크립트를 사용한 인스톨의 순서입니다.
> wget [pkg_installXXX.sh 의 다운로드 URL] > su # sh pkg_installXXX_ubuntu.sh //도중 몇개의 질문이 있으므로,''y''혹은 ''Y''를 입력하면서 완료시킨다.
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 |
다음의 순서로 인스톨을 실시합니다. 도중 몇개의 질문이 있으므로, y를 입력하면서 완료시켜 주십시오.
# apt-get update # apt-get install gcc g++ make uuid-dev # apt-get install libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver # apt-get install python-support (Debian 3.1 Sarge에서만 필요) # apt-get install openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example
또한 인스톨 끝난 OpenRTM-aist를 특정 버전인 상태로 보관 유지하고 싶은 장소에 /etc/apt/preferences를 편집해 이하의 행을 추가합니다. (이 예제에서는 1.0 계열에 버전으로 고정합니다.)
Package: OpenRTM-aist 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/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend |/ Err?=(none) /Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii openrtm-aist 1.0.0-0 OpenRTM-aist runtime libraries and configura ii openrtm-aist-d 1.0.0-0 Header files for OpenRTM-aist development pn openrtm-aist-d <none> (no description available) ii openrtm-aist-e 1.0.0-0 OpenRTM-aist examples
각 패키지의 내용은 이하와 같습니다.
openrtm-aist 에는 런 타임 라이브러리와 커멘드군이 포함되어 있습니다.
/usr/bin/rtcd /usr/bin/rtm-naming
/usr/share/doc/openrtm-aist/changelog.gz /usr/share/doc/openrtm-aist/README.Debian /usr/share/doc/openrtm-aist/README /usr/share/doc/openrtm-aist/README.jp /usr/share/doc/openrtm-aist/NEWS.gz /usr/share/doc/openrtm-aist/copyright /usr/share/doc/openrtm-aist/changelog.Debian.gz
/usr/etc/rtc.conf.sample
/usr/lib/libRTC-X.X.X.so.X.X.X /usr/lib/libRTC.a /usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libRTC-X.X.X.so.X
openrtm-aist-dev에는 개발에 필요한 커멘드군과 헤더가 포함되어 있습니다.
/usr/bin/rtc-template /usr/bin/rtm-config /usr/bin/rtm-skelwrapper
/usr/share/doc/openrtm-aist-dev/changelog.gz /usr/share/doc/openrtm-aist-dev/copyright /usr/share/doc/openrtm-aist-dev/changelog.Debian.gz
/usr/include/rtm/DefaultPeriodicTask.h /usr/include/rtm/OutPortPullConnector.h 중략 /usr/include/rtm/ExecutionContextBase.h /usr/include/rtm/Manager.h /usr/include/coil/OS.h /usr/include/coil/UUID.h 중략 /usr/include/coil/Properties.h
/usr/lib/OpenRTM-aist/py_helper/cxx_svc_impl.py /usr/lib/OpenRTM-aist/py_helper/profile_gen.py 중략 /usr/lib/OpenRTM-aist/py_helper/gen_base.py /usr/lib/OpenRTM-aist/py_helper/yat.py /usr/lib/pkgconfig/libcoil.pc /usr/lib/pkgconfig/libRTM.pc
openrtm-aist-example에는 스탠드 얼론 RTC, loadable RTC 각각의 샘플과 샘플 RTC의 소스가 포함되어 있습니다.
/usr/share/OpenRTM-aist/examples/ConsoleOutComp /usr/share/OpenRTM-aist/examples/ConsoleInComp 중략
/usr/share/OpenRTM-aist/examples/src/Composite/README.Motor /usr/share/OpenRTM-aist/examples/src/Composite/Makefile.Sensor /usr/share/OpenRTM-aist/examples/src/Composite/Motor.cpp 중략 /usr/share/OpenRTM-aist/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/OpenRTM-aist/examples/src/SimpleService/rtc.conf
/usr/share/OpenRTM-aist/examples/rtcs/MyServiceConsumer.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/SeqIn.so.0.0.0 중략 /usr/share/OpenRTM-aist/examples/rtcs/ConfigSample.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/ConsoleOut.so.0.0.0
/usr/share/doc/openrtm-aist-example/changelog.gz /usr/share/doc/openrtm-aist-example/copyright /usr/share/doc/openrtm-aist-example/changelog.Debian.gz
openrtm-aist-doc에는 일본어와 영어의 클래스 레퍼런스, IDL 인터페이스 정의 레퍼런스가 포함되어 있습니다.
/usr/share/OpenRTM-aist/docs/ClassReference/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference/html/RTC_8h.html 중략 /usr/share/OpenRTM-aist/docs/ClassReference/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference/html/BasicDataType_8idl-source.html 중략 /usr/share/OpenRTM-aist/docs/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/OpenRTM-aist/docs/ClassReference-en/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference-en/html/RTC_8h.html 중략 /usr/share/OpenRTM-aist/docs/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference-en/html/BasicDataType_8idl-source.html /usr/share/OpenRTM-aist/docs/IDLReference-en/html/structRTC_1_1FsmProfile.html 중략 /usr/share/OpenRTM-aist/docs/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/doc/openrtm-aist-doc/changelog.gz /usr/share/doc/openrtm-aist-doc/copyright /usr/share/doc/openrtm-aist-doc/changelog.Debian.gz
C++버전 OpenRTM-aist는 Fedora Linux로 이용 가능한 RPM 패키지가 제공되고 있습니다. 대응하고 있는 Fedora Linux의 버전은 다운로드 페이지로부터 확인 할 수 있습니다. Fedora Linux에의 대응 및 그 버전은 예고없이 변경 또는 정지되는 일이 있습니다. 양해 바랍니다.
Fedora Linux에의 인스톨의 방법에는 크게 나누어 이하의 2종류의 인스톨 방법이 있습니다.openrtm.org 가 제공하는 인스톨·스크립트 pkg_install[버전번호]_ fedora.sh를 다운로드 페이지로부터 다운로드하여, root 권한으로 실행합니다. 이 스크립트는 필요한 패키지를 차례차례 yum로 인스톨 합니다.
OpenRTM-aist를 개발·실행하기 위해서 필요한 패키지를 빠짐없이 인스톨하기 때문에 편리합니다. 처음으로 OpenRTM-aist를 인스톨 하시는 분에게 추천합니다. 다만, OpenRTM-aist에 관련된 모든 패키지를 인스톨 하므로, 필 요 없는 것도 인스톨 될 가능성이 있습니다. 자세하게 알고계신 분께서는 수동으로 인스톨 하셔도 좋습니다. 이하, 일괄 인스톨 스크립트를 사용한 인스톨의 순서입니다.
> wget [pkg_installXXX.sh 의 다운로드 URL] > su # sh pkg_install1XX_fedora.sh //도중 , 몇개의 질문을 물어보므로,''y''혹은 ''Y''를 입력하면서 완료시킵니다.
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
openrtm.repo 를 작성하면, 다음의 순서로 인스톨을 실시합니다. 도중, 몇개의 질문에 y를 입력하면서 완료시킵니다.
> su # yum install gcc-c++ python # yum install omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts # yum install OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example
마지막에 이하의 커멘드로 인스톨의 확인을 합니다.
# rpm -q OpenRTM-aist OpenRTM-aist-1.0.0-0.fcX
각 패키지의 내용은 이하와 같습니다
openrtm-aist 에는 런 타임 라이브러리와 커멘드군이 포함되어 있습니다.
/etc/rtc.conf.sample
/usr/lib/libRTC-1.0.0.so.0 /usr/lib/libRTC-1.0.0.so.0.0.4 /usr/lib/libRTC.a /usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libcoil.a /usr/lib/libcoil.la /usr/lib/libcoil.so /usr/lib/libcoil.so.0 /usr/lib/libcoil.so.0.0.0
openrtm-aist-dev에는, 개발에 필요한 커멘드군과 헤더가 포함되어 있습니다.
/usr/bin/coil-config /usr/bin/rtc-template /usr/bin/rtcd /usr/bin/rtcprof /usr/bin/rtm-config /usr/bin/rtm-naming /usr/bin/rtm-skelwrapper
/usr/include/coil/Allocator.h /usr/include/coil/Async.h 중략 /usr/include/coil/memory.h /usr/include/coil/stringutil.h 중략 /usr/include/rtm/BufferBase.h /usr/include/rtm/BufferStatus.h 중략 /usr/include/rtm/Typename.h /usr/include/rtm/config_rtc.h
/usr/include/rtm/idl/BasicDataType.hh /usr/include/rtm/idl/BasicDataType.idl 중략 /usr/include/rtm/idl/device_interfaces/RFID.idl /usr/include/rtm/idl/device_interfaces/Ranger.idl
/usr/lib/OpenRTM-aist/py_helper/README_gen.py /usr/lib/OpenRTM-aist/py_helper/README_gen.pyc 중략 /usr/lib/OpenRTM-aist/py_helper/yat.pyc /usr/lib/OpenRTM-aist/py_helper/yat.pyo /usr/lib/pkgconfig/libcoil.pc /usr/lib/pkgconfig/openrtm-aist.pc
openrtm-aist-doc에는 일본어와 영어의 클래스 레퍼런스, IDL 인터페이스 정의 레퍼런스가 포함되어 있습니다.
/usr/share/OpenRTM-aist/docs/ClassReference/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference/html/RTC_8h.html 중략 /usr/share/OpenRTM-aist/docs/ClassReference/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference/html/BasicDataType_8idl-source.html 중략 /usr/share/OpenRTM-aist/docs/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/OpenRTM-aist/docs/ClassReference-en/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference-en/html/RTC_8h.html 중략 /usr/share/OpenRTM-aist/docs/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference-en/html/BasicDataType_8idl-source.html /usr/share/OpenRTM-aist/docs/IDLReference-en/html/structRTC_1_1FsmProfile.html 중략 /usr/share/OpenRTM-aist/docs/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
openrtm-aist-example에는 스탠드 얼론 RTC, loadable RTC 각각의 샘플과 샘플 RTC의 소스가 포함되어 있습니다.
/usr/share/OpenRTM-aist/examples/ConsoleOutComp /usr/share/OpenRTM-aist/examples/ConsoleInComp 중략
/usr/share/OpenRTM-aist/examples/src/Composite/README.Motor /usr/share/OpenRTM-aist/examples/src/Composite/Makefile.Sensor /usr/share/OpenRTM-aist/examples/src/Composite/Motor.cpp 중략 /usr/share/OpenRTM-aist/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/OpenRTM-aist/examples/src/SimpleService/rtc.conf
/usr/share/OpenRTM-aist/examples/rtcs/MyServiceConsumer.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/SeqIn.so.0.0.0 중략 /usr/share/OpenRTM-aist/examples/rtcs/ConfigSample.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/ConsoleOut.so.0.0.0
C++판 OpenRTM-aist는 Vine Linux로 이용 가능한 RPM 패키지가 제공되고 있습니다. 대응하고 있는 Vine Linux의 버전은 다운로드 페이지로부터 확인 할 수 있습니다. Vine Linux에의 대응 및 그 버전은 예고없이 변경 또는 정지되는 일이 있습니다, 양해 바랍니다.
Vine Linux에의 인스톨의 방법에는 크게 나누어 이하의 2종류의 인스톨 방법이 있습니다.
openrtm.org 가 제공하는 인스톨·스크립트 pkg_install[버전 번호]_vine.sh를 다운로드 페이지로부터 다운로드 해, root 권한으로 실행 합니다. 이 스크립트는 필요한 패키지를 차례차례 apt-get로 인스톨 해 갑니다.
OpenRTM-aist를 개발·실행하기 위해서 필요한 패키지를 빠짐없이 인스톨 해주므로 편리합니다. 처음으로 OpenRTM-aist를 인스톨 하시는 분에게 추천합니다. 다만, OpenRTM-aist에 관계된 모든 패키지를 인스톨 하므로 필 요 없는 것도 인스톨 될 가능성이 있습니다. 자세하게 알고계신 분은 수동으로 인스톨 하셔도 관계없습니다. 이하, 일괄 인스톨 스크립트를 사용한 인스톨의 순서입니다.
> wget [pkg_installXXX.sh 의 다운로드 URL] > su # sh pkg_install1XX_vine.sh //도중, 몇개의 질문을 물어보므로,''y''혹은 ''Y''를 입력하면서 완료시킨다.
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.x를 5.0로 바꿔놓습니다.
rpm http://www.openrtm.org/pub/Linux/Vine/apt 5.0/$(ARCH) main
sources.list 를 수정하여, 다음의 순서로 인스톨합니다.
> su # apt-get update # apt-get install gcc-c++ python # apt-get install omniORB omniORB-devel omniORB-servers omniORB-doc # apt-get install e2fsprogs e2fsprogs-devel # apt-get install OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example
도중, 몇개의 질문에 y혹은 Y를 입력해 완료 시킵니다. apt-get은 현재는 synaptic 커멘드로 바꾸는 것을 추천하고 있습니다.
인스톨의 확인을 이하와 같이 해 실시합니다.
# rpm -q OpenRTM-aist OpenRTM-aist-1.0.0-0.vl50
openrtm-aist 에는 런타임 라이브러리와 커멘드군이 포함되어 있습니다.
/etc/rtc.conf.sample
/usr/lib/libRTC-1.0.0.so.0 /usr/lib/libRTC-1.0.0.so.0.0.4 /usr/lib/libRTC.a /usr/lib/libRTC.la /usr/lib/libRTC.so /usr/lib/libcoil.a /usr/lib/libcoil.la /usr/lib/libcoil.so /usr/lib/libcoil.so.0 /usr/lib/libcoil.so.0.0.0
openrtm-aist-dev에는, 개발에 필요한 커멘드군과 헤더가 포함되어 있습니다.
/usr/bin/coil-config /usr/bin/rtc-template /usr/bin/rtcd /usr/bin/rtcprof /usr/bin/rtm-config /usr/bin/rtm-naming /usr/bin/rtm-skelwrapper
/usr/include/coil/Allocator.h /usr/include/coil/Async.h 중략 /usr/include/coil/memory.h /usr/include/coil/stringutil.h 중략 /usr/include/rtm/BufferBase.h /usr/include/rtm/BufferStatus.h 중략 /usr/include/rtm/Typename.h /usr/include/rtm/config_rtc.h
/usr/include/rtm/idl/BasicDataType.hh /usr/include/rtm/idl/BasicDataType.idl 중략 /usr/include/rtm/idl/device_interfaces/RFID.idl /usr/include/rtm/idl/device_interfaces/Ranger.idl
/usr/lib/OpenRTM-aist/py_helper/README_gen.py /usr/lib/OpenRTM-aist/py_helper/README_gen.pyc 중략 /usr/lib/OpenRTM-aist/py_helper/yat.pyc /usr/lib/OpenRTM-aist/py_helper/yat.pyo /usr/lib/pkgconfig/libcoil.pc /usr/lib/pkgconfig/openrtm-aist.pc
openrtm-aist-doc에는 일본어와 영어의 클래스 레퍼런스, IDL 인터페이스 정의 레퍼런스가 포함되어 있습니다.
/usr/share/OpenRTM-aist/docs/ClassReference/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference/html/RTC_8h.html 중략 /usr/share/OpenRTM-aist/docs/ClassReference/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference/html/BasicDataType_8idl-source.html 중략 /usr/share/OpenRTM-aist/docs/IDLReference/html/interfaceOpenRTM_1_1InPortCdr-members.html
/usr/share/OpenRTM-aist/docs/ClassReference-en/html/ConnectorBase_8h-source.html /usr/share/OpenRTM-aist/docs/ClassReference-en/html/RTC_8h.html 중략 /usr/share/OpenRTM-aist/docs/ClassReference-en/html/FactoryInit_8h-source.html
/usr/share/OpenRTM-aist/docs/IDLReference-en/html/BasicDataType_8idl-source.html /usr/share/OpenRTM-aist/docs/IDLReference-en/html/structRTC_1_1FsmProfile.html 중략 /usr/share/OpenRTM-aist/docs/IDLReference-en/html/interfaceOpenRTM_1_1InPortCdr-members.html
openrtm-aist-example에는 스탠드얼론 RTC, loadable RTC 각각의 샘플과 샘플 RTC의 소스가 포함되어 있습니다.
/usr/share/OpenRTM-aist/examples/ConsoleOutComp /usr/share/OpenRTM-aist/examples/ConsoleInComp 중략
/usr/share/OpenRTM-aist/examples/src/Composite/README.Motor /usr/share/OpenRTM-aist/examples/src/Composite/Makefile.Sensor /usr/share/OpenRTM-aist/examples/src/Composite/Motor.cpp 중략 /usr/share/OpenRTM-aist/examples/src/SimpleService/Makefile.MyServiceProvider /usr/share/OpenRTM-aist/examples/src/SimpleService/rtc.conf
/usr/share/OpenRTM-aist/examples/rtcs/MyServiceConsumer.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/SeqIn.so.0.0.0 중략 /usr/share/OpenRTM-aist/examples/rtcs/ConfigSample.so.0.0.0 /usr/share/OpenRTM-aist/examples/rtcs/ConsoleOut.so.0.0.0
openrtm.org에서는 Windows용의 msi(Microsoft Windows installer) 패키지를 제공하고 있습니다. msi 패키지를 이용하는 것으로 의존 라이브러리인 omniORB나, RTSystemEditor라고 하는 툴도 동시에 인스톨 할 수 있습니다.
openrtm.org의 다운로드 사이트로부터, msi패키지를 다운로드합니다. msi 패키지에는, 필요한 모든 라이브러리등이 포함되어 있으므로 별도 라이브러리를 인스톨 할 필요는 없습니다. 다만, 컴포넌트의 개발을 실시하는 경우는 이하의 것도 추가로 인스톨 할 필요가 있습니다.
또, 구 버전의 OpenRTM-aist나 omniORB등의 의존 패키지가 인스톨 되고 있는 경우는, 미리 언인스톨하는 것을 추천합니다.
openrtm.org에서 msi를 다운로드해 실행하면, 이하와 같은 다이얼로그가 나타납니다.
위저드에 따라서, 인스톨을 진행시킵니다. 「다음」을 클릭하면 사용 허락 계약서의 화면이 되기 때문에, 「동의함」을 클릭해 다음으로 진행합니다.(디폴트에서는 EPL (Eclipse Public License)에 동의 한 것이 됩니다.)
셋업의 종류의 선택으로 진행됩니다. 이하의 3 종류의 인스톨 방법을 선택할 수 있습니다.
「사용자 지정」을 선택하면, 인스톨 하는 패키지를 한층 더 세세하게 선택할 수 있습니다.
셋업의 종류의 선택 후, 「다음」을 클릭하면 인스톨이 개시됩니다.
아래와 같은 화면이 나오면 인스톨은 완료입니다.「마침」을 클릭해 인스톨을 종료합니다.
인스톨러는 이하의 작업을 실시합니다.
파일은 이하와 같은 구조로 인스톨 됩니다.
<install_dir> + OpenRTM-aist | + <version> | + bin: dll, lib, 각종 커멘드 | + coil: coil 헤더 파일 | + doc: doxygen 문서 | + etc: vsprops, rtc.conf 샘플 | + examples | + CXX: C++ 샘플 컴포넌트 (.exe, .dll) | + rtm: OpenRTM-aist 헤더 파일 | + idl: OpenRTM-aist IDL 파일 | + util | + rtc-template: rtc-template 모듈 | + omniORB | + <version> | + bin: dll, 각종 커멘드 | + idl: IDL 파일 | + include: omniORB 헤더 파일 | + lib: 임포트 라이브러리, python 라이브러리 | + OpenRTP + RTSystemEditor: 스탠드 얼론판 RTSystemEditor
C++버전 OpenRTM-aist는 Mac OS X용의 패키지 관리 시스템 MacPorts로 이용 가능한 ports가 제공되고 있습니다. MacPorts의 대응 및 그 버전은, 예고없이 변경 또는 정지되는 일이 있습니다. 양해 바랍니다.
MacPorts는 Mac OS X상에서 이용 가능한 오픈 소스의 패키지 관리 시스템 입니다. MacPorts는 FreeBSD의 ports라고 하는 패키지 관리 시스템처럼 ports로 불리는 패키지를 빌드하기 위한 레시피에 근거해, 자동으로 소스의 다운로드, 패치의 적용, 컴파일, 인스톨까지를 행하여 주는 시스템입니다. Mac OS X용의 패키지 관리 시스템으로서는 그 밖에 Fink가 있습니다.
MacPorts를 이용하려면, Apple의 Xcode 및 X11 환경을 미리 인스톨 할 필요가 있습니다. Xcode 및 X11는 Mac OS X의 인스톨 CD로 인스톨 할 수도 있습니다. 자세한 것은 상기 MacPorts의 Web 페이지를 참조해 주십시오.
MacPorts 자체는 dmg 패키지 형식이 되어 있어 자신의 Mac의 OS의 버전 에 맞춘 dmg 패키지를 다운로드, 인스톨 하는 것으로 간단하게 인스톨 할 수 있습니다. dmg 패키지는 MacPorts의 Web 페이지, 또 는 아래와 같이 링크로부터 다운로드할 수 있습니다.
Portfile의 다운로드, 전개, 빌드를 일괄로 행하는 스크립트가 이하에 준비되어 있습니다.
적당한 디렉토리에서, 이하와 같이 스크립트를 실행합니다. 일반 유저로 실행을 해도 문제 없습니다. 하지만, 도중에 해당 유저의 패스워드를 묻는 일이 있습니다.
$ sh port_install100_mac.sh sh port_install.sh file:///Users/n-ando/ports/ Getting Portfile from: http://www.openrtm.org/pub/MacOSX/macports//ports.tgz --2010-07-27 23:21:06-- http://www.openrtm.org/pub/MacOSX/macports//ports.tgz Resolving www.openrtm.org (www.openrtm.org)... 182.48.18.55 Connecting to www.openrtm.org (www.openrtm.org)|182.48.18.55|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3600 (3.5K) [application/x-gzip] Saving to: `ports.tgz.1' 100%[================================================>] 3,600 --.-K/s in 0.002s 2010-07-27 23:21:06 (2.02 MB/s) - `ports.tgz' saved [3600/3600] x ports/ x ports/devel/ x ports/PortIndex x ports/PortIndex.quick x ports/devel/OpenRTM-aist/ x ports/devel/OpenRTM-aist/Portfile x ports/devel/OpenRTM-aist/files/ x ports/devel/OpenRTM-aist/Portfile~ x ports/devel/OpenRTM-aist/files/patch-src-lib-rtm-InPortConsumer.h x ports/devel/OpenRTM-aist/files/patch-src-lib-coil-posix-coil-UUID.cpp x ports/devel/OpenRTM-aist/files/patch-src-lib-coil-posix-coil-Routing.cpp x ports/devel/OpenRTM-aist/files/patch-examples-SimpleService-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-Composite-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-ConfigSample-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-SeqIO-Makefile.in x ports/devel/OpenRTM-aist/files/patch-examples-SimpleIO-Makefile.in x ports/devel/OpenRTM-aist/files/patch-src-lib-rtm-idl-Makefile.in Creating port index in /Users/n-ando/ports Adding port devel/OpenRTM-aist Total number of ports parsed: 1 Ports successfully parsed: 1 Ports failed: 0 Up-to-date ports skipped: 0 Adding local ports repository entry to sources.conf # A password may be required for sudo. Input your password. Password: Installing OpemRTM-aist...it may take several minutes. # A password may be required for sudo. Input your password. ---> Computing dependencies for OpenRTM-aist ---> Fetching OpenRTM-aist ---> Verifying checksum(s) for OpenRTM-aist ---> Extracting OpenRTM-aist ---> Applying patches to OpenRTM-aist ---> Configuring OpenRTM-aist ---> Building OpenRTM-aist ---> Staging OpenRTM-aist into destroot ---> Installing OpenRTM-aist @1.0.0_2 ---> Activating OpenRTM-aist @1.0.0_2 ---> Cleaning OpenRTM-aist Cleaning local ports repository entry in sources.conf # A password may be required for sudo. Input your password. Password: $
ports는 의존관계(dependencies)를 자동적으로 해결해, 빌드에 필요한 패키지가 들어있지 않은 경우에는 자동으로 그 패키지의 빌드도 실시하기 때문에, 다소 시간이 걸리는 경우가 있습니다.
자세한 것은 일괄 인스톨 셸 스크립트 port_installXXX_mac.sh 에 써 있습니다. 인스톨 순서는, 대체로 이하와 같이 되어 있습니다.
MacPorts에서는 port 커멘드로 인스톨 하도록 지정된 패키지를, 설정 파일 sources.conf에 기재되어 있는 특정의 장소 이하로부터 찾아내고, Porrtfile에 따라 소스를 다운로드해 빌드를 실시합니다.
OpenRTM-aist 본체를 수정한 후에 Windows상에서 사용하고 싶은 경우는 Windows용 소스 패키지를 스스로 빌드 할 수 있습니다. 여기에서는 다운로드 페이지나 리포지터리에서 소스를 취득해 Windows상에서 OpenRTM-aist를 빌드하는 방법을 설명합니다.
Windows상에서의 OpenRTM-aist의 빌드는, 환경의 정비나 인스톨러의 작성등, Windows상에서의 여러가지 지식이 필요가 됩니다. 본문서는, Windows상에서의 프로그램 개발이나 배치·파일 등의 기본적인 지식이 있는 분을 대상으로 하고 있습니다.
Windows 용의 OpenRTM-aist(C++버전) 소스 패키지는 Linux 용의 소스 와는 별도로 배포되고 있습니다. 소스 코드의 내용은 완전히 같습니다만, 이하의 부분에 차이가 있습니다.
그림에 나타나듯이 오리지날은 subversion 리포지터리(repository)의 소스 코드에서 그 소스 코드로부터 Linux상에서,
의 2종류를 작성하는 구성이 되어 있습니다.
리포지터리로부터 취득한 최신의 소스 코드를 Windows로 이용하는 경우는, 일단 Linux로 Windows용의 소스 코드를 생성할 필요가 있습니다.
빌드에 필요한 환경, 라이브러리는 이하와 같습니다.
Windows용의 바이너리를 빌드 하기 위해서는, Visual C++개발 환경이 필요합니다. 현재 대응하고 있는 Visual C++는 Visual C++ 2005 또는 2008만입니다. Visual C++ 2010은 프로젝트 변환 위저드로 빌드 할 수 있을 가능성 이 있습니다만, 의존 라이브러리인 omniORB도 자동 빌드 할 필요가 있기 때문에 시간이 걸립니다.
Visual C++ Express Edition는 Microsoft가 무료로 제공하는 C++의 개발 환경으로 MFC나 ATL 등은 사용할 수 없습니다만, Windows 어플리케이션(Win32 아플리케이션)- 을 개발할 수 있습니다. OpenRTM-aist를 이용한 컴퍼넌트 개발 에서도 MFC나 ATL등을 이용하지 않는 컴퍼넌트는 Visual C++ Express Edition 만으로 개발할 수 있습니다. 아래의 링크로부터 ISO 이미지를 다운 로드해 인스톨 한 다음, Microsoft Live ID를 취득해 라이센스 (무료)를 취득해 주세요.
OpenRTM-aist 의 빌드에는 omniORB 의 라이 방어가 필요합니다. omniORB 은 이하의 링크로, source code 및 바이너리를 다운로드할 수 있습니다. 바이너리 패키지를 아래 링크로 다운로드하고, 적당한 장소 (이하에서는 C:distributionomniORB를 가정)에 전개해 주십시오.
인스톨러는 이하의 작업을 실시합니다.
또한, 환경 변수의 어플리케이션에의 통지는 되지 않으므로 환경 변수의 갱 신을 유효하게 하려면 재기동해 주십시오. 또는, 「내 컴퓨터」→ 「속성」→「고급 시스템 설정」→「고급」탭의「환경 변수」로부터 환경 변수의 아무 항목이나 선택해 「편집」을 클릭해 편집 다이얼로그를 표시시켜, 그대로 아무것도 변경하지 않고 OK를 누르는 것으로, 셸에 환경 변수의 변수가 통지되어 그 셸로부터 새롭게 실행한 어플리케이션에서는 변경된 환경 변수가 유효하게 되지만 잘 모르겠다면 재기동하는 편이 무난합니다.)
상기의 msi 인스톨러 이외 방법으로 인스톨 했을 경우는 환경 변수 OMNI_ROOT를 설정할 필요가 있습니다. OMNI_ROOT 로 설정한 디렉토 리 이하는 이하와 같은 구조가 되어 있어야 합니다.
<OMNI_ROOT> + bin | + scripts | + x86_win32 + idl | + COS + include | + COS | + omniORB4 | | + internal | + omnithread | + omniVms | + python1.5 + lib + python + omniidl + omniidl_be + cxx + dynskel + header + impl + skel
WiX Windows Installer XML)는 Windows의 msi 인스톨러를 커맨드라 인 베이스의 툴군으로 작성하는 것을 목표로 하고 있는 오픈 소스의 프로젝트입니다.
OpenRTM-aist는 Windows용의 인스톨러를 WiX를 이용해 작성합니다. 인스톨러까지 작성하는 경우에는, WiX를 미리 인스톨 해주십시오.
빌드 도중에 몇개의 Python 스크립트를 이용하므로 Python이 필요합니다. 아래의 사이트에서 최신의 것을 다운로드해 인스톨 해 주세요.
인스톨러를 기동하면, 위저드에서 몇가지 선택하는 부분이 있습니다만, 디폴트인 채로 인스톨 해주십시오.
Windows버전 OpenRTM-aist에서는 OpenCV를 이용한 샘플 컴퍼넌트가 포함되어 있기 때문에 OpenCV가 필요합니다. 현재로서는 OpenCV 1.0만 대응입니다.
여기에서 OpenCV의 인스톨러 OpenCV_1.0.exe를 다운로드합니다. OpenCV_1.0.exe를 실행하면 인스톨러가 기동하므로 지시에 따라서 인스톨합니다.
우선 소스 코드 OpenRTM-aist-X.X.X-win32.zip 를 다운로드해, 적당한 디렉토리에 압축을 해제합니다.
그대로는, RTSystemEditor의 RCP 패키지가 없기 때문에 인스톨러를 빌드 하는 도중에 에러가 발생합니다. 이하의 2종류의 방법중 하나를 선택해 주십시오.
installer/autowix.cmd 의 처음에 있는 RTSystemEditor 에 관한 부분을 이 아래와 같이 수정합니다.
@rem ------------------------------------------------------------ @rem Generate RTSystemEditor wxs file @rem @rem RTSystemEditorRCP.exe should be under %RTSE_ROOT% @rem @rem ------------------------------------------------------------ @rem if "x%RTSE_ROOT%" == "x" ( @rem echo Envrionment variable "RTSE_ROOT" is not set. Abort. @rem goto END @rem ) @rem if not exist "%RTSE_ROOT%\RTSystemEditorRCP.exe" ( @rem echo RTSystemEditorRCP.exe does not found. Abort @rem goto END @rem ) set INCLUDE_RTSE=NO set INCLUDE_OPENRTP=NO
openrtm.org에서 배포하고 있는 Windows용 인스톨러로 OpenRTM-aist를 인스톨 하면, 디폴트에서는 C:\Program Files\OpenRTP 이하에 RTSystemEditor의 RCP버전이 인스톨 됩니다. 또는, msi로부터 파일을 추출 툴등을 사용해 RTSystemEditor를 꺼냅니다. 이것을 C:\distribution 이하에 복사합니다.
C:\distribution + OpenRTP + RTSystemEditor + configuration + NewProjectName + plugins + ...
이러한 구조로 되어 있어야 합니다.
이상의 환경이 준비되었다면, 빌드를 합니다. autobuild_vc8.bat(개발 환경이 VC2005의 경우) 혹은 autobuild_vc9.bat(같이 VC2008의 경우)를 더블 클릭 한 후 기동하면 자동으로 빌드가 시작됩니다.
또, 솔루션 파일(sln)로부터의 빌드도 가능합니다. OpenRTM-aist_vc8.sln (개발 환경이 VC2005의 경우) 혹은 OpenRTM-aist_vc9.sln (개발 환경이 VC2008의 경우)를 더블 클릭 해, 빌드 해 주십시오.
정상적으로 빌드가 되었다면 다음을 실시해, 인스톨을 완료시킵니다.
이상으로, OpenRTM-aist의 인스톨은 종료입니다.
패키지가 준비되어 있지 않은 UNIX 환경이나, 크로스 개발 환경, OpenRTM-aist 본체의 소스를 변경해 이용하고 싶은 경우에는, 소스로부터 컴파일 할 수 있습니다.
OpenRTM-aist(C++버전)는 autotools를 이용한 빌드 환경을 제공하고 있기 때문에, 여러가지 환경에서 용이하게 빌드 할 수 있습니다.
OpenRTM-aist는 아래와 같은 OS 및 Linux 배포 버전에서 동작 하는 것이 확인되고 있습니다.
이외의 환경에서도 일반적 Linux/UNIX 환경이면, 빌드할 수 있을 가능성이 있습니다.
OpenRTM-aist-1.0.0의 인스톨에는 아래와 같은 개발 환경 및 라이브러리가 필요합니다.
각각의 라이브러리등의 문서에 따라 인스톨을 실시해 주십시오. 이러한 패키지가 표준의 디렉토리(/usr, /usr/local 등) 아래에 인스톨 되어 있으면, 이후의 OpenRTM-aist의 컴파일 작업을 비교적 간단하게 실시할 수 있습니다.
OpenRTM-aist의 소스를 다운로드합니다.
우선 소스 코드 OpenRTM-aist-X.X.X.tar.gz를 적당한 디렉토리에 전개합니다.
$ tar xvzf OpenRTM-aist-X.X.X.tar.gz $ cd OpenRTM-aist-X.X.X
OpenRTM-aist는 패키지의 빌드에 autoconf, automake를 사용하고 있습니다. 빌드의 방법은 autoconf, automake를 사용한 패키지와 같게 실시합니다.
$ ./configure --prefix=/usr [options]
[options]로 사용 가능한 옵션은
$ ./configure --help
을 참조해 주십시오.
configure가 정상적으로 종료한 것을 확인해 주십시오. 정상적으로 종료하였다면 make 합니다.
$ make
빌드가 정상적으로 종료되면 헤더 파일, 라이브러리, 유틸리티 커멘드군을 인스톨 합니다.
$ su # make install
이상, 소스 코드로부터의 빌드 및 인스톨은 종료입니다.
OpenRTM-aist는 개발에 이용하고 있는 subversion 리포지터리(repository)를 일반적으로 공개하고 있습니다. 리포지터리(repository)로부터 체크아웃 한 소스 코드로부터 빌드를 실시할 수도 있습니다.
리포지터리(repository)로부터 체크아웃 한 소스는 configure 스크립트나 Makefile.in 가 포함되어 있지 않습니다. 이것들을 생성하려면,
등의 툴이 필요하므로 미리 인스톨 해 둡니다.
소스를 리포지터리(repository)로부터 체크아웃 합니다.
$ svn co http://www.openrtp.jp/openrtm/svn/OpenRTM-aist/trunk/OpenRTM-aist A OpenRTM-aist/include A OpenRTM-aist/include/rtm A OpenRTM-aist/AUTHORS A OpenRTM-aist/src A OpenRTM-aist/src/ext A OpenRTM-aist/src/ext/artlinux 중략 A OpenRTM-aist/examples/Templates/PanTilt.xml A OpenRTM-aist/INSTALL.jp U OpenRTM-aist Checked out revision 2009.
체크아웃 하면, OpenRTM-aist라고 하는 디렉토리가 있으므로, 그 디렉토리로 들어갑니다.
$ ls OpenRTM-aist $ cd OpenRTM-aist $ ls AUTHORS Makefile.am acinclude.m4 examples/ win32/ COPYING.LIB NEWS build/ include/ COPYRIGHT* README configure.ac openrtm.m4 ChangeLog README.jp docs/ src/ INSTALL.jp TUTORIAL.jp etc/ utils/
build 디렉토리 아래에 autogen라고 하는 셸 스크립트가 있는 것을 확인하여, 이 스크립트를 실행합니다. 실행에는, 몇분 정도의 시간이 걸립니다.
$ls build/autogen build/autogen* $ sh build/autogen Setting up environment to generate configure script. ------------------------------------------------------------ Searching Autotools ------------------------------------------------------------ autoconf was found in /usr/local/bin/autoconf. autoheader was found in /usr/local/bin/autoheader. autom4te was found in /usr/local/bin/autom4te. autoreconf was found in /usr/local/bin/autoreconf. autoupdate was found in /usr/local/bin/autoupdates. automake was found in /usr/local/bin/automake-1.9. aclocal was found in /usr/local/bin/aclocal-1.9. libtool was found in /usr/local/bin/libtool. libtoolize was found in /usr/local/bin/libtoolize. ------------------------------------------------------------ Searching libtool.m4 ------------------------------------------------------------ file was found: /usr/local/share/aclocal/libtool.m4 Copying libtool.m4 from /usr/local/share/aclocal/libtool.m4 ------------------------------------------------------------ Doing autoreconf ------------------------------------------------------------ autoreconf-2.62: Entering directory `.' autoreconf-2.62: configure.ac: not using Gettext autoreconf-2.62: running: /usr/local/bin/aclocal-1.9 --force autoreconf-2.62: configure.ac: tracing autoreconf-2.62: configure.ac: adding subdirectory src/lib/coil to autoreconf autoreconf-2.62: Entering directory `src/lib/coil' autoreconf-2.62: running: /usr/local/bin/libtoolize --copy --force You should update your `aclocal.m4' by running aclocal. autoreconf-2.62: running: /usr/local/bin/autoconf --force autoreconf-2.62: running: /usr/local/bin/autoheader --force autoreconf-2.62: running: /usr/local/bin/automake-1.9 --add-missing --copy --force-missing configure.ac: installing `./install-sh' configure.ac: installing `./missing' ace/coil/Makefile.am: installing `./depcomp' Makefile.am: installing `./INSTALL' autoreconf-2.62: Leaving directory `src/lib/coil' You should update your `aclocal.m4' by running aclocal. configure.ac: installing `./install-sh' configure.ac: installing `./missing' examples/AutoTest/Makefile.am: installing `./depcomp' Makefile.am: installing `./INSTALL' autoreconf-2.62: Leaving directory `.' done $
autogen의 실행에 의해, configure가 OpenRTM-aist 디렉토리내에 생성되기 때문에 이후는 통상의 소스로부터의 빌드 처럼, configur&make로 빌드 합니다.
$ ls -l configure -rwxr-xr-x 1 n-ando n-ando 812893 Jul 6 05:56 configure* $ ./configure --prefix=/usr $ make
make dist를 실시하는 것으로 openrtm.org에서 배포하고 있는 소스의 패키지 를 작성할 수도 있습니다. 또, make dist로 Windows상에서 빌드 가능한 소스 코드의 패키지도 동시에 작성합니다. 하지만 make dist를 실시하려면 doxygen나 latex, qkc 등 추가의 커멘드가 필요합니다.
$ make dist 몇분 정도 걸립니다 $ ls -l OpenRTM-aist* -rw-r--r-- 1 n-ando n-ando 9266837 Apr 7 09:53 OpenRTM-aist-1.0.0-win32.zip -rw-r--r-- 1 n-ando n-ando 4831099 Apr 7 09:53 OpenRTM-aist-1.0.0.tar.bz2 -rw-r--r-- 1 n-ando n-ando 7258796 Apr 7 09:53 OpenRTM-aist-1.0.0.tar.gz $
생성된 소스 패키지는 각각 이하와 같습니다.
인스톨이 정상적으로 종료하면, 부속의 샘플로 동작 테스트를 합니다. 샘플은 통상적으로, 이하의 장소에 있습니다.
소스로 부터 빌드한 경우는 소스 디렉토리 이하의
에도 존재합니다。
샘플 컴포넌트 세트 SimpleIO를 사용해 OpenRTM-aist가 정상적으로 빌드·인스톨되어 있는지를 확인합니다.
RT컴포넌트 ConsoleInComp, ConsoleOutComp로 구성되는 샘플 세트입니다. ConsoleInComp는 콘솔로부터 입력된 수치를 OutPort로부터 출력하는 컴포넌트, ConsoleOutComp는 InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트입니다. 이것들은 Simple한 I/O(입출력)를 보여 주기 위한 샘플입니다. ConsoleInComp의 OutPort로부터 ConsoleOutComp의 InPort에 연결하여 2개의 컴포넌트를 액티브(Activate)하는 것으로 동작합니다.
이후, 간단을 위해 샘플은 /usr/share/OpenRTM-aist/examples 이하에 있는 것으로 설명을 기술합니다.
우선, 컴포넌트의 참조를 등록하기 위한 네임서버를 기동합니다. Linux등의 패키지로 omniORB를 인스톨 했을 경우, 이미 시스템의 서비스로서 네임서버(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:9876 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 컨피그레이션 파일 rtc.conf를 작성하고 배치합니다. 우선 적당한 작업 디렉토리를 만듭니다. 여기에서는 편의상 홈 디렉토리 아래에 RTCwork라고 하는 디렉토리를 작업 디렉토리로 해두기로 하겠습니다. 작업 디렉토리 RTCwork에 다음과 같은 내용의 파일 rtc.conf를 작성합니다.
/usr/share/OpenRTM-aist/examples 아래에 있는 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
시스템으로 IPv6가 설정되어 있는 경우, localhost라고 하는 호스트명이 정상적으로 기능하지 않는 경우가 있습니다. 그 경우는 localhost 대신에 127.0.0.1로 수정해 주십시오.
터미널을 기동하고 다음과 같이 앞에서 작성한 rtc.conf를 참조시키는 형태로 ConsoleInComp를 기동합니다.
$ /usr/share/OpenRTM-aist/examples/ConsoleInComp -f rtc.conf Creating a component: "ConsoleIn"....succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleIn0 Implementation: ConsoleIn Description: Console input component Version: 1.0 Maker: Noriaki Ando, AIST Category: example Other properties ================================================= ================================================= Port0 (name): out ------------------------------------------------- - properties - port.port_type: DataOutPort dataport.data_type: TimedLong dataport.subscription_type: flush,new,periodic dataport.dataflow_type: push dataport.interface_type: corba_cdr -------------------------------------------------
스스로 빌드·인스톨 했을 경우는,
$ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleInComp -f ~rtc.conf
으로 ConsoleInComp를 기동합니다.
터미널을 기동 rtc.conf를 참조하는 형태로 ConsoleOutComp를 기동합니다.
$ /usr/share/OpenRTM-aist/examps/ConsoleOutComp -f rtc.conf succeed. ================================================= Component Profile ------------------------------------------------- InstanceID: ConsoleOut0 Implementation: ConsoleOut Description: Console output component Version: 1.0 Maker: Noriaki Ando, AIST Category: example Other properties ================================================= ================================================= Port0 (name): in ------------------------------------------------- - properties - port.port_type: DataInPort dataport.data_type: TimedLong dataport.subscription_type: Any dataport.dataflow_type: push,pull dataport.interface_type: corba_cdr -------------------------------------------------
스스로 빌드·인스톨 했을 경우도
$ <source_dir>/OpenRTM-aist/examples/SimpleIO/ConsoleOutComp -f ~rtc.conf
등으로 해서 ConsoleOutComp를 기동합니다.
RTSystemEditor를 사용하고, RT컴포넌트의 접속과 액티브화를 실시합니다. 여기에서 Eclipse 패키지를 다운로드해 압축을 해제해 주십시오.
RTSystemEditor는 Java Development Kit6를 사용합니다. 이하의 메뉴얼을 참고에 인스톨해 주십시오. 또, Ubuntu 등에서는 디폴트의 Java 환경은 OpenJDK가 추천 되고 있습니다. 그러한 경우 OpenJDK에서도 이용하는 것은 가능합니다.
여기의 페이지를 참고하여 RTSystemEditor를 기동해 주십시오.
네임서버에 접속해 등록 내용을 확인합니다. 네임서버에의 접속은 좌측의 Name Service View의 콘센트형 아이콘의 버튼을 클릭해, 다이얼로그에
localhost 또는 localhost:2809
라고 입력합니다.(omniNames의 디폴트 포트 번호는 2809입니다.)
네임서버에 등록된 RT컴포넌트를 시스템 에디터에 배치합니다. 왼쪽의 Name Service View 의 ConsoleOut0 및 ConsoleIn0를 중앙의 에디터 위에 드래그 앤드 드롭 합니다. 다음 컴포넌트의 우/좌단의 포트 아이콘을 다른 한쪽으로부터 반대쪽으로 드래그 앤드 드롭 하면 접속 다이얼로그가 표시됩니다. 모두 디폴트로 설정해도 좋습니다. 그리고 OK를 누르면 접속이 완료됩니다.
메뉴아래의 녹색의 「재생」버튼을 누르면, 에디터상의 모든 구성-컴포넌트가 액티브 됩니다.
ConsoleInComp 와 ConsoleOutComp 의 포트를 접속하면,
Please input number:
위와 같은 prompt가 나타나므로, 거기에 숫자를 입력합니다. 입력하는 숫자는, short int 에 들어가는 범위의 수치를 입력해 주십시오.
ConsoleInComp측의 터미널에 숫자를 넣으면, ConsoleOutComp측의 터미널에 입력한 수치가 나타납니다. 이상으로 OpenRTM-aist가 정상적으로 인스톨되어 있는 지를 확인할 수 있었습니다.
인스톨 또는 빌드가 정상적으로 종료되면, 샘플로 동작 테스트 를 합니다. 샘플은, 통상은 이하의 장소에 있습니다.
샘플 컴포넌트 세트 SimpleIO를 사용하고, OpenRTM-aist가 정상적으로 빌드·인스톨 되어 있는지를 확인합니다.
RT컴포넌트 ConsoleInComp, ConsoleOutComp로 구성되는 샘플 세트 입니다. ConsoleInComp는 콘솔로부터 입력된 수치를 OutPort로부터 출력하는 컴포넌트, ConsoleOutComp는 InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트입니다. 이것들은 가장 Simple하게 I/O를 예로 보여주는 샘플입니다. ConsoleInComp의 OutPort로부터 ConsoleOutComp의 InPort에 접속해 2개의 컴포넌트를 액티브(Activate) 하는 것으로 동작합니다.
이하는 msi 인스톨러로 OpenRTM-aist를 인스톨 한 환경에서, 시작 메뉴로부터 각종 프로그램을 기동하는 것을 전제로 설명합니다. 시작 메뉴 로부터 OpenRTM-aist를 마우스 오른쪽 버튼을 클릭해 「열기」로 폴더를 열어, 각 프로그램 에 액세스 하면 편리합니다.
우선, 컴포넌트의 참조를 등록하기 위한 네임서버를 기동합니다. 「OpenRTM-aist」>>「tools」>>「Start Naming Service」에 있는 바로가기 를 클릭해 네임서버를 기동합니다.
기동하면, 이하와 같은 콘솔 화면이 열립니다.
네임서버의 콘솔 화면이 열리지 않는 케이스가 있습니다. 이 경우 예상되는 몇개의 원인을 아래와 같이 대처해 주십시오.
openrtm.org가 제공하는 msi 인스톨러에는 omniORB가 포함되어 있습니다만, 언인스톨 을 선택하면, omniORB를 인스톨 하지 않고 OpenRTM-aist를 인스톨 할 수도 있습니다.
또, 수동으로 인스톨 했을 경우에는 omniORB가 들어가 있지 않은 경우도 있기 때문에 omniORB가 인스톨 되어 있는지 확인해 주십시오.
「Start Naming Service」는 %RTM_ROOT%\bin\rtm-naming.bat에 있는 배치파일 로부터 네임서버(omniNames.exe)를 기동합니다. 이 때, omniNames.exe 를 참조하기 위해서 환경 변수 OMNI_NAMES를 이용하고 있습니다. 통상 인스톨러로 OpenRTM-aist를 인스톨 했을 경우에는 OMNI_ROOT 환경 변수가 자동으로 설정되지만 어떠한 이유로 환경 변수가 무효가 되어 있거나, 수동으로 인스톨 했을 경우 등은 환경 변수가 설정되어 있지 않을 경우가 있습니다.
환경 변수 OMNI_ROOT가 설정되어 있는 것을 확인해 주세요. 환경편소는,유저명이 2바이트 문자인 경우 로그 출력하는 폴더를 적절히 설정하지 못하고 omniNames.exe의 기동에 실패하는 경우가 있습니다. 그 경우, 환경 변수 TEMP를 2바이트 문자를 포함하지 않는 장소로 설정하는 것으로 수정하는 경우가 있습니다. 임의의 디렉토리(이하의 케이스에서는 C:\temp)를 작성해, 그곳을 환경 변수 TEMP 가 가리키도록 rtm-naming.bat의 선두 부분에서 이하와 같이 설정합니다.
set cosnames="omninames" set orb="omniORB" set port=%1 rem set OMNIORB_USEHOSTNAME=localhost set PATH=%PATH%;%OMNI_ROOT%\bin\x86_win32 set TEMP=C:\temp
또, 드문 경우이지만 호스트명이나 주소의 설정의 문제로 기동이 잘 되지 않는 경우가 있습니다. 이 경우 이용하고 있는 PC의 IP주소를 omniNames.exe에 가르쳐 주면 잘 되는 경우가 있습니다. 환경 변수 OMNIORB_USEHOSTNAME를 이하와 같이 설정합니다(이하는 자신의 호스트의 IP주소 가 192.168.0.11의 경우인 예).
set cosnames="omninames" set orb="omniORB" set port=%1 set OMNIORB_USEHOSTNAME=192.168.0.11 set PATH=%PATH%;%OMNI_ROOT%\bin\x86_win32
네임서버 기동 후, 적당한 샘플 컴포넌트를 기동합니다. 방금전 열어 둔 시작 메뉴 폴더의, 「OpenRTM-aist」>>「C++」>> 「components」>>「examples」를 열면, 그림과 같이 몇개의 컴포넌트가 있습니다.
여기에서는, 「ConsoleInComp.exe」 「ConsoleOutComp.exe」를 각각 더블 클릭 해 2개의 컴포넌트를 기동합니다. 기동하면, 아래 그림과 같은 2개 의 콘솔 화면이 열립니다.
컴포넌트가 기동하지 않는 경우, 몇개의 원인을 생각할 수 있습니다.
rtc.conf의 설정에 문제가 있어, 기동할 수 없는 케이스가 있습니다. 상기 시작 메뉴 폴더의 「rtc.conf for examples」를 열어 설정을 확인해야 합니다. 예를 들면, corba.endpoint/corba.endpoints 등의 설정이 현재 실행중의 PC의 호스트 주소와 미스매치를 일으키고 있는 경우 등은 CORBA가 이상종료합니다.
이하와 같은 최저한의 rtc.conf로 설정 다시 하고 시험해 보십시오.
corba.nameservers: localhost
라이브러리등이 적절히 인스톨 되어 있지 않음·설정되어 있지 않은 등의 원인으로 라인 타임 에러가 발생하는 경우가 있습니다.-재기동해 본다- OpenRTM-aist를 모두 언인스톨해 재차 인스톨 해 보는 등을 실시하는 것으로 개선되는 경우도 있습니다.
시작 메뉴 폴더로부터, RTSystemEditor를 기동합니다. RTSystemEditor는 「OpenRTM-aist」>>「C++」>>「tools」>>「RT System Editor」에 있습니다.
RTSE가 기동하면 우선 네임서버에 접속합니다. 왼쪽 페인의 상부에 있는, 의 아이콘을 클릭해 접속 다이얼로그를 엽니다. 접속 다이얼로그의 호스트명의 부분에 방금전 기동한 네임서버의 주소(이 경우 동일 호스트이므로 localhost를 지정합니다. 포트 번호도 지정할 수 있습니다만, 통상 디폴트의 2809번을 사용하는 경우는 아무것도 지정하지 않습니다.
접속하면, 네임서비스뷰에 localhost가 나타납니다. 트리 표시의 [+] 를 클릭하면, 방금전 기동한 2개의 컴포넌트가 등록되어 있는 것을 알수 있습니다.
시스템을 편집하는 에디터를 엽니다. 상부의 에디터를 여는 버튼 를 클릭하면, 윈도우의 중앙에 에디터가 열립니다.
좌측의 네임서비스뷰에 의 아이콘으로 표시 되고 있는 컴포넌트(2개)를 중앙의 에디터에 드래그 앤드 드롭 합니다.
ConsoleIn0 컴포넌트의 우측에는 데이터가 출력되는 OutPort , ConsoleOut0 컴포넌트의 좌측에는 데이터가 입력되는 InPort 가 각각 붙어 있습니다.
이것들의 InPort/OutPort(데이터 포트라고 부른다)를 접속합니다. OutPort로부터 InPort(또는 InPort 로부터 OutPort)에 드래그 앤 드롭 하면, 그림과 같은 다이얼로그가 나타나고 디폴트 설정인 상태로 OK 버튼을 누릅니다.
2개의 컴포넌트의 사이에 접속선이 나타납니다. 다음에, 에디터 상부 메뉴의 All Activate 버튼 를 클릭해, 컴포넌트를 액티브화니다. 액티브 되면, 컴포넌트가 녹색으로 변화합니다.
컴포넌트가 액티브 되면 ConsoleIn 컴포넌트측에서는
Please input number:
라는 prompt 표시로 바뀌기 때문에, 적당한 수치 (short int 의 범위내: 32767 이하)를 입력해 Enter 키를 누릅니다. ConsoleOut 측에서는, 입력 한 수치가 표시되어 ConsoleIn 컴포넌트로부터 ConsoleOut 컴포넌트에 데이터가 전송된 것을 알 수 있습니다.
이상으로, 컴포넌트의 기본 동작의 확인은 종료입니다.
인스톨러에는, 이 밖에도 몇개의 샘플 컴포넌트가 부속되어 있습니다. 이러한 컴포넌트도 이와 같이 기동해, RTSystemEditor로 포트끼리를 접속해, 액티브하는 것으로 테스트 할 수 있습니다.
부속되어 있는 컴포넌트의 리스트와 간단한 설명을 이하에 나타냅니다.
ConsoleInComp.exe | 콘솔로부터 입력된 수치를 OutPort로부터 출력한다. ConsoleOutComp.exe와 연결해 사용 |
ConsoleOutComp.exe | InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트.ConsoleInComp.exe와 연결해 사용 |
SequenceInComp.exe | 랜덤인 수치(Short,Long,Float,Double와 그 순서형)을 출력하는 컴포넌트.SequenceOutComp.exe와 연결해 사용 |
SequenceOutComp.exe | InPort에 입력되는 수치(Short,Long,Float,Double와 그 순서형)을 표시.SequenceInComp.exe와 연결해 사용 |
MyServiceProviderComp.exe | MyService형의 서비스를 제공하는 컴포넌트.MyServiceConsumerComp.exe와 연결해 사용 |
MyServiceConsumerComp.exe | MyService형의 서비스를 제공하는 컴포넌트.MyServiceProviderComp.exe와 연결해 사용 |
ConfigSampleComp.exe | Configuration의 샘플.RTSystemEdiotr에서 Configuration을 변경해 Configuration의 변경에 대해 이해하기 위한 샘플. |
USBCameraAcquireComp.exe | USB 카메라로부터 화상을 취득해 OutPort로부터 출력하는 컴포넌트.USBCameraMonitor.exe와 연결해 사용 |
USBCameraMonitor.exe | InPort에 입력되는 화상을 화면에 표시하는 컴포넌트.USBCameraAquire.exe와 연결해 사용 |