인스톨 또는 빌드가 정상적으로 종료되면, 샘플로 동작 테스트 를 합니다. 샘플은, 통상은 이하의 장소에 있습니다.
샘플 컴포넌트 세트 SimpleIO를 사용하고, OpenRTM-aist가 정상적으로 빌드·인스톨 되어 있는지를 확인합니다.
RT컴포넌트 ConsoleInComp, ConsoleOutComp로 구성되는 샘플 세트 입니다. ConsoleInComp는 콘솔로부터 입력된 수치를 OutPort로부터 출력하는 컴포넌트, ConsoleOutComp는 InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트입니다. 이것들은 가장 Simple하게 I/O를 예로 보여주는 샘플입니다. ConsoleInComp의 OutPort로부터 ConsoleOutComp의 InPort에 접속해 2개의 컴포넌트를 액티브(Activate) 하는 것으로 동작합니다.
이하는 msi 인스톨러로 OpenRTM-aist를 인스톨 한 환경에서, 시작 메뉴로부터 각종 프로그램을 기동하는 것을 전제로 설명합니다. 시작 메뉴 로부터 OpenRTM-aist를 마우스 오른쪽 버튼을 클릭해 「열기」로 폴더를 열어, 각 프로그램 에 액세스 하면 편리합니다.
우선, 컴포넌트의 참조를 등록하기 위한 네임서버를 기동합니다. 「OpenRTM-aist」>>「tools」>>「Start Naming Service」에 있는 바로가기 를 클릭해 네임서버를 기동합니다.
기동하면, 이하와 같은 콘솔 화면이 열립니다.
네임서버의 콘솔 화면이 열리지 않는 케이스가 있습니다. 이 경우 예상되는 몇개의 원인을 아래와 같이 대처해 주십시오.
openrtm.org가 제공하는 msi 인스톨러에는 omniORB가 포함되어 있습니다만, 언인스톨 을 선택하면, omniORB를 인스톨 하지 않고 OpenRTM-aist를 인스톨 할 수도 있습니다.
또, 수동으로 인스톨 했을 경우에는 omniORB가 들어가 있지 않은 경우도 있기 때문에 omniORB가 인스톨 되어 있는지 확인해 주십시오.
「Start Naming Service」는 %RTM_ROOT%\bin\rtm-naming.bat에 있는 배치파일 로부터 네임서버(omniNames.exe)를 기동합니다. 이 때, omniNames.exe 를 참조하기 위해서 환경 변수 OMNI_NAMES를 이용하고 있습니다. 통상 인스톨러로 OpenRTM-aist를 인스톨 했을 경우에는 OMNI_ROOT 환경 변수가 자동으로 설정되지만 어떠한 이유로 환경 변수가 무효가 되어 있거나, 수동으로 인스톨 했을 경우 등은 환경 변수가 설정되어 있지 않을 경우가 있습니다.
환경 변수 OMNI_ROOT가 설정되어 있는 것을 확인해 주세요. 환경편소는,유저명이 2바이트 문자인 경우 로그 출력하는 폴더를 적절히 설정하지 못하고 omniNames.exe의 기동에 실패하는 경우가 있습니다. 그 경우, 환경 변수 TEMP를 2바이트 문자를 포함하지 않는 장소로 설정하는 것으로 수정하는 경우가 있습니다. 임의의 디렉토리(이하의 케이스에서는 C:\temp)를 작성해, 그곳을 환경 변수 TEMP 가 가리키도록 rtm-naming.bat의 선두 부분에서 이하와 같이 설정합니다.
set cosnames="omninames" set orb="omniORB" set port=%1 rem set OMNIORB_USEHOSTNAME=localhost set PATH=%PATH%;%OMNI_ROOT%\bin\x86_win32 set TEMP=C:\temp
또, 드문 경우이지만 호스트명이나 주소의 설정의 문제로 기동이 잘 되지 않는 경우가 있습니다. 이 경우 이용하고 있는 PC의 IP주소를 omniNames.exe에 가르쳐 주면 잘 되는 경우가 있습니다. 환경 변수 OMNIORB_USEHOSTNAME를 이하와 같이 설정합니다(이하는 자신의 호스트의 IP주소 가 192.168.0.11의 경우인 예).
set cosnames="omninames" set orb="omniORB" set port=%1 set OMNIORB_USEHOSTNAME=192.168.0.11 set PATH=%PATH%;%OMNI_ROOT%\bin\x86_win32
네임서버 기동 후, 적당한 샘플 컴포넌트를 기동합니다. 방금전 열어 둔 시작 메뉴 폴더의, 「OpenRTM-aist」>>「C++」>> 「components」>>「examples」를 열면, 그림과 같이 몇개의 컴포넌트가 있습니다.
여기에서는, 「ConsoleInComp.exe」 「ConsoleOutComp.exe」를 각각 더블 클릭 해 2개의 컴포넌트를 기동합니다. 기동하면, 아래 그림과 같은 2개 의 콘솔 화면이 열립니다.
컴포넌트가 기동하지 않는 경우, 몇개의 원인을 생각할 수 있습니다.
rtc.conf의 설정에 문제가 있어, 기동할 수 없는 케이스가 있습니다. 상기 시작 메뉴 폴더의 「rtc.conf for examples」를 열어 설정을 확인해야 합니다. 예를 들면, corba.endpoint/corba.endpoints 등의 설정이 현재 실행중의 PC의 호스트 주소와 미스매치를 일으키고 있는 경우 등은 CORBA가 이상종료합니다.
이하와 같은 최저한의 rtc.conf로 설정 다시 하고 시험해 보십시오.
corba.nameservers: localhost
라이브러리등이 적절히 인스톨 되어 있지 않음·설정되어 있지 않은 등의 원인으로 라인 타임 에러가 발생하는 경우가 있습니다.-재기동해 본다- OpenRTM-aist를 모두 언인스톨해 재차 인스톨 해 보는 등을 실시하는 것으로 개선되는 경우도 있습니다.
시작 메뉴 폴더로부터, RTSystemEditor를 기동합니다. RTSystemEditor는 「OpenRTM-aist」>>「C++」>>「tools」>>「RT System Editor」에 있습니다.
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로 포트끼리를 접속해, 액티브하는 것으로 테스트 할 수 있습니다.
부속되어 있는 컴포넌트의 리스트와 간단한 설명을 이하에 나타냅니다.
| ConsoleInComp.exe | 콘솔로부터 입력된 수치를 OutPort로부터 출력한다. ConsoleOutComp.exe와 연결해 사용 |
| ConsoleOutComp.exe | InPort에 입력된 수치를 콘솔에 표시하는 컴포넌트.ConsoleInComp.exe와 연결해 사용 |
| SequenceInComp.exe | 랜덤인 수치(Short,Long,Float,Double와 그 순서형)을 출력하는 컴포넌트.SequenceOutComp.exe와 연결해 사용 |
| SequenceOutComp.exe | InPort에 입력되는 수치(Short,Long,Float,Double와 그 순서형)을 표시.SequenceInComp.exe와 연결해 사용 |
| MyServiceProviderComp.exe | MyService형의 서비스를 제공하는 컴포넌트.MyServiceConsumerComp.exe와 연결해 사용 |
| MyServiceConsumerComp.exe | MyService형의 서비스를 제공하는 컴포넌트.MyServiceProviderComp.exe와 연결해 사용 |
| ConfigSampleComp.exe | Configuration의 샘플.RTSystemEdiotr에서 Configuration을 변경해 Configuration의 변경에 대해 이해하기 위한 샘플. |
| USBCameraAcquireComp.exe | USB 카메라로부터 화상을 취득해 OutPort로부터 출력하는 컴포넌트.USBCameraMonitor.exe와 연결해 사용 |
| USBCameraMonitor.exe | InPort에 입력되는 화상을 화면에 표시하는 컴포넌트.USBCameraAquire.exe와 연결해 사용 |