UNIX/Linux판 Java-0.4 샘플 컴포넌트

OpenRTM-aist-Java-0.4의 샘플에 대해

 본장에서는 OpenRTM-aist-Java-0.4에 부속의 샘플에 대해 설명합니다. 샘플을 테스트하는 경우는 각 샘플 컴포넌트를 기동하기 전에 start-orbd.sh를 실행해 네임 서비스를 기동해 주십시오. start-orbd.sh를 실행하려면 터미널을 기동해, 커런트를「examples」디렉토리로 옮기고 나서, 다음과 같이 하여 기동합니다.

 $ ./start-orbd.sh
덧붙여 본장에서는 RtcLink가 인스톨 된 환경인 것을 가정하여 설명하고 있습니다. RtcLink의 인스톨에 대한 자세한 것은 RtcLink 인스톨 을 참조해 주십시오(일부의 샘플은 RtcLink가 없어도 동작합니다).
※이미 RtcLink를 인스톨 하고 있다면

 새로운 OpenRTM-aist-Java-0.4에서는 RtcLink 0.4.0은 사용할 수 없게 되었습니다. 이미, Eclipse상에 RtcLink 플러그 인을 인스톨 하고 있는 분은 OpenRTM-aist-Java-0.4를 사용하는 경우, 반드시 RtcLink도 0.4.1에 업데이트 해주십시오.

참고:

 → ''FAQ:'' Q. RtcLink상에서 RTC의 포트가 표시되지 않을 경우(Java버전)

SimpleIO

 DataInPort, DataOutPort의 사용 방법을 나타낸 샘플입니다. ConsoleIn.sh와 ConsoleOut.sh를 실행하는 것으로 샘플 컴포넌트가 기동합니다. Port간을 접속하면 ConsoleIn측에서 입력한 숫자가, ConsoleOut 측에 표시됩니다. Port간은 RtcLink를 이용하는 것 외에 Connector.sh를 실행하는 것으로 접속할 수 있습니다.


java_simpleio0.png
SimpleIO 실행예(RtcLink 접속 화면)



UnixJavaConsoleIn.png
SimpleIO 실행예(ConsoleIn)



UnixJavaCosoleOut.png
SimpleIO 실행예(ConsoleOut)


사용법

 SimpleIO의 샘플은 ConsoleIn로 입력된 숫자를 데이터 포트로부터 ConsoleOut에 보내고, ConsoleOut 측에도 같은 숫자를 표시시키는 샘플입니다. ConsoleIn의 화면에서 숫자를 입력해 주십시오. 그렇다면 ConsoleOut에서 입력한 숫자가 출력됩니다.
- 방법 1:Connector.sh를 사용하는 방법(※이 경우, RtcLink는 불필요)
    • ConsoleIn와 ConsoleOut의 양컴포넌트를 기동합니다.
    • Connector.sh를 실행합니다.
    • ConsoleIn의 화면에 「Please input number:」라고 메세지가 나오면 숫자를 입력합니다.
    • ConsoleOut의 화면에 그 숫자가 표시됩니다.
  • 방법 2:RtcLink를 사용하는 방법
    • RtcLink를 기동하고 SystemEditor을 열기.→RtcLink의 사용 방법의 상세한 것은RtcLink 를 참조
    • ConsoleIn와 ConsoleOut의 양컴포넌트를 기동합니다.
    • RtcLink의 NameServiceView에 양컴포넌트가 나타나므로 그것들을 SystemEditor상에 드래그 합니다.
    • 양컴포넌트의 포트를 연결합니다.(윗 그림 SimpleIO 실행예를 참조)
    • 어느 쪽인가의 컴포넌트를 마우스 오른쪽 버튼을 클릭해 「All Activate」를 선택.
    • ConsoleIn의 화면에 「Please input number:」라고 메세지가 나오면 숫자를 입력합니다.
    • ConsoleOut의 화면에 그 숫자가 표시됩니다.


SeqIO

 DataInPort, DataOutPort의 사용 방법을 나타낸 샘플입니다. SeqIn.sh와 SeqOut.sh를 실행하는 것으로 샘플 컴포넌트가 기동해, GUI 화면이 표시됩니다. SeqIn, SeqOut 모두 이하의 형태의 DataPort를 가지고 있습니다. TimedShort, TimedLong, TimedFLoat, TimedDouble, TimedShortSeq, TimedLongSeq, TimedFLoatSeq, TimedDoubleSeq 각 Port의 출력은 랜덤으로 결정하고 있어 각 Port간을 접속하면 SeqOut측의 출력치, SeqIn측의 입력치가 각각의 GUI 화면에 표시됩니다.(Port간의 접속에는 RtcLink를 이용하십시오.)


java_seqio0.png
SeqIO 실행예(RtcLink 접속 화면)



java_seqio1.png
SeqIO 실행예(SeqIn)



java_seqio2.png
SeqIO 실행예(SeqOut)


사용법

 SeqIO의 샘플은 SeqOut로부터 연속해 출력되는 수치 데이터를 데이터 포트로부터 SeqIn에 보내, GUI상에 표시시키는 샘플입니다. SeqOut와 SeqIn의 대응하는 포트를 RtcLink상에서 접속해 주십시오. 양컴포넌트를 액티베이트 하면 SeqOut 뿐만이 아니라 SeqIn의 GUI상의 수치도 연속적으로 변화해, 데이터 포트의 입출력을 관찰할 수 있습니다.
  • 순서
    • RtcLink를 기동하고 SystemEditor을 열기.→RtcLink의 사용 방법의 상세한 것은 RtcLink 를 참조
    • SeqOut와 SeqIn의 양컴포넌트를 기동합니다.
    • RtcLink의 NameServiceView에 양컴포넌트가 나타나므로, 그것들을 SystemEditor상에 드래그 합니다.
    • 양컴포넌트의 대응 포트를 연결합니다.(윗 그림 SeqIO 실행예를 참조)
    • 어느 쪽인가의 컴포넌트를 마우스 오른쪽 버튼 클릭해, 「All Activate」를 선택.

SimpleService

 ServicePort의 사용 방법을 나타낸 샘플입니다. 이하에 나타내는 IDL를 사용해 서비스를 정의하고 있습니다.

 typedef sequence<string> EchoList;
 typedef sequence<float> ValueList;
 
 interface MyService
 {
   string echo(in string msg);
   EchoList get_echo_history();
   void set_value(in float value);
   float get_value();
   ValueList get_value_history();
 };

MyServiceConsumer.sh와 MyServiceProvider.sh를 실행하는 것으로 샘플 컴포넌트가 기동합니다. Consumer측 컴포넌트를 Activate 하면 콘솔에 이용 가능한 커멘드 리스트가 표시됩니다. 각 커멘드를 테스트해 보십시오.(Port간의 접속에는 RtcLink를 이용하십시오.)


java_simplesvc0.png
SimpleService 실행예(RtcLink 접속 화면)


UnixJavaMyServiceConsumer.png
SimpleService 실행예(MyServiceConsumer)



UnixJavaMyServiceProvider.png
SimpleService 실행예(MyServiceProvider)



사용법

 SimpleService는 MyServiceConsumer로부터 커멘드를 보내 MyServiceProvider로 그것을 처리하는 샘플입니다(※정확하게는, 커멘드의 해석은 Consumer측이며 Provider측의 함수를 호출하는 형태로 구현되고 있습니다). MyServiceConsumer와 MyServiceProvider의 대응하는 포트를 RtcLink상에서 접속해 주십시오. 양컴포넌트를 액티베이트 하면(Activate 하는 것은 Consumer측 컴포넌트만으로도 좋다) Consumer측 prompt에 커멘드 일람이 표시되므로 적당 커멘드를 입력해 주십시오. Provider측의 응답을 prompt상에서 관찰할 수 있습니다.
  • 순서
    • RtcLink를 기동하고 SystemEditor을 열기.→RtcLink의 사용 방법의 상세한 것은RtcLink 를 참조
    • MyServiceConsumer와 MyServiceProvider의 양컴포넌트를 기동합니다.
    • RtcLink의 NameServiceView에 양컴포넌트가 나타나므로 그것들을 SystemEditor상에 드래그 합니다.
    • 양컴포넌트의 대응 포트를 연결합니다.(윗 그림 SimpleService 실행예를 참조)
    • 어느 쪽인가의 컴포넌트를 마우스 오른쪽 버튼 클릭해, 「All Activate」를 선택.(이 경우는 Consumer측 컴포넌트를 Activate 하는 것만으로도 동작합니다.)
    • Consumer측 prompt에 커멘드를 입력.
      - 커멘드
    • echo <message>:임의의 <message>을 에코
    • set_value <value>:임의의 <value>을 Provider측에 세트
    • get_value:현재 Provider 측에 세트 되고 있는 값을 취득해 표시
    • get_echo_history:지금까지의 에코 메세지의 이력을 Provider측으로부터 취득
    • get_value_history:지금까지 세트 해 온 값의 이력을 Provider측으로부터 취득


ConfigSample

 RT컴포넌트의 컨피그레이션 세트의 사용 방법을 나타낸 샘플입니다. ConfigSample.sh를 실행하는 것으로 샘플 컴포넌트가 기동합니다. 컴포넌트가 정상적으로 기동되면 컨피그레이션 세트가 미리 설정된 상태로 되어 있습니다. RtcLink를 이용해 컨피그레이션 세트를 확인해 보십시오.


java_configsample0.png
ConfigSample 실행예



사용법

 RtcLink의 ConfigrationView로 선택, 설정한 ConfigrationSet에 따른 데이터 세트를 prompt상에 표시해, 끊임 없이 표시 갱신을 합니다.
  • 순서
    • RtcLink를 기동하고 SystemEditor을 열기.→RtcLink의 사용 방법의 상세한 것은 RtcLink 를 참조
    • ConfigSample 컴포넌트를 기동합니다.
    • RtcLink의 NameServiceView에 이 컴포넌트가 나타나므로 SystemEditor상에 드래그 합니다.

- 조작
    • RtcLink의 ConfigrationView로부터 적당한 ConfigrationSet(default, mode0, mode1)를 선택합니다.
    • 필요가 있으면, value를 변경합니다.
    • 「Apply」버튼을 누른다.



※ RtcLink상의 ConfigurationView로 mode0를 선택했을 경우, 본래 「일본어 테스트」라고 표기되는 부분이 글자가 깨져 버리는 일이 있습니다. 이 경우, examples/RTMExamples/ConfigSample에 있는 rtc.conf를 다음과 같이 편집해 주십시오.

 rtc.conf의 맨 마지막 줄
 example.ConfigSample.config_file: ./RTMExamples/ConfigSample/configsample.conf
 이라고 되어 있는 부분을 다음과 같이 수정합니다.
 example.ConfigSample.config_file: ./RTMExamples/ConfigSample/configsample.conf.euc

ConfigSample의 설정 파일 configsample.conf에는 이 그 밖에 문자 코드에 대응시키기 위해, configsample.conf.sjis와 configsample.conf.euc가 준비되어 있습니다.



ExtTrigger

 RT컴포넌트 외부로부터의 입력(이벤트)에 의해 처리를 실행하는 ExecutionContext의 샘플입니다. ExtConsoleIn.sh와 ExtConsoleOut.sh를 실행하는 것으로 샘플 컴포넌트가 기동합니다. 양컴포넌트를 기동 후, ExtConnector.sh를 실행해 양컴포넌트의 Port간을 접속해 주십시오.


UnixJavaExtConsoleIn.png
ExtTrigger 실행예(ExtConsoleIn)



UnixJavaExtConsoleOut.png
ExtTrigger 실행예(ExtConsoleOut)



UnixJavaExtConnector.png
ExtTrigger 실행예(ExtConnector)


Port간의 접속이 성공하면, ExtConnector를 실행한 콘솔에 어느 컴포넌트의 처리를 진행시키는지 선택하는 메뉴가 표시됩니다. 각 컴포넌트는 이 콘솔에 입력된 값에 따라 처리 1주기씩 진행시켜 나갑니다.



GUIIn

 GUI 화면을 가진 RT컴포넌트의 샘플입니다. GUIIn.sh를 실행하는 것으로 샘플 컴포넌트가 기동합니다.


java_guiin0.png
GUIIn 실행예(GUIIn)



GUIIn 실행예(RtcLink 접속 화면)


각 GUI 요소와 Port간의 관계는 이하대로입니다.
슬라이더(상)
TimedLong형 DataOutPort
텍스트·박스(중)
TimedString형 DataOutPort
스피너(하)
TimedDouble형 DataOutPort
각 Port는 해당하는 Port간을 접속 후, GUI 요소옆의 체크 박스를 ON로 하는 것으로 입력 데이터를 송신합니다.(Port간의 접속에는 RtcLink를 이용하십시오. 출력 데이터의 확인에는 SeqIn등의 다른 샘플을 이용하십시오.)

사용법

 GUIIn 컴포넌트의 GUI 화면에서 체크를 넣은 컨트롤(슬라이더, 스피너)을 조작하면, 그 값의 변화에 따라서 SeqIn의 GUI 화면상의 값도 변화합니다.
  • 순서
    • RtcLink를 기동하고 SystemEditor을 열기.→RtcLink의 사용 방법의 상세한 것은 RtcLink 를 참조
    • GUIIn와 SeqIn의 양컴포넌트를 기동합니다.
    • RtcLink의 NameServiceView에 이러한 컴포넌트가 나타나므로, 둘 모두 SystemEditor상에 드래그 합니다.
    • 양컴포넌트의 대응 포트를 연결합니다.(윗 그림 GUIIn 실행예를 참조)
    • 어느 쪽인가의 컴포넌트를 마우스 오른쪽 버튼 클릭해, 「All Activate」를 선택