ダウンロード
最新バージョン : 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인 경우가 대부분입니다.
샘플 컴포넌트 세트 SimpleIO:
RT 컴포넌트 ConsoleInComp, ConsoleOutComp와 이것들의 통신을 접속하는 ConnectorComp로 된 샘플 세트입니다. 이 세트는 ConsoleInComp에게 준 수치를 ConsoleOutComp에 표시시키는 「가장 간단한 I/O 데몬스트레이션」을 목적으로 한 샘플입니다. ConsoleInComp로부터 ConsoleOutComp에 접속해, 그 통신을 개시시키는 것이 ConnectorComp의 역할입니다.
◆ 편의상 샘플은 usr/share/OpenRTM-aist/examples 이하에 있는 것으로서 설명을 기술합니다.
우선, rtm-naming*로 네임서버를 기동합니다.이 때 포토 넘버는 2809를 지정해 주세요.
*패스는{prefix} /bin/rtm-naming. 대부분, which rtm-naming 로 검색할 수 있습니다.
테스트를 위한 RTC 컨피그레이션 파일을 작성, 배치합니다. 우선, 적당한 작업 디렉토리를 만듭니다. 여기에서는 편의상 홈 디렉토리 바로 아래의 RTCwork라는 디렉토리를 작업 디렉토리로 하겠습니다. 작업 디렉토리 RTCwork에 이하의 파일을 작성해 배치합니다.
터미널을 기동하고, 다음과 같이2.에서 작성한 rtcconin.conf 를 참조시키는 형태로 ConsoleInComp를 기동합니다.
스스로 빌드·인스톨 했을 경우는, {인스톨 디렉토리}/examples/SimpleIO/로 이동하고 나서
${인스톨 디렉토리}/examples/SimpleIO/ $./ConsoleInComp -f rtcconin.conf그리고 ConsoleInComp를 기동합니다.
터미널을 기동하고, 다음과 같이 2.에서 작성한 rtcconin.conf 를 참조하는 형태로 ConsoleOutComp를 기동합니다.
자신이 빌드·인스톨 했을 경우는, {인스톨 디렉토리}/examples/SimpleIO/로 이동하고 나서
${인스톨 디렉토리}/examples/SimpleIO/ $./ConsoleOutComp -f rtcconout.conf터미널을 기동하고, 다음과 같이 ConnectorComp를 기동합니다.
스스로 빌드·인스톨 했을 경우는, {인스톨 디렉토리}/examples/SimpleIO/로 이동하고 나서
$cd {인스톨 디렉토리}/examples/SimpleIO/ $./ConnectorComp5.ConnectorComp을 기동 후에, ConsoleInComp측의 터미널에
ConsoleInComp 측의 터미널에 숫자를 입력하면, ConsoleOutComp 측의 터미널에 입력한 수치가 나타납니다. 여기까지 할 수 있으면, OpenRTM-aist가 정상적으로 인스톨 되고 있는 것을 확인 할 수 있습니다.
컴포넌트 템플릿의 테스트
컴포넌트의 템플릿 제네레이터를 사용하여 간단한 컴포넌트를 작성하는 테스트를 합니다. 템플릿 제네레이터(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.idlExample: 의 예에서는, 서비스 프로바이더로서 MyService, 서비스 컨슈머로서 YourService를 이용하는 옵션이 주어지고 있어 그것을 위해 IDL 파일이 커런트 디렉토리에 위치해야 합니다. 여기에서는, 간단한 IDL 파일을 이하와 같이 작성해 둡니다.
interface MyService { void echo(); };interface YourService { void echo(); };이러한 파일을 작성하면 Example: 의 예를 복사&붙여넣기 하는 등 커멘드로서 입력합니다.
4.의 결과, 위와 같이 컴포넌트의 C++의 코드, 서비스의 구현 코드 및 Makefile 등(그 밖에 VC++관련의 파일=Windows용을 포함한다)이 작성됩니다. 여기서,
> 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작성된 실행 형식의 컴포넌트를 실행해 보겠습니다. 우선, 그 준비를 시작합니다.
우선, CORBA의 네임 서비스를 기동합니다. CORBA의 네임 서비스는,
다음으로 컴포넌트를 조작하기 위한 GUI 툴:RtcLink를 기동합니다(RtcLink에 대한 자세한 내용은RtcLink >를, 또 인스톨 방법 등은RtcLink·RtcTemplate의 인스톨 을 참조해 주십시오).
컴포넌트의 실행에는 컨피그레이션 파일(통상은 rtc.conf라는 이름)이 필요합니다. 여기에서는 다음과 같은 *를 커런트 디렉토리(작업 디렉토리)에 작성, 배치합니다.
마지막으로, 컴포넌트를 기동합니다.
개판 이력
2008/6/20 片見