인스톨 또는 빌드가 정상적으로 종료 되었다면 부속의 샘플로 동작 테스트를 실시합니다. 샘플은 통상 이하의 장소에 있습니다.
샘플 컴포넌트 세트 SimpleIO를 사용하고, OpenRTM-aist 가 정상적으로 빌드·인스톨 되고 있는지를 확인합니다.
RT컴포넌트 ConsoleIn, ConsoleOut 로 구성되는 샘플 세트 입니다. ConsoleIn는 콘솔로부터 입력된 수치를 OutPort로부터 출력하는 컴포넌트, ConsoleOut 는 InPort에 입력된 수치를 콘솔에 표시 하는 컴포넌트입니다. 이것들은 가장 Simple하게 I/O를 예로 보여주는 샘플입니다. ConsoleInComp의 OutPort로부터 ConsoleOutComp의 InPort에 접속해 2개의 컴포넌트를 액티브 (Activate) 하는 것으로 동작합니다.
이하는 msi 인스톨러로 OpenRTM-aist-Python을 인스톨 한 환경에서, 시작 메뉴로부터 각종 프로그램을 기동하는 것을 전제로 설명합니다. 시작 메뉴 로부터 OpenRTM-aist를 마우스 오른쪽 버튼을 클릭해 「열기」로 폴더를 열어, 각 프로그램에 액세스 하면 편리합니다.
우선, 컴포넌트의 참조를 등록하기 위한 네임서버를 기동합니다. 「OpenRTM-aist」>>「Python」>>「tools」>>「Start Naming Service」에 있는 바로가기 를 클릭해 네임서버를 기동합니다.
기동하면, 이하와 같은 콘솔 화면이 열립니다.
네임서버의 콘솔 화면이 열리지 않는 케이스가 있습니다. 이 경우 예상되는 몇개의 원인을 아래와 같이 대처해 주십시오.
openrtm.org가 제공하는 msi 인스톨러에는 omniORB가 포함되어 있습니다만, 언인스톨 을 선택하면, omniORB를 인스톨 하지 않고 OpenRTM-aist-Python을 인스톨 할 수도 있습니다.
또, 수동으로 인스톨 했을 경우에는 omniORB가 들어가 있지 않은 경우도 있기 때문에 omniORB가 인스톨 되어 있는지 확인해 주십시오.
호스트명이나 주소의 설정의 문제로, 기동이 잘 되지 않는 케이스가 있습니다. 그 경우 이용하고 있는 PC의 IP주소를 omniNames.exe에 가르쳐 주면 잘 되는 경우가 있습니다. 환경 변수 OMNIORB_USEHOSTNAME 를 이하와 같이 설정합니다 (이하는 자신의 호스트의 IP주소가 192.168.0.11인 경우의 예).
변수명(N): OMNIORB_USEHOSTNAME 변수치(V): 192.168.0.11
네임서버 기동 후, 적당한 샘플 컴포넌트를 기동합니다. 방금전 열어 둔 시작 메뉴 폴더의 「OpenRTM-aist」>>「Python」>> 「components」>>「examples」를 열면, 그림과 같이 몇개의 컴포넌트가 있습니다.
여기에서는, 「ConsoleIn.py」 「ConsoleOut.py」를 각각 더블 클릭 해 2개의 컴포넌트를 기동합니다. 기동하면, 아래 그림과 같은 2개 의 콘솔 화면이 열립니다.
컴포넌트가 기동하지 않는 경우, 몇개의 원인을 생각할 수 있습니다.
rtc.conf 의 설정에 문제가 있어, 기동할 수 없는 케이스가 있습니다. 샘플 컴포넌트의 인스톨 폴더(인스톨시에 아무것도 지정하지 않았던 경우 C:\Program Files\OpenRTM-aist\1.0\examples\Python\SimpleIO) 의 「rtc.conf」를 열어 설정을 확인해 주십시오. 예를 들면 corba.endpoint/corba.endpoints 등의 설정이 현재 실행중의 PC의 호스트 주소와 미스매치를 일으키고 있는 경우 등은 CORBA가 이상 종료합니다.
이하와 같은 최저한의 rtc.conf로 설정 다시 하고 시험해 보십시오.
corba.nameservers: localhost
시작 메뉴 폴더로부터, RTSystemEditor를 기동합니다. RTSystemEditor는 「OpenRTM-aist」>>「Python」>>「tools」>>「RT SystemEditor」에 있습니다.
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로 포트끼리를 접속해, 액티브하는 것으로 테스트 할 수 있습니다.
부속되어 있는 컴포넌트의 리스트와 간단한 설명을 이하에 나타냅니다.
ConsoleIn.py | 콘솔로부터 입력된 수치를 OutPort로부터 출력한다. ConsoleOut.py와 연결해 사용 |
ConsoleOut.py | InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트. ConsoleIn.py와 연결해 사용 |
SeqIn.py | 랜덤인 수치(Short,Long,Float,Double와 그 순서형)을 출력하는 컴포넌트. SeqOut.py와 연결해 사용 |
SeqOut.py | InPort에 입력되는 수치(Short,Long,Float,Double와 그 순서형)을 표시. SeqIn.py와 연결해 사용 |
MyServiceProvider.py | MyService형의 서비스를 제공하는 컴포넌트. MyServiceConsumer.py와 연결해 사용 |
MyServiceConsumer.py | MyService형의 서비스를 제공하는 컴포넌트. MyServiceProvider.py와 연결해 사용 |
ConfigSample.py | Configuration의 샘플. RTSystemEditor에서 Configuration를 변경해 Configuration의 변경에 대해 이해하기 위한 샘플. |
TkMobileRobotSimulator.py | 모바일 로봇의 간이 시뮬레이터. 로봇의 속도를 InPort로 받아 이동 후의 위치를 OutPort로부터 출력한다. |
NXTRTC.py | LEGO LEGO MINDSTORM에서 작성한 모바일 로봇을 제어하기 위한 샘플. InPort에서 속도를 받아 적외선 센서와 현재 위치를 각각 OutPort로부터 출력한다. |
AutoControl.py | 모바일 로봇용의 속도를 출력한다. 측위 센서의 데이터를 InPort로 받아 로봇의 속도를 계산해 OutPort로부터 출력한다. |
Composite.py | Composite용의 샘플. Motor,Controller, Sensor를 포함 하는 컴포넌트. Composite의 사용 방법을 이해하기 위한 샘플. |
Motor.py | Composite 컴포넌트용의 샘플. Composite의 자(子)요소로서 사용. |
Controller.py | Composite 컴포넌트용의 샘플. Composite의 자(子)요소로서 사용. |
Sensor.py | Composite 컴포넌트용의 샘플. Composite의 자(子)요소로서 사용. |
Slider.py | Tk를 이용한 GUI 컴포넌트의 샘플. Slider로 지정한 값을 OutPort로부터 출력한다. |
TkMotorComp.py | Tk를 이용한 GUI 컴포넌트의 샘플. InPort로 받은 값을 GUI로 표시한다. |
TkLRFViewer.py | Tk를 이용한 GUI 컴포넌트의 샘플. 레이저 레인지 센서 등에서 출력되는 데이터를 표시한다. |
TkJoystickComp.py | Tk를 이용한 GUI 컴포넌트의 샘플. 간이 조이스틱 컴포넌트. |