Windows에서의 동작확인

인스톨의 확인

샘플을 이용해 인스톨 완료의 확인

 부속의 샘플 RT컴포넌트를 이용하여 동작 확인을 실시합니다. "내 컴퓨터"에서 SimpleIO ※1 폴더를 표시해, 그 중의 run.py 를 더블 클릭 합니다. ※2  처음에 터미널 화면이 3개 열리고, 몇초후에 또 하나 열립니다. 4번째의 터미널 화면이 열릴 때까지, 반드시 기다려 주십시오. "Please input number:"라고 표시되고 있는 윈도우에 숫자를 입력합니다. ※3  입력하는 숫자는 long int 에 들어가는 범위의 값을 입력해 주십시오. 그러면 다른 한쪽의 윈도우에서 입력한 수치와 같은 수치가 나타납니다. 여기까지 할 수 있으면 OpenRTM-aist-Python이 정상적으로 인스톨 되고 있는 것을 알 수 있습니다.

※1 샘플 컴포넌트 세트 SimpleIO:

 인스톨러를 사용했을 경우는 통상 C:\Program Files\OpenRTM-aist\0.4\examples\Python\SimpleIO에, 소스로부터 빌드 했을 경우 <소스의 전개 폴더>\OpenRTM\examples\SimpleIO에 각각 인스톨 되고 있습니다.

※2 미리 환경 변수 Path에 Python인스톨 폴더를 추가해 주십시오(C:\Python24 등).


※3 특히 에러는 아니지만, "Please input number:"라고 하는 표시가 나타나지 않는 경우가 있습니다. 이 경우 같은 폴더내의 Connector.py를 기동하면 정상적으로 동작합니다.

참고:

그 외 샘플 컴포넌트에 대해

 OpenRTM-aist-Python에는 SimpleIO 뿐만이 아니라, SeqIO, SimpleService, ConfigSample, ExtTrigger등의 샘플 컴포넌트가 부속되어 있습니다(SimpleIO 폴더와 같은 장소에 있습니다). 샘플 컴포넌트의 자세한 내용은 OpenRTM-aist-0.4 Java의 샘플에 대해를 참조해 주십시오.

컴포넌트 템플릿의 테스트

 다음으로 컴포넌트의 템플릿 제네레이터를 사용하여 간단한 컴포넌트를 작성하는 테스트를 실시합니다. 템플릿 제네레이터 (rtc-template.py)를 사용합니다. 또한 여기에서는 편의상 Python2.4를 사용하는 환경에서의 예를 들고 있습니다. Python2.5 를 사용하는 환경에서는 Python24라고 부분을 Python25로 수정하여 사용해 주십시오.


  • 1.컴포넌트를 작성하는 작업 디렉토리의 준비
     컴포넌트를 작성하는 폴더(임의의 경로, 임의의 폴더. 이하의 예에서는 C:\Documents and Settings\<user name>\SampleComponent를 작업 폴더로 합니다.)를 작성하고, 거기서 컴포넌트 작성 작업을 합니다. 커멘드 prompt를 기동해, 작성한 폴더까지 이동합니다.
     > cd C:\Documents and Settings\<user name>\SampleComponent

  • 2.rtc-template 의 기동을 확인
     우선은 help를 보겠습니다.
     > C:\Python24\Lib\site-packages\OpenRTM\rtc-template\rtc-template.py --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.idl
    ※ rtc-template.py는 위와 같이 전체 경로로 지정해 주십시오. ※※ 편의상 여기에서는 Python2.4를 사용하는 환경의 예를 들고 있습니다. Python2.5의 환경에서는 Python24를 Python25 로 수정하여 사용해 주십시오.  rtc-template에 대해서 작성하고 싶은 컴포넌트의 설정을 인수로서 건네주면, 컴포넌트의 양식을 작성합니다. 여기에서는 help의 표시의 마지막 부분에 표시된Example:이하를 복사하고 테스트해 보겠습니다.

  • 3.MyService.idl 와 YourService.idl 의 준비  Example의 예에서는 서비스 프로바이더로서 MyService, 서비스 컨슈머로서 YourService 를 이용하는 옵션이 주어지고 있어 그것을 위한 IDL 파일을 커런트 디렉토리에 대해 둘 필요가 있습니다. 여기에서는 간단한 IDL 파일을 이하와 같이 작성해 둡니다.

    • MyService.idl
       interface MyService 
       {
         void echo();
       };
    • YourService.idl
       interface YourService
       {
          void echo();
       };


  • 4.rtc-template를 실행해 템플릿 코드를 생성  이러한 파일을 작성하면 Example: 의 예를 복사&붙여넣기 하는 등, 커멘드로서 입력합니다.
     > python C:\Python24\Lib\site-packages\OpenRTM\rtc-template\rtc-template.py -bpython^
         --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.idl
      File "MyService_idl_example.py" was generated.
      File "Sample.py" was generated.
      File "README.Sample" was generated.
     > dir
     2008/06/25  12:28    <DIR>          .
     2008/06/25  12:28    <DIR>          ..
     2008/06/25  12:27                45 MyService.idl
     2008/06/25  12:28             2,226 MyService_idl.py
     2008/06/25  12:28             1,341 MyService_idl_example.py
     2008/06/25  12:28             3,557 README.Sample
     2008/06/25  12:28             4,615 Sample.py
     2008/06/25  12:27                47 YourService.idl
     2008/06/25  12:28             2,312 YourService_idl.py
     2008/06/25  12:28    <DIR>          _GlobalIDL
     2008/06/25  12:28    <DIR>          _GlobalIDL__POA
    ※ --help 로 표시되는 샘플은 C++코드 생성용이므로, Python용의 코드를 생성하는 경우는 "-bcxx"를"-bpython"로 수정해 주십시오. ※※ Windows 환경에서 rtc-template.py를 실행하는 경우는 "Sample component"등과 같이(") 쌍따옴표를 사용해 주십시오. (')따옴표를 사용했을 경우는 옵션이 올바르게 해석되지 않습니다. 또, 행 계속 기호는 (\)을 (^)로 변경할 필요가 있습니다. ※※※ 편의상 여기에서는 Python2.4를 사용하는 환경의 예를 들고 있습니다. Python2.5 환경에서는 Python24를 Python25 로 수정하여 사용해 주십시오.  이와 같이, 컴포넌트의 Python의 코드, 서비스의 실장 코드가 작성됩니다. 이것으로 실행 형식의 컴포넌트(Sample.py)가 작성되었습니다.


★Remark:

 rtc-template.py를 실행할 때에 매회 커멘드 입력하는 것은 불편하므로, 이하와 같은 배치파일을 작성해 사용하는 것을 추천합니다.

 python C:\Python24\Lib\site-packages\OpenRTM\rtc-template\rtc-template.py -bpython^
     --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.idl
※ 편의상 여기에서는 Python2.4를 사용하는 환경의 예를 들고 있습니다. Python2.5 환경에서는 Python24를 Python25 로 수정하여 사용해 주십시오..



  • 5.컴포넌트의 실행 준비:네임서버의 기동  작성된 실행 형식의 컴포넌트를 실행해 보겠습니다. 우선 그 준비를 합니다.
     CORBA 의 네이밍 서비스를 기동합니다. 다른 커멘드 prompt를 열어,
     > python "C:\Program Files\OpenRTM-aist\0.4\bin\rtm-naming.py" [포트 번호]
     또는,
     C:\Program Files\OpenRTM-aist\0.4\bin로 커런트를 이동하고 나서
     >python rtm-naming.py을 하던지
     또는,
     C:\Program Files\OpenRTM-aist\0.4\bin\에 있는 rtm-naming.py를 더블 클릭
    하는 것으로, CORBA의 네이밍 서비스는 기동할 수 있습니다. 방금전 rtc.conf로 지정한 포트 번호를 지정해 기동해 주십시오. 아무것도 지정하지 않으면 디폴트 포트(2809)를 사용합니다. 디폴트 포트를 사용하는 예입니다.
     > python "C:\Program Files\OpenRTM-aist\0.4\bin\rtm-naming.py"
     Starting omniORB omniNames:  localhost : 2809
     
     Starting omniNames for the first time.
     Wrote initial log file.
     Read log file successfully.
     Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e300000010000000000000060000000010102000e0000003135302e32392e39362e31363700f90a0b0000004e616d6553657276696365000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100
     Checkpointing Phase 1: Prepare.
     Checkpointing Phase 2: Commit.
     Checkpointing completed.
     덧붙여 소스로부터 빌드·인스톨 했을 경우는, rtm-naming.py의 패스는 <소스의 전개 폴더>\bin이 됩니다.

  • 6.컴포넌트의 실행 준비:RtcLink를 기동  다음으로 컴포넌트를 조작하기 위한 GUI 툴:RtcLink를 기동합니다(RtcLink에 대한 자세한 것은RtcLink를, 또 인스톨 방법 등은 RtcLink・RtcTemplate의 인스톨을 참조해 주십시요).

  • 7.컴포넌트의 실행 준비:rtc.conf의 배치  컴포넌트의 실행에는 컨피그레이션 파일(통상은 rtc.conf라는 이름)이 필요합니다. 여기에서는 간이판 rtc.conf를 작성해 커런트로 하고 있는 작업 폴더에 배치합니다.
    • rtc.conf 의 간단한 사양
       corba.nameservers: 네임서버명:포트 번호
       naming.formats: %n.rtc
       logger.log_level: PARANOID
      여기서, 임시 호스트명:localhost 포트 번호는 디폴트로 합니다.
      • rtc.conf
         corba.nameservers: localhost
         naming.formats: %n.rtc
         logger.log_level: PARANOID


  • 8.컴포넌트를 기동
     마지막으로, 컴포넌트를 기동합니다.
     > python Sample.py -f rtc.conf
     혹은
     > python Sample.py (디폴트로 커런트 디렉토리의 rtc.conf를 읽어들인다)
     혹은
     Sample.py를 더블 클릭
    이것으로 컴퍼넌트를 기동할 수 있어RtcLink 상에
      • InPort를 2개
      • OutPort를 2개
      • 서비스 포트를 2개
      • 컨피그레이션을 6개
를 갖는 컴퍼넌트가 표시되면, OpenRTM-aist-Python-0.4.1이 정상적으로 인스톨 된 것이 됩니다. 구체적인 컴퍼넌트의 작성의 방법은 여기을 참조해 주십시오.

ダウンロード

最新バージョン : 2.1.0-RELESE

統計

Webサイト統計
ユーザ数:3399
プロジェクト統計
RTコンポーネント309
RTミドルウエア35
ツール25
文書・仕様書2

OpenRTM@Github

OpenRTM-aist GitHubサイト

ROS

Robot Operating System

Choreonoid

モーションエディタ/シミュレータ

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク

産総研が提供するRTC集

東京オープンソースロボティクス協会