ダウンロード
最新バージョン : 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集
東京オープンソースロボティクス協会
샘플을 사용한 테스트
인스톨이 정상적으로 종료되면 부속되어 있는 샘플로 동작 테스트를 합니다. 샘플은 {prefix}* /share/OpenRTM-aist/examples에 있습니다(소스로 빌드·인스톨 했을 경우는 인스톨 디렉토리 이하의 /examples/<샘플 컴포넌트 세트명> 에도 있습니다). 샘플 컴포넌트 세트인 SimpleIO 를 사용하여 샘플 컴포넌트와 OpenRTM-aist 의 동작을 확인합니다.
{prefix}*: 통상 Linux라면 /usr 그 이외에서는 /usr/local 가 되는 경우가 대부분입니다. 소스로 빌드·인스톨 했을 경우는 configure 시의 옵션, --prefix 에게 준 경로( --prefix 를 설정하지 않았던 경우의 디폴트치는 /usr/local).
샘플 컴포넌트 세트 SimpleIO: RT컴포넌트 ConsoleInComp, ConsoleOutComp와 이것들의 통신을 접속하는 ConnectorComp로 된 샘플 세트입니다. 이 세트는 ConsoleInComp에게 준 수치를 ConsoleOutComp에 표시시키는 「가장 간단한 I/O 데몬스트레이션」을 목적으로 한 샘플입니다. ConsoleInComp로부터 ConsoleOutComp에 접속해, 그 통신을 개시시키는 것이 ConnectorComp의 역할입니다.
◆편의상 샘플은 usr/share/OpenRTM-aist/examples 이하에 있는 것으로서 설명을 기술합니다.
1.네임서버를 기동
우선, rtm-naming *으로 네임서버를 기동합니다. 이 때 포트 넘버는 9876로 지정해 주십시오.
* 패스는 {prefix} /bin/rtm-naming. 대개, which rtm-naming 명령어로 검색할 수 있습니다.
2.rtc.conf의 작성과 배치
테스트를 위한 RTC 컨피그레이션 파일 rtc.conf를 작성해 배치합니다. 우선, 적당한 작업 디렉토리를 만듭니다. 여기에서는 편의상 홈 디렉토리 아래에 RTCwork 라고 하는 디렉토리를 작업 디렉토리로 하겠습니다. 작업 디렉토리 RTCwork에 다음과 같은 내용의 파일 rtc.conf 를 작성해 저장합니다. ※/usr/share/OpenRTM-aist/examples 아래에 있는 rtc.conf는 이 예에서는 사용할 수 없으므로, ~/RTCWork/rtc.conf 로서 새롭게 작성해 주십시오.
3.ConsoleInComp의 기동
터미널을 기동하고 다음과 같이 2.에서 작성한 rtc.conf를 참조시키는 형태로 ConsoleInComp를 기동합니다.
자신이 빌드·인스톨 했을 경우는, {인스톨 디렉토리}/examples/SimpleIO/ConsoleInComp -f ~/RTCwork/rtc.conf 으로 ConsoleInComp를 기동합니다.
4.ConsoleOutComp의 기동
터미널을 기동하고 다음과 같이 2.에서 작성한 rtc.conf를 참조하는 형태로 ConsoleOutComp를 기동합니다.
5.ConnectorComp의 기동
터미널을 기동하고 다음과 같이 ConnectorComp를 기동합니다.
자신이 빌드·인스톨 했을 경우는, {인스톨 디렉토리}/examples/SimpleIO/ConnectorComp 으로 ConnectorComp를 기동합니다.
6.ConsoleInComp의 터미널에 숫자를 입력
5.ConnectorComp 의 기동 후, ConsoleInComp측의 터미널에
7.입력한 숫자가 ConsoleOutComp의 터미널상에 표시된다
ConsoleInComp 측의 터미널에 숫자를 입력하면, ConsoleOutComp 측의 터미널에 입력한 수치가 나타납니다. 여기까지 되었다면 OpenRTM-aist가 정상적으로 인스톨 되고 있는 것을 확인할 수 있습니다.
컴포넌트 템플릿의 테스트
컴포넌트의 템플릿 제네레이터를 사용하고 간단한 컴포넌트를 작성하는 테스트를 실시합니다. 템플릿 제네레이터 (rtc-template)를 사용합니다.
1.컴포넌트를 작성하는 작업 디렉토리의 준비
컴포넌트를 작성하는 디렉토리(임의의 디렉토리)를 작성하고, 컴포넌트를 작성해 컴파일 해 보겠습니다.
2.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: 이하를 복사하고 테스트해 보겠습니다.|
3.MyService.idl과 YourService.idl의 준비
Example: 의 예에서는 서비스 프로바이더로서 MyService, 서비스 컨슈머(consumer)로서 YourService를 이용하는 옵션이 주어지고 있어 그것을 위한 IDL 파일을 현재 디렉토리에 둘 필요가 있습니다. 여기에서는 간단한 IDL 파일을 이하와 같이 작성합니다.interface MyService { void echo(); };interface YourService { void echo(); };4.rtc-template를 실행해 템플릿 코드를 생성
이러한 파일을 작성했다면,Example: 의 예를 복사&붙여넣기를 하는 등 커멘드로서 입력합니다.
5.make
4.의 결과, 위와 같이 컴포넌트의 C++의 코드, 서비스의 구현 코드 및 Makefile 등(그 밖에 VC++관련의 파일=Windows용을 포함)이 작성됩니다. 여기서,
로서 make 합니다.
> make -f Makefile.Sample : 중략 : g++ -o SampleComp Sample.o MyServiceSkel.o YourServiceStub.o MyServiceSVC_impl.o SampleComp.o `rtm-config --libs` > ls Makefile.Sample README.Sample Sample_vc9.sln MyService.hh Sample.cpp Sample_vc9.vcproj MyService.idl Sample.h YourService.hh MyServiceDynSK.cc Sample.o YourService.idl MyServiceSK.cc Sample.so YourServiceDynSK.cc MyServiceSVC_impl.cpp Sample.yaml YourServiceSK.cc MyServiceSVC_impl.h SampleComp YourServiceSkel.cpp MyServiceSVC_impl.o SampleComp.cpp YourServiceSkel.h MyServiceSkel.cpp SampleComp.o YourServiceStub.cpp MyServiceSkel.h SampleComp_vc8.vcproj YourServiceStub.h MyServiceSkel.o SampleComp_vc9.vcproj YourServiceStub.o MyServiceStub.cpp Sample_vc8.sln copyprops.bat MyServiceStub.h Sample_vc8.vcproj user_config.vsprops이것으로 loadable module판의 컴포넌트(Sample.so)와 실행 형식의 컴포넌트(SampleComp)가 작성되었습니다.
6.컴포넌트의 실행 준비:네임서버의 기동
작성된 실행 형식의 컴포넌트를 실행해 보겠습니다. 먼저 그 준비를 합니다. 처음으로 CORBA 의 네임 서비스를 기동합니다. CORBA 의 네임 서비스는,
로 기동할 수 있기 때문에 8.에서 작성하는 rtc.conf로 설정하는 포트 번호를 지정해 기동해 주십시오. 아무것도 지정하지 않으면 디폴트 포트(2809)를 사용합니다. 여기에서는 디폴트 포트를 사용하는 예를 들고 있습니다.
이것은 해당 포트를 사용한 네임서버가 이미 기동하고 있는 것을 나타내고 있습니다. 이 경우는 그대로 다음의 7.에 진행되어 괜찮습니다.
7.컴포넌트의 실행 준비:RtcLink를 기동
다음에 컴포넌트를 조작하기 위한 GUI 툴:RtcLink를 기동합니다(RtcLink에 대한 자세한 것은RtcLink 를, 또 인스톨 방법 등은RtcLink·RtcTemplate의 인스톨을 참조해 주십시오).
8.컴포넌트의 실행 준비:rtc.conf의 작성
컴포넌트의 실행에는 컨피그레이션 파일(통상은 rtc.conf 라는 이름)이 필요합니다. 여기에서는 다음과 같은 *를 커런트 디렉토리(작업 디렉토리)로 작성해 저장합니다.*NOTES: corba.nameservers: rtm.or.jp:2809 (와)과 같이 corba.nameservers: 에는 호스트명 혹은 IP주소와 포토 번호(rtm.or.jp 는 호스트명, 2809는 포토 번호)를 줄 수 있습니다.
9.컴포넌트를 기동
마지막으로, 컴포넌트를 기동합니다.
혹은