RT컴포넌트 작성 (Java)

개요

OpenRTM-aist-Java 개요

 OpenRTM-aist란, 독립 행정법인 산업기술 종합 연구소·지능 시스템 연구부문·태스크 인텔리젼스 연구 그룹이 실장·배포·점검을 실시하고 있는 RT미들웨어의 구현 예입니다. RT미들웨어 및 OpenRTM-aist는 로봇의 여러가지 기능 요소를 RT컴포넌트로 불리는 부품 단위로 분할해, 이것들을 자유롭게 조합하는 것으로 다양한 로봇 시스템의 구축을 가능하게하기 위한 소프트웨어 플랫폼입니다. 현재 OMG(Object Management Group)에서 사양 책정중의 로봇용 미들웨어 사양(The Robotic Technology Component Specification)에도 준거하고 있습니다.
OpenRTM-aist-Java는, 지금까지 C++언어 전용으로 제공되고 있던 OpenRTM-aist를 Java 언어에 이식한 것입니다. C++판 OpenRTM-aist 호환의 인터페이스를 갖기때문에 Java 언어를 사용해 개발한 RT컴포넌트와 C++언어를 이용해 개발한 RT컴포넌트의 상호 운용이 가능합니다.

대상

 본문서는 OpenRTM-aist-Java를 이용하고, Java언어판 RT컴포넌트를 개발하는 방법에 대해 설명하고 있습니다. 덧붙여 본문서에서는 Java언어에 대해서는 기본 지식을 이미 가지고 있는 분을 대상으로 하고 있습니다.

동작환경

 OpenRTM-aist-Java의 동작에 필요한 환경은 이하대로입니다.


표 1-1 동작환경

환경 비고
Java Development Kit 5.0 (JDK 5)
(http://java.sun.com/products/archive/j2se/5.0_14/index.html )
주의:Java1.4에서는 동작하지 않습니다.


 OpenRTM-aist-Java의 인스톨 방법의 상세하게 따라서, 「OpenRTM-aist-Java 인스톨 메뉴얼(UNIX)」 혹은 「OpenRTM-aist-Java 인스톨 메뉴얼(Windows)」를 참조해 주십시오. 특히, 다음의 것을 확인하고 나서 이하의 작업을 해주십시오.
  • 「java -version」를 실행했을 때의 버전이 상기의 JDK와 일치
  • 환경 변수 RTM_JAVA_ROOT에 OpenRTM-aist-Java의 라이브러리에의 경로(베이스 패스)가 설정 되어 있는 것
  • <RTM_JAVA_ROOT>에 설정 되는 경로의 바로 아래의 디렉토리 「jar」내에 라이브러리 파일 OpenRTM-aist-0.4.x.jar와 commons-cli-1.1.jar가 존재(클래스 패스로 설정하기 위해)※
     ※ 여기 를 참고에 독자적인 클래스 패스의 설정도 가능합니다.

◆참고:

 여기에서는, Java버전으로 RT컴포넌트를 개발하는 경우의 순서를 소개합니다. 샘플로서 이하와 같은 사양의 컴포넌트를 채택합니다.

표 2-1 샘플 컴포넌트의 사양

기본 프로파일
컴포넌트명 sample
설명 SampleComponent
버젼 1.0
벤더 AIST
카테고리 example
컴포넌트의 형태 DataFlowComponent
액티버티 타입 SPORADIC
최대 인스턴스수 5
데이터 InPort
명칭 in
형 TimedLong
서비스 Provider
IDL 패스 IDLs/MyService.idl ※
포트명 MySvcPort
서비스명 myservice0
서비스형 MyService
컨피그레이션 파라메터
명칭 multiply
형 int
디폴트치 1


※ MyService.idl는 적당한 에디터를 이용해 이하와 같은 IDL 파일을 작성합니다. 또, 위의 표 중 「IDL 패스」는 MyService.idl의 경로를 기술합니다. Windows의 경우는, 이 「IDL 패스」가 MyService.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();
 };
MyService.idl


또한 위의 MyService.idl은 OpenRTM-aist-0.4-Java에 부속되는 샘플의 「examples/Java/RTMExamples/SimpleService」디렉토리내에 있는 것과 동일합니다.

GUI를 이용했을 경우 RT컴포넌트의 개발 순서

 GUI 툴인 RtcTemlate를 이용하고, RT컴포넌트를 개발 순서를 설명합니다. RtcTemplate의 상세한 것에 대하여는RtcLink·RtcTemplate의 인스톨 및RtcTemplate를 참조해 주십시오.

RtcTemplate와 JDT의 연계

  • Eclipse를 기동  RT컴포넌트의 개발은 통합 개발 환경 Eclipse의 프로젝트로부터 실시하는 것도 가능합니다. 새로운 워크 스페이스를 지정해 Eclipse를 기동합니다.(이때 「Welcome」이라고 하는 뷰가 나타나는 경우가 있습니다만, 이것은 닫습니다.)
    CheckedWorkSpace2.png
    그림 2-2 신규의 Workspace를 지정

  • Java 프로젝트 파일의 작성
     상부 메뉴로부터「File」-「New」-「Project」를 선택합니다.
    MakeProjectForBulid1.png
    그림 2-3 빌드용 프로젝트의 작성 1

 「New Project」위저드내에서「Java Project」를 선택해,「Next」버튼을 누릅니다.

MakeProjectForBulid2.png
그림 2-4 빌드용 프로젝트의 작성 2


: 「New Project」위저드의 다음의 스텝에서 작성하는「프로젝트명」을 입력합니다.「JDK 준거」그룹내의 설정이「5.0」이상(혹은 1.5이상)이 설정 되고 있는 것을 확인한 다음,「Next」버튼을 누릅니다(그림 2-5). 한편, 환경에 따라서는 「JDK 준거」프레임이 「JRE」프레임이 되고 있어 풀다운 메뉴로부터 JDK5(혹은 JDK1.5)가 선택할 수 없는 경우가 있습니다(그림 2-5'). 그 경우는 여기 를 참조해 JDK를 선택할 수 있도록 합니다.|

MakeProjectForBulid3.png
그림 2-5 빌드용 프로젝트의 작성 3


PullDownMenu_Default.png
그림 2-5'환경에 따라 JDK를 선택할 수 없는 경우


참고:
 → ''FAQ'': Q. 신규 Java 프로젝트가 JDK6(1.5)로 작성되지 않는다.



 표시된「New Java Project」화면에서 생성하는 프로젝트의 각종 설정을 하고「Finish」버튼을 클릭합니다.

ProjectSettings.png
그림 2-6 프로젝트의 각종 설정을 해 종료

 지정한 프로젝트가 생성되어「Package Explorer」에 표시됩니다.

PackageExplorerView.png
그림 2-7 Package Explorer의 표시예



-자동 빌드를 무효
 Eclipse의 도구 모음의 [Project]→[Build Automatically]가 설정 되어 있는 경우는, 체크를 무효로 해두는 것이 좋습니다.

※프로젝트 작성시의 각종 옵션, 설정 등 Eclipse에 관한 자세한 것은, Eclipse의 사이트(http://www.eclipse.org/ )등을 참조해 주십시오.



RtcTemplate를 이용한 형태 코드의 생성

  • GUI판 RtcTemplate 에디터의 기동
     RtcTemplate의 에디터 화면을 기동합니다.

참고:
 → RtcTemplate을 직접 기동하는
※ RtcTemplate의 사용 방법등에 대해서는,RtcTemplate를 참조해 주십시오.


  • RtcTemplate 에디터로 설정 항목을 편집
     GUI판의 RtcTemplate를 사용해''표2-1'' 의 사양을 가지는 RT컴포넌트의 형태 코드를 생성시키는 경우의 설정을 이하에 나타냅니다.
    GUIrtc-templateSetting1.png
    GUIrtc-templateSetting2.png
    그림 2-8 GUI RtcTemplate의 설정


:주:Windows의 경우, 상기「Output directory」나 「IDL path:」 등은 전체 경로로 기술할 것|

  • 「Generate」버튼으로 코드를 생성
     「Generate」버튼을 눌러 코드를 생성합니다. 이때 반드시 RtcTemplate 에디터 최하단의「Output directory」란에, 먼저 생성한 프로젝트의 디렉토리를 지정해 주십시오(※그림 2-8에서는 「temp」).


GenCode.png
그림 2-9 코드를 생성


  • 생성된 각종 파일이 프로젝트에 추가
     「Output directory」로서 지정한 디렉토리에 이하의 파일이 생성됩니다.
    • Sample.java ··················· Component Profile, 초기화 처리등을 정의한 클래스
    • Sampleimpl.java ··············· RT컴포넌트 본체 클래스
    • SampleComp.java ············· RT컴포넌트 기동용 클래스
    • MyServiceSVC_impl.java ······· 서비스 실장 클래스
    • build_Sample.xml ·············· RT컴포넌트 빌드 파일
    • README.Sample ··············  Read Me파일


: 「Output directory」란에 프로젝트의 디렉토리를 지정하는 것으로써, 생성된 각종 파일이 프로젝트에(자동적으로) 추가되게 됩니다.|

Done.png
그림 2-10 각종 파일의 추가


 
※코드 생성이 완료해도 생성된 파일의 내용이 프로젝트의「Package Exploer」에 반영되어 있지 않은 경우가 있습니다. 대상 프로젝트에서 마우스 오른쪽 버튼을 클릭해 표시되는 context menu내에서「Refresh」을 선택해 정보의 갱신을 실시할 수 있습니다.
UpdateProject.png
그림 2-11 프로젝트 표시의 갱신


※서비스 포트를 정의하고 있는 RT컴포넌트의 경우, Rtctemplate가 생성한 파일만으로는 에러가 표시됩니다. 이것은 해당하는 파일이 IDL 파일로부터 자동 생성되는 클래스를 이용하고 있기 때문입니다. 이러한 클래스는 빌드 실행시에 자동 생성됩니다.


※클래스 패스가 유효가 되는 장소에, OpenRTM-aist-Java가 인스톨 되어 있지 않은 경우 에러가 표시됩니다. 이 경우, 프로젝트의 프로퍼티로부터 OpenRTM-aist-Java의 인스톨 폴더(디렉토리)를 지정해 주세요.

ProjectContextMenu.png
그림 2-12 프로젝트에서 마우스 오른쪽 버튼 클릭


ProjectProperty.png
그림 2-13 OpenRTM-aist-Java에의 패스를 추가



  • IDL 파일을「Output directory」에 추가
     RtcTemplate 에디터상의 「IDL path:」로 지정한 IDL 파일을, 생성된 Java 소스 코드가 배치되는「Output directory」에 수동으로 북사합니다.

    Eclipse를 이용한 빌드

  • Ant 빌드
     패키지·익스플로러내의 build_Sample.xml에서 마우스 오른쪽 버튼을 클릭해 표시되는 context menu나 「Run」-「Ant Build」를 선택하는 것으로 대상 RT컴포넌트의 빌드를 할 수 있습니다. 자작의 jar 라이브러리 등을 사용할 필요가 있거나 OpenRTM-aist를 다른 장소에 인스톨 했다는 등의 사정으로 클래스 패스를 임의의 장소로 설정해 빌드 하려면 여기 를 참조해 주십시오.
    BuildProject.png
    그림 2-14 프로젝트 빌드


BuildProject-consoleview.png
그림 2-15 빌드 실행시 콘솔 화면


빌드가 성공하면, 프로젝트내의「classes」디렉토리내에 class 파일이 생성됩니다.




:참고:|
 → ''FAQ'': Q. 임의의 폴더에 클래스 패스를 설정해 Ant 빌드를 실시하는 방법은?



작성한 RT컴포넌트의 실행

  • rtc.conf의 작성
     프로젝트내의「classes」에 이하와 같은 내용의 파일rtc.conf를 작성해 둡니다.


 corba.nameservers: localhost
 naming.formats: %n.rtc
rtc.conf



 또한 위의 rtc.conf는 OpenRTM-aist-0.4-Java에 부속되어 있는 샘플의 「examples/Java/RTMExamples/SimpleService」디렉토리내에 있는 것과 동일합니다.


-네임서버와 RtcLink의 기동
 OpenRTM-aist-0.4-Java에 부속의 툴로 「bin」디렉토리내에 있는 start-orbd.vbs를 더블 클릭(Windows) 하거나 start-orbd.sh를 실행(UNIX)해, 네임서버를 기동시킵니다. 또, RtcLink를 기동시킵니다.
    • 참고:
      • 네임서버의 기동(UNIX) , 네임서버의 기동(Windows)
      • RtcLink의 기동

        -RT컴포넌트의 실행
         커멘드 prompt 혹은 터미널을 기동하고, 앞에서 설명한「classes」디렉토리를 현재 디렉토리로 합니다.
        --UNIX계 시스템의 경우
         $ java -classpath .:$RTM_JAVA_ROOT/jar/OpenRTM-aist-0.4.1.jar:$RTM_JAVA_ROOT/jar/commons-cli-1.1.jar SampleComp
         
         혹은, 예를 들어 bash의 경우 등은, 위의 커멘드를 분할
         
         $ export CLASSPATH=.:$RTM_JAVA_ROOT/jar/OpenRTM-aist-0.4.1.jar:$RTM_JAVA_ROOT/jar/commons-cli-1.1.jar
         $ java SampleComp
    • Windows계 시스템의 경우
       > java -classpath ".;%RTM_JAVA_ROOT%\jar\OpenRTM-aist-0.4.1.jar;%RTM_JAVA_ROOT%\jar\commons-cli-1.1.jar" SampleComp
       
       혹은, 위의 커멘드를 분할
       
       > set CLASSPATH=.;%RTM_JAVA_ROOT%\jar\OpenRTM-aist-0.4.1.jar;%RTM_JAVA_ROOT%\jar\commons-cli-1.1.jar
       > java SampleComp
라는 하는 커멘드를 실행하면, RtcLink상에 RT컴포넌트가 나타납니다.



JavaSampleOnRtcLink.png
그림 2-16 Sample 컴포넌트를 실행에 성공했을 때의 RtcLink 상태





Java버전 RT컴포넌트의 상세

Java버전 RT컴포넌트의 구성

Java버전 RT컴포넌트의 소스 파일과 각 파일내에서 실행하고 있는 개략 기능과의 관계를 그림 3-1에 나타냅니다. 또, 비교를 위해서 C++버전 RT컴포넌트 및 OpenRTM-aist-0.3용 Java버전 RT컴포넌트의 구성도 표시합니다.

InnerRTcomponents.png
그림 3-1 RT컴포넌트의 구성


기존의 C++버전 RT컴포넌트와 Java판 RT컴포넌트를 비교했을 경우, 이하의 점이 다릅니다.
  • RT컴포넌트 기능의 실체의 분리 Java버전 RT컴포넌트에서는 기동 처리의 관계 등에서, RT컴포넌트 기능의 실체를 XXXImpl 클래스(그림 3-1에서는<Sample>Impl.java) 측에 이동하고 있습니다. 이것에 수반해, 원래의 RT컴포넌트 클래스(그림 3-1에서는<Sample>.java) 옆에서는 Component Profile 정의와 각종 컴포넌트 생성용 처리만이 남은 형태가 되고 있습니다.
  • 콜백 함수의 인터페이스화 C++버전 RT컴포넌트에서 콜백 함수로서 정의되고 있던 부분이, Java버전 RT컴포넌트에서는 인터페이스화 되고 있습니다.
    • ModuleInitProc:컴포넌트 기동 클래스 기동용 인터페이스
    • RtcNewFunc:RT컴포넌트 생성용 인터페이스
    • RtcDeleteFunc:RT컴포넌트 파기용 인터페이스
이 수정에 수반해, 컴포넌트 기동용 클래스는 위의 인터페이스의 구현을 실시할 필요가 있습니다.

Java버전 RT컴포넌트와 C++버전 컴포넌트의 차이점

데이터 포트

OpenRTM-aist-Java에서는 데이터를 주고 받기 위해서 홀더 클래스(DataRef 클래스)를 추가하고 있습니다. 그 때문에 데이터 포트의 정의 및 이용 방법이 이하와 같이 변경되고 있습니다.

Java버전 RT컴포넌트 C++버전 RT 컴포넌트
//InPort 의 정의
protected TimedShort m_in_val;
protected DataRef<TimedLong> m_in;
protected InPort<TimedLong> m_inIn;

//InPort의 등록
m_in_val = new TimedLong();
m_in = new DataRef<TimedLong>(m_in_val);
m_inIn = new InPort<TimedLong>(“in”, m_in);
registerInPort(TimedLong.class, “in”, m_inIn);

//InPort로부터 데이터 읽기
m_inIn.read();
입력 데이터 = m_in.v.data;
//InPort의 정의
TimedShort m_in;
InPort<TimedShort> m_inIn;

//InPort의 등록
m_inIn = new InPort<TimedLong>(“in”, m_in);
registerInPort(“in”, m_inIn);

//InPort로부터 데이터 읽기
m_inIn.read();
입력 데이터 = m_in.data;
//OutPort의 정의
protected TimedFloat m_out_val;
protected DataRef<TimedFloat> m_out;
protected OutPort<TimedFloat> m_outOut;

//OutPort의 등록
m_out_val = new TimedFloat();
m_out = new DataRef<TimedFloat>(m_out_val);
m_outOut = new OutPort<TimedLong>(“out”, m_out);
registerOutPort(TimedLong.class, “out”, m_outOut);

//OutPort에의 데이터 쓰기
m_out_val.data = 출력 데이터;
m_outOut.write();
//OutPort의 정의
TimedFloat m_out;
OutPort<TimedFLoat> m_outOut;

//OutPort의 등록
m_outOut = new OutPort<TimedFloat>(“out”, m_out);
registerOutPort(“out”, m_outOut);

//OutPort에의 데이터 쓰기
m_out.data = 출력 데이터;
m_outOut.write();

 데이터 포트 사용 방법에 대해서는「SeqIO」, 「SimpleIO」의 샘플을 참조해 주십시오.

 

서비스 포트

 OpenRTM-aist-Java에서는 서비스 포트를 사용하기 위한 보조 변수(<서비스명>Base)를 추가하고 있습니다. 이 때문에 서비스 포트의 정의, 이용 방법이 이하와 같이 변경되고 있습니다. 상세한 내용은 「SimpleService」의 샘플을 봐 주세요.

Java버전 RT컴포넌트 C++버전 RT컴포넌트
//Consumer의 정의
protected CorbaPort m_MyServicePort;
protected CorbaConsumer<MyService> m_myservice0Base
= new CorbaConsumer<MyService>(MyService.class);
protected MyService m_myservice0;

//Consumer의 등록
m_MyServiceRef = new CorbaPort(“MyService”);
m_MyServicePort.registerConsumer
(“myservice0”, ”MyService”, m_myservice0Base);
registerPort(m_MyServicePort);

//Consumer의 이용
m_myservice0 = m_myservice0Base._ptr();
m_myservice0.echo(argv[1]);
//Consumer의 정의
RTC::CorbaPort m_MyServicePort;
RTC::CorbaConsumer<MyService> m_myservice0;

//Consumer의 등록
m_MyServicePort = new RTC::CorbaPort(“MyService”);
m_MyServicePort.registerConsumer
(“myservice0”, “MyService”, m_myservice0);
registerPort(m_MyServicePort);

//Consumer의 이용
m_myservice0->echo(argv[1].c_str());
//Provider의 정의
protected CorbaPort m_MyServicePort;
protected MyServiceSVC_impl m_myservice0
= new MyServiceSVC_impl();

//Provider의 등록
m_MyServiceRef = new CorbaPort(“MyService”);
m_MyServicePort.registerProvider
(“myservice0”, ”MyService”, m_myservice0);
registerPort(m_MyServicePort);
//Provider의 정의
RTC::CorbaPort m_MyServicePort;
MyServiceSVC_impl m_myservice0;

//Provider의 등록
m_MyServicePort = new RTC::CorbaPort(“MyService”);
m_MyServicePort.registerProvider
(“myservice0”, “MyService”, m_myservice0);
registerPort(m_MyServicePort);



컨피그레이션

데이터 포트의 경우와 같이 컨피그레이션을 이용하는 경우도 데이터의 주고 받기를 위해 홀더 클래스를 이용하고 있습니다. 이 때문에 컨피그레이션·데이터의 정의, 이용 방법이 이하와 같이 변경되고 있습니다.

Java버전 RT컴포넌트 C++버전 RT컴포넌트
//Configuration Variable의 정의
protected IntegerHolder m_int_param0 = new IntegerHolder();
protected StringHolder m_str_param0 = new StringHolder();
protected VectorHolder m_vector_param0= new VectorHolder();

//파라메터의 바인드
bindParameter(“int_param0”, m_int_param_0, “0”);
bindParameter(“str_param0”, m_str_param_0, “sample”);
bindParameter(“vector_param0”, m_vector_param_0, “0.0, 1.0, 2.0, 3.0, 4.0”);
//Configuration Variable의 정의
int m_int_param0;
str::string m_str_param0;
str::vector<double> m_vector_param0;

//파라메터의 바인드
bindParameter(“int_param0”, m_int_param_0, “0”);
bindParameter(“str_param0”, m_str_param_0, “sample”);
bindParameter(“vector_param0”, m_vector_param_0, “0.0, 1.0, 2.0, 3.0, 4.0”);

컨피그레이션·데이터의 사용 방법에 대해서는「ConfigSample」의 샘플을 참조하십시오.
OpenRTM-aist-Java로, 컨피그레이션·데이터용 홀더로서 준비해 있는 홀더 클래스의 종류와 데이터형의 관계를 표 3-1에 나타냅니다.

표 3-1 컨피그레이션·데이터용 홀더형 대응 관계

데이터형 홀더·클래스
short jp.go.aist.rtm.RTC.util.ShortHolder
int jp.go.aist.rtm.RTC.util.IntegerHolder
long jp.go.aist.rtm.RTC.util.LongHolder
float jp.go.aist.rtm.RTC.util.FloatHolder
double jp.go.aist.rtm.RTC.util.DoubleHolder
byte jp.go.aist.rtm.RTC.util.ByteHolder
String jp.go.aist.rtm.RTC.util.StringHolder

C++버전 OpenRTM-aist와 같이 OpenRTM-aist-Java에 있어서도 유저가 정의한 임의의 형태에 대해 컨피그레이션·데이터용 홀더를 작성할 수 있습니다.
컨피그레이션·데이터용의 홀더를 구현하는 경우는, jp.go.aist.rtm.RTC.util.ValueHolder의 stringFrom 메소드를 구현해, implements에 Serializable 인터페이스를 추가할 필요가 있습니다.
jp.go.aist.rtm.RTC.util.ValueHolder의 stringFrom 메소드는 인수로 건네받은 문자열로부터 대상 데이터형으로 변환하기 위한 메소드입니다.
컨피그레이션·데이터용 홀더에 대해서는「ConfigSample」샘플내의 VectorHolder 클래스를 참조하십시오.

Java버전 RT컴포넌트의 기동시의 동작

C++버전 RT컴포넌트의 기동시의 동작을 이하에 나타냅니다. 컴포넌트 기동시의 동작에 대해서는 Java버전 RT컴포넌트도 기본적으로는 동일한 동작이 되고 있습니다만, RT컴포넌트 기능의 실체가 XXXImpl 클래스 로 분리된 관계로부터 컴포넌트 생성시 컴포넌트 초기화시의 메세지의 송신지는 XXX 클래스로 변경이 되고 있습니다.
JavaRTcomponent1.png

#ref(JavaRTcomponent2.png,nolink,center)

IDL용 데이터형과 Java언어 데이터형의 대응 관계

CORBA IDL용 데이터형과 Java 언어 데이터형의 대응 관계를 표 3-2에 나타냅니다.

표 3-2 데이터형 대응 관계

CORBA IDL Java 언어
short short
long int
float float
double double
long long long
long double double
char char
wchar char
octet byte
unsigned short short
unsigned long int
unsigned long long long
boolean boolean
string String
wstring String
any org.omg.CORBA.Any
void void

그 외

Tips

Eclipse의 자동 기동의 설정 방법에 대해

    • Windows의 경우
      • 1. Eclipse 프로젝트의 디렉토리 안에서 「.project」파일을 선택해 마우스 오른쪽 버튼을 클릭. 표시된 context menu내로부터「속성」를 선택
        ※선택하는 Eclipse 프로젝트는 임의의 프로젝트로 다른 프로젝트의 「.project」파일로 해도 됩니다.


SelectProject.png
「.project」파일을 선택

      • 2. 표시된「속성」화면의「일반」탭의 「연결 프로그램」 우측의「변경」버튼을 클릭
        Property.png
        연결 프로그램의 변경
      • 3. 표시된「연결 프로그램」화면 아래 쪽에 있는「찾아보기」버튼을 클릭
        SelectApplication.png
        Eclipse를 선택
      • 4. 파일 선택 화면이 표시되므로, 자동 기동을 실시하는 Eclipse가 인스톨 되고 있는 디렉토리내로부터「eclipse.exe」를 선택
      • 5.「연결 프로그램」화면,「속성」을「OK」버튼을 클릭해 닫는다
        ::이상의 설정을 하는 것으로 「.project」파일을 더블 클릭 하는 것으로 지정한 Eclipse를 자동 기동하는 것이 가능해집니다.
        |
        ::※복수의 Eclipse를 인스톨 하고 있는 경우, 더블 클릭 동작에서는 상기 조작으로 지정한 버전의 Eclipse가 항상 기동되기 때문에 주의해 주십시오.
        |
        ※더블 클릭을 실시한 프로젝트가 기동 대상 Eclipse로 설정된 workspace내에 포함되지 않는 경우, 기동된 Eclipse의 Package Exploer내에 표시되지 않습니다. 이 경우는, 대상 프로젝트를 workspace내에 임포트 하는지, workspace의 설정을 변경해 주세요.


        --Linux의 경우
         data 옵션에서 workspace를 지정해 Eclipse를 기동하는 것이 가능합니다.
         > eclipse -data /home/devel/OpenRTM/workspace
        대상 프로젝트가 포함되어 있는 workspace를 지정해 주세요.


        사례

 OpenRTM-aist-Java는, 이하의 라이브러리를 사용해 개발되었습니다. 아래의 프로젝트의 개발과 설계에 관계된 분들에게 감사합니다.
  • Apache Commons CLI  1.1

This product includes software developed by The Apache Software Foundation (http://www.apache.org/ ).

ダウンロード

最新バージョン : 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集

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