ダウンロード
最新バージョン : 2.1.0-RELESE
| 2.1.0-RELESE | ダウンロードページ |
OpenRTM@Github
OpenRTM-aist GitHubサイト
ROS
Robot Operating System
Choreonoid
モーションエディタ/シミュレータ
DAQ-Middleware
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
| 2.1.0-RELESE | ダウンロードページ |
OpenRTM-aist GitHubサイト
Robot Operating System
モーションエディタ/シミュレータ
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
샘플의 테스트
인스톨이 정상적으로 종료되면, 부속의 샘플로 동작 테스트를 합니다. 여기에서는 샘플 컴포넌트 세트 SimpleIO를 사용하고 샘플 컴포넌트와 OpenRTM-aist-Python의 동작을 확인합니다.
샘플 컴포넌트 세트 SimpleIO:
RT컴포넌트 ConsoleIn.py, ConsoleOut.py와 이것들의 통신을 접속하는 Connector.py로 구성되는 샘플 세트입니다. 이 세트는 ConsoleIn.py에 준 수치를 ConsoleOut.py에 표시하는 「가장 Simple한 I/O 데몬스트레이션」을 목적으로 한 샘플입니다. ConsoleInComp로부터 ConsoleOutComp에 접속해, 그 통신을 개시시키는 것이 ConnectorComp의 역할입니다.
샘플의 실행
샘플은 {prefix}* /share/OpenRTM-aist/examples/python에 있습니다. 실행하고 싶은 샘플 컴포넌트 세트를 유저의 작업 디렉토리(다음의 코드예에서는 RTCexamples)에 복사해 사용합니다.
{prefix}*: 통상 Linux라면 /usr 그 이외에서는 /usr/local 가 되는 경우가 대부분입니다.
스스로 빌드·인스톨 했을 경우는 소스를 전개한 디렉토리 이하의 OpenRTM/examples/<샘플 컴포넌트 세트명>에 있습니다.
실행하면 신규의 터미널이 2개 열립니다. "Please input number:"라고 표시되고 있는 터미널에 숫자를 입력합니다. 입력하는 숫자는 long int에 들어가는 범위의 수치를 입력해 주십시오. 숫자를 입력하면, 다른 한쪽의 터미널에 입력한 것과 같은 숫자가 나타납니다. 여기까지 할 수 있으면, OpenRTM-aist-Python가 정상적으로 인스톨 되고 있는 것을 확인할 수 있습니다.
컴포넌트 템플릿의 테스트
준비
우선, rtc-template를 사용하기 위한 준비를 합니다.
$PYTHONPATH/OpenRTM/rtc-template/rtc-template.py에 실행권한을 주어/usr/bin등의 패스가 참조하는 곳에 rtc-template.py에의 심볼릭 링크를 연결합니다.
테스트
다음으로 컴포넌트의 템플릿 제네레이터를 사용하고, 간단한 컴포넌트를 작성하는 테스트를 실시합니다. 템플릿 제네레이터 (rtc-template)를 사용합니다. 컴포넌트를 작성하는 디렉토리(임의의 디렉토리)를 작성하고 그 디렉토리에서 컴포넌트를 작성해 보겠습니다.
우선은 help를 보겠습니다.
> rtc-template --help Usage: rtc-template [OPTIONS] Options: [-h] Print short help. [--help] Print details help. [--backend[=backend] or -b] Specify template code generator. [--module-name[=name]] Your module name. [--module-desc[=description]] Module description. [--module-version[=version]] Module version. [--module-vendor[=vendor]] Module vendor. [--module-category[=category]] Module category. [--module-comp-type[=component_type]] Component type. [--module-act-type[=activity_type]] Component's activity type. [--module-max-inst[=max_instance]] Number of maximum instance. [--module-lang[=language]] Language. [--config[=ParamName:Type:Default]] Configuration variable. [--inport[=PortName:Type]] InPort's name and type. [--outport[=PortName:Type]] OutPort's name and type [--service[=PortName:Name:Type]] Service Provider Port [--service-idl[=IDL_file]] IDL file name for service [--consumer[=PortName:Name:Type]] Service Consumer Port [--consumer-idl[=IDL_file]] IDL file name for consumer [--idl-include=[path]] Search path for IDL compile : 중략 : Example: rtc-template -bcxx --module-name=Sample --module-desc='Sample component' --module-version=0.1 --module-vendor=AIST --module-category=Generic --module-comp-type=DataFlowComponent --module-act-type=SPORADIC --module-max-inst=10 --config=int_param0:int:0 --config=int_param1:int:1 --config=double_param0:double:3.14 --config=double_param1:double:9.99 --config="str_param0:std::string:hoge" --config="str_param1:std::string:foo" --inport=Ref:TimedFloat --inport=Sens:TimedFloat --outport=Ctrl:TimedDouble --outport=Monitor:TimedShort --service=MySvcPort:myservice0:MyService --consumer=YourSvcPort:yourservice0:YourService --service-idl=MyService.idl --consumer-idl=YourService.idlrtc-template에 대해서 작성하고 싶은 컴포넌트의 설정을 인수로서 건네주면, 컴포넌트의 양식을 작성합니다. 여기에서는 help의 표시의 마지막 부분에 표시된 Example:이하를 복사하여 테스트해 보겠습니다.
Example의 예에서는 서비스 프로바이더로서 MyService, 서비스 컨슈머로서 YourService를 이용하는 옵션이 주어지고 있어 그것을 위한 IDL 파일을 커런트 디렉토리에 둘 필요가 있습니다. 여기에서는 간단한 IDL 파일을 이하와 같이 작성해 둡니다.
interface MyService { void echo(); };interface YourService { void echo(); };이러한 파일을 작성했다면, "Example"의 예를 복사&붙여넣기 하는 등 커멘드로서 입력합니다.
※ --help로 표시되는 샘플은 C++코드 생성용이므로 Python용의 코드를 생성하는 경우는,
"-bcxx"를"-bpython"에 고쳐 써 주십시오.
이와 같이, 컴포넌트의 Python 코드, 서비스의 구현 코드가 작성됩니다. 여기서,
이것으로, 실행 형식의 컴포넌트(Sample.py)가 작성되었습니다. 여기서, 실행 형식의 컴포넌트를 실행해 보겠습니다. 컴포넌트의 실행에는 컨피그레이션 파일(통상은 rtc.conf 라는 이름)이 필요합니다. 여기에서는 간이판을 커런트 디렉토리에 작성합니다.
여기서, 임시의 호스트명:localhost 포트 번호는 디폴트로 합니다.
다음은 CORBA의 네이밍 서비스를 기동합니다. CORBA의 네이밍 서비스는,
로 기동할 수 있기 때문에, 방금전 rtc.conf로 지정한 포트 번호를 지정해 기동해 주십시오. 아무것도 지정하지 않으면 디폴트 포트를 사용합니다.
다음에, 컴포넌트를 기동합니다.
구체적인 컴포넌트의 작성의 방법은, 메뉴얼을 참조해 주십시오.
주의점
환경 변수 PYTHONPATH에 관한 주의점
Python버전 OpenRTM를 사용할 때, 환경 변수 PYTHONPATH가 올바르게 설정되어 있는지 확인을 해야합니다.
올바르게 설정되어 있지 않은 경우, 컴포넌트를 실행할 수 없는 가능성이 있습니다.
복수의 path를 설정하는 경우
※ rtc-template에서는 PYTHONPATH의 첫번째의 요소를 참조하고 있기 때문에, PYTHONPATH에는 site-packages (/usr/lib/python2.x/site-packages)까지의 패스를 맨처음에 설정해 주십시오.
"--prefix" 옵션을 지정했을 경우
다음과 같이--prefix옵션을 이용해 인스톨 디렉토리를 지정했을 경우, PYTHONPATH에는 전개 후의 디렉토리를 지정할 필요가 있습니다.
rtc-template로의 주의점
rtc-template.py는 임의의 장소에 복사해 주십시오.
"--config"옵션으로 std::vector를 사용하는 경우는, 다음과 같이 옵션을 지정해 주십시오.
Service Provider 포트를 갖는 컴포넌트의 구현에서의 주의점
MyService.idl라는 --service-idl로 지정한 IDL 파일이 있는 경우, rtc-template 실행 후에 MyService_idl_example.py라고 하는 파일이 생성됩니다.
이 파일은 IDL로 정의한 오퍼레이션을 구현하기 위한 파일이므로, 이 안에서 오퍼레이션의 구현을 실시해 주십시오.