rtcshell은 네임서버 상에서 등록되어 있는 RT컴포넌트를 셸에서 관리할 수 있게 하는 툴입니다. 컴포넌트를 activate/deactivate/reset하거나, 포트의 접속을 할 수 있습니다. RT시스템 을 관리하는 것도 가능합니다.
이 툴은 리소스가 적은 시스템, GUI를 사용할 수 없는 환경(특히, 컴포넌트를 관리하는 다른 PC와 네트워크가 연결되어 있지 않은 환경등) 혹은 RTSystemEditor를 사용할 수 없는 경우 등에 유효합니다. 커멘드 라인 입력에 정통한 분에게 있어서는 특히 편리한 툴입니다.
이 소프트웨어는 NEDO(독립행정법인 신 에너지・산업기술 종합개발 기구) 의 차세대 로봇 지능화 기술 개발 프로젝트의 지원에 의해, 독립행정법인 산업기술 종합연구소에서 개발되고 있습니다. 관리번호 H23PRO-1214.
This software is licensed under the Eclipse Public License -v 1.0 (EPL). See LICENSE.txt.
인스톨은 몇가지 방법이 있습니다.
$ cd /home/blurgle/src/ $ tar -xvzf rtshell-3.0.0.tar.gz
$ python setup.py install
source /usr/local/share/rtshell/shell_support
언제나 새로운 셸을 실행하기 위해 커멘드를 실행할 필요가 없도록 아래의 행을 .bashrc등의 파일에 추가해 주십시오 (rtshell 이 /usr/local에 인스톨 된 경우):
source /usr/local/share/rtshell/shell_support
도큐먼트는 MAN 페이지로서 제공합니다(Windows의 경우는 HTML로 제공합니다.). ${prefix}/share/man에 인스톨 됩니다. 이 경로를 $MANPATH라는 환경변수에 추가해야 합니다. 예를들어 rtshell이 /usr/local에 인스톨 된 경우, 이하의 행을 .bashrc에 추가해 주십시오:
export MANPATH=/usr/local/share/man:${MANPATH}rtshell의 사용법의 데모를 소개하는 스크린 캐스트는 OpenRTM-aist의 Youtube채널 에 있습니다.
최신판의 소스는 github에 Git의 리포지터리에 있습니다(URL: http://github.com/gbiggs/rtshell ). 「Download source」를 클릭해 다운로드를 할 수 있습니다. 「git clone」을 사용할 수도 있습니다. 패치를 보내고 싶다면, 이 방법을 추천합니다:
$ git clone git://github.com/gbiggs/rtshell.git
커멘드의 테스트는 소스 디렉토리에서 실행하는 것이 가능합니다:
~/src/rtshell $ ./test/test_cmds.py ~/share/OpenRTM-aist/examples/rtcs/
변수는 RTC의 모듈을 갖는 디렉토리입니다. Motor, Controller 및 Sensor의 모듈이 필요합니다.
하나의 커멘드의 테스트 만을 실행하는 경우, 그 테스트 명을 변수에 추가해 주십시오:
$ ./test/test_cmds.py ~/share/OpenRTM-aist/examples/rtcs/ rtactTests
rtctree는 Python으로 RT컴포넌트를 관리하기 위한 라이브러리입니다.
rtctree는 간단한 API로 RT컴포넌트의 관리를하기 위한 Python용 라이브러리입니다. 개발자는 CORBA의 API를 몰라도 다른 프로그램으로부터, RT컴포넌트의 시스템을 관리할 수 있습니다. 컴포넌트를 activate 하거나 deactivate 하거나 컴포넌트의 사이의 접속을 실시하는 것 등이 가능합니다.
이 소프트웨어는 NEDO (독립 행정법인 신 에너지·산업기술 종합 개발 기구)의 차세대 로봇 지능화 기술개발 프로젝트의 지원에 의해, 독립 행정법인 산업기술 종합 연구소에 의해서 개발되고 있습니다.
인스톨은 몇가지의 방법이 있습니다.
$ cd /home/blurgle/src/ $ tar -xvzf rtctree-2.0.0.tar.gz
$ python setup.py install
이하의 환경 변수가 사용됩니다.
| RTCTREE_ORB_ARGS | ORB 작성시에게 입력하는 세미콜론으로 구분지어진 인수의 리스트. 설정은 필요하지 않습니다. |
| RTCTREE_NAMESERVERS | 세미콜론으로 구분하는 RTC 트리를 위한 네임서버의 주소의 리스트. 이 변수에 쓴 서버는 트리에 추가합니다. 설정은 필요하지 않습니다. |
보통의 경우 RTCTREE_ORB_ARGS를 설정하는 것은 필요하지 않습니다. RTCTREE_NAMESERVERS를 설정하면, rtctree를 사용할 때에 더 편리합니다. 예를 들면, Bash 셸이라면:
$ export RTCTREE_NAMESERVERS=localhost;192.168.0.1:65346;example.com
라이브러리의 주요 부분은 RTC 트리입니다.
import rtctree.tree tree = rtctree.tree.RTCTree()
|-+localhost | |-+naming_context | | |--ConsoleIn0.rtc | | |--ConsoleOut0.rtc | | | |--another_naming_context | |--Sensor0.rtc | |-+192.168.0.5 |--Motor0.rtc |--Controller0.rtc
트리내의 각 디렉토리는, 통상의 네이밍 컨텍스트 또는 네임 서버의 루트 컨텍스트입니다. 네임 서버의 루트 컨텍스트는 NameServer클래스에서 나타냅니다. 또, 네이밍 컨텍스트는 Directory클래스에서 매니저는Manager클래스에서 나타냅니다.
네임 서버는 루트 디렉토리로부터의 디렉토리로서 다루어집니다. 그 아래는 파일과 서브 디렉토리입니다. 서브 디렉토리는 루트 컨텍스트아래의 네이밍 컨텍스트 및 매니저를 나타냅니다.
파일은 컴포넌트와 매니저입니다. 컴포넌트는 Component클래스에서 보여집니다.
컴포넌트 오브젝트가 나타내고 있는 컴포넌트에 관한 다양한 정보를 저장합니다. 컴포넌트의 activate, deactivate 컴포넌트의 포트 관리, 연결, 구성을 설정할 수 있습니다.
매니저로 새로운 컴포넌트 인스턴스를 만들거나 컴포넌트를 지울 수 있습니다.
트리내의 모든 노드에도 그것들이 나타내는 오브젝트에는 CORBA 오브젝트의 참조를 저장합니다. 이 오브젝트에 액세스 하는 것으로 IDL의 메소드를 호출할 수 있습니다. 만약 현재 rtctree로 실현 불가능한 기능이 있었다 해도, 이 CORBA 오브젝트를 이용해 IDL 메소드를 직접적으로 호출할 수 있습니다.
트리의 팩토리 함수의 인수(create_tree())는 트리를 구축하기 위한 해석 대상이 되는 네임 서버를 지정합니다. 자세한 것은 해당 함수의 문서를 참조해 주십시오. 일반적으로, 네임 서버의 주소 리스트 또는 패스의 리스트를 건네주어 트리를 구축할 수 있습니다. 환경 변수 RTCTREE_NAMESERVERS도 체크됩니다.
트리내의 노드는 패스로 지정됩니다. 패스는 스트링의 리스트입니다. 하나 오른쪽의 레벨은 왼쪽의 것보다 1 레벨 깊어집니다. 절대 패스는 트리 오브젝트를 지정하기 위해서 필요합니다. 만약 패스가 노드 이하에 존재하는 경우, 노드로부터의 상대 패스 지정도 가능합니다.
이러한 패스 문자열은 파일 시스템 패스 지정과 비슷합니다. 트리의 루트는/로 나타냅니다.(Windows의 경우는\). 최초의 레벨은 네임 서버의 주소입니다. 그 아래의 레벨은 컴포넌트, 매니저 및 네이밍 컨텍스트(디렉토리로서 나타냄)입니다.parse_path라고 하는 함수는 문자열의 패스를 RTC 트리용의 패스로 변경합니다.
예를 들면, 이하의 패스:
/localhost/naming_context/ConsoleIn0.rtc
['/', 'localhost', 'naming_context', 'ConsoleIn0.rtc']
이하는 RTCTree 클래스 및 다양한 노드 클래스를 위한 헬퍼 함수입니다. 여기서 설명하는 것이 모든 API를 나타내고 있는 것은 아닙니다. Doxygen로 기술된 API의 문서를 참조해 주십시오. 예는 rtcshell의 소스를 참조해 주십시오.
| RTCTree.has_path | 트리의 패스가 있는지를 체크합니다. 컴포넌트의 존재를 체크하려면 이 함수를 사용하면 편리합니다. |
| RTCTree.get_node | 트리로부터 노드를 취득합니다. 컴포넌트, 디렉토리 등을 취득하기 위해서는 이 함수를 사용해 주십시오. |
| RTCTree.is_component | 패스가 컴포넌트를 가리키고 있는지를 조사합니다. 노드 클래스는 is_component라고 하는 같은 기능의 프로퍼티를 갖고 있습니다. is_directory, is_manager 및 is_nameserver라고 하는 함수 및 프로퍼티도 있습니다. |
| RTCTree.iterate() | 트리의 모든 노드에 같은 함수를 실행합니다 .모든 결과는 리스트로서 반환됩니다. 예는 rtcshell의rtls를 참조해 주십시오. |
| Node.children | 노드의 모든 자식(子) 노드. 예:디렉토리 아래의 컴포넌트의 리스트를 취득하기 위해서 이용할 수 있습니다. |
| Node.full_path | 트리의 루트로부터 이 노드까지의 패스. |
| Node.name | 노드의 이름. 예:디렉토리의 이름. |
| Node.parent_name | 노드의 부모의 이름. |
| Node.root | 이 노드의 트리의 루트 노드. 반환된 오브젝트로 트리의 거의 모든 기능을 할 수 있습니다. |
| Component.activate_in_ec() | 컴포넌트를 activate 합니다. 통상은 ec_index는 0으로 상관없습니다. |
| Component.deactivate_in_ec() | 컴포넌트를 deactivate 합니다. |
| Component.reset_in_ec() | 컴포넌트를 reset 합니다. |
| Component.state_in_ec() | 어떤 execution context로 컴포넌트의 스테이트를 얻습니다. |
| Component.alive | 컴포넌트가 alive인지를 체크합니다. |
| Component.owned_ecs | 컴포넌트가 가지고 있는 execution context의 리스트입니다. |
| Component.participating_ecs | 컴포넌트가 사용하고 있는 execution context의 리스트입니다. |
| Component.state | 컴포넌트의 스테이트입니다. |
| Component.state_string | 문자열로 한 컴포넌트의 스테이트입니다. |
| Component.disconnect_all() | 컴포넌트의 모든 포트의 접속을 끊습니다. |
| Component.get_port_by_name() | 컴포넌트의 포트를 이름으로 찾는다. |
| Component.ports | 컴포넌트 포트의 리스트입니다. 입력 포트, 출력 포트 및 서비스 포트의 리스트가 포함된 한편 현재 접속 상태의 포트의 리스트도 취득할 수 있습니다. |
| Component.object | 컴포넌트의 CORBA의 LightweightRTObject 오브젝트입니다. |
| Component.activate_conf_set | configuration 세트를 activate 합니다. |
| Component.set_conf_set_value | configuration 세트의 변수를 설정합니다. |
| Component.active_conf_set | 현재의 active configuration 세트입니다. |
| Component.active_conf_set_name | 현재의 active configuration 세트의 이름입니다. |
| Component.conf_sets | configuration 세트의 리스트입니다. |
| Port.connect() | 이 포트를 다른 포트에 접속합니다. |
| Port.disconnect_all() | 이 포트의 모든 연결을 끊습니다. |
| Port.get_connection_by_dest() | 이 포트의 연결을 다른 포트로 찾습니다. |
| Port.get_connection_by_name() | 이 포트의 연결을 이름으로 찾습니다. |
| Port.connections | 이 포트의 연결 리스트입니다. |
| Port.is_connected | 이 포트가 연결 상태인지 어떤지를 체크합니다. |
| Port.name | 포트의 이름입니다. |
| Port.object | 이 포트의 CORBA의 PortService 오브젝트입니다. |
| Port.name | 포트의 오너(통상은Component오브젝트)입니다. |
| Port.porttype | 포트의 종류(DataInPort,DataOutPort및CorbaPort). |
| Connection.disconnect() | 이 연결을 끊습니다. |
| Connection.ports | 이 연결의 소스나 목적 포트의 리스트입니다. |
| ConfigurationSet.has_param() | 이 세트에 변수가 있는가를 체크합니다. |
| ConfigurationSet.set_param() | 이 세트의 변수를 설정합니다. |
| ExecutionContext.activate_component() | 이 execution context로 컴포넌트를 activate 합니다. |
| ExecutionContext.deactivate_component() | 이 execution context로 컴포넌트를 deactivate 합니다. |
| ExecutionContext.reset_component() | 이 execution context로 컴포넌트를 reset 합니다. |
| ExecutionContext.get_component_state() | 이 execution context안의 컴포넌트의 스테이트를 가져옵니다. |
| ExecutionContext.running | 이 execution context가 기동하고 있는지를 체크합니다. |
| Manager.create_component() | 새로운 컴포넌트 인스턴스를 만듭니다. |
| Manager.delete_component() | 컴포넌트 인스턴스를 삭제합니다. |
| dict_to_nvlist() | Python의 dict를 CORBA의 namevalue 리스트로 변경합니다. |
| nvlist_to_dict() | CORBA의 namevalue 리스트를 Python의 dict로 변경합니다. |
rtctree는 Python의 표준 스타일에 따릅니다. PEP8을 참조해 주세요.
가장 중요한 점은 Private한 내부 API 함수는 언더 바(「_」)로 시작되는 것입니다. 언더 바로 시작되는 함수는 클래스 외부로부터 증명해야 하는 것이 아닙니다. 만약 사용했을 경우에는 미정의된 행동을 일으킬 가능성이 있습니다. 언더 바로 시작되지 않고 docstring가 있는 함수만을 사용해 주십시오.
최신판의 소스는github로 Git의 리포지터리(repository)에 있습니다.「Download source」를 클릭해 다운로드 할 수 있습니다.「git clone」를 사용할 수도 있습니다. 패치를 보내고 싶다면, 이 방법을 추천합니다.
$ git clone git://github.com/gbiggs/rtctree.git
보다 상세한 문서는 Doxygen로 기술된 문서를 참조해 주십시오.
샘플은rtcshell의 소스를 참조해 주십시오. 이것들은 RTSystemEditor로 실현 가능한 것을 rtctree로 실시하는 방법의 거의 모두를 보이고 있습니다.
rtsprofile은 Python으로 RTSProfile사양을 이용하기 위한 라이브러리입니다.
rtsprofile은 RT시스템 프로파일(RTSProfile)의 사양의 인터페이스 라이브러리입니다. 이 사양은 완전한 RT시스템을 기술해, 시스템을 복원하는 것이나 관리할 수 있습니다. XML도 YAML를 이용 가능합니다.
이 소프트웨어는 NEDO (독립 행정법인 신 에너지·산업기술 종합 개발 기구)의 차세대 로봇 지능화 기술개발 프로젝트의 지원에 의해, 독립 행정법인 산업기술 종합 연구소에 의해서 개발되고 있습니다.
인스톨은 몇개의 방법이 이용 가능합니다.
$ cd /home/blurgle/src/ $ tar -xvzf rtsprofile-2.0.0-tar.gz
$ python setup.py install
라이브러리는RtsProfle의 클래스를 제공합니다. 이 클래스의 인스턴스를 만든 후, RTSProfile의 파일을 건네주는 것으로 완전한 RT시스템 프로파일이 만들어집니다. 혹은 수동으로 기존의 RT시스템의 RT시스템 프로파일을 작성해 파일명을 입력해 그 파일에 RTSProfile를 저장합니다.
클래스의 정보는 Python의 property로 액세스 합니다. 메소드가 아닙니다.
API의 자세한 것은 Doxygen로 구성된 문서를 참조해 주십시오.
소스에 샘플 파일과 테스트의 스크립트를 포함하고 있습니다. 이하와 같은 커멘드로 실행이 가능합니다.
$ python test/test.py ./test/rtsystem.xml $ python test/test.py ./test/rtsystem.yaml
PYTHONPATH의 값에 의해서, 테스트는 인스톨 된 rtsprofile를 사용할 가능성이 있습니다.
rtsprofile는 Python의 표준 스타일에 따릅니다. PEP8에 참조해 주십시오.
가장 중요한 점은, Private한 내부 API 함수는 언더 바(「_」)로 시작되는 것입니다. 언더 바로 시작되는 함수는 클래스 외부로부터 증명해야 하는 것이 아닙니다. 만약 사용했을 경우에는 미정의된 행동을 일으킬 가능성이 있습니다. 언더 바로 시작되지 않고 docstring가 있는 함수만을 사용해 주십시오.
보다 상세한 문서는 Doxygen로 기술된 문서를 참조해 주십시오.
샘플은 rtsshell의 소스를 참조해 주십시오.
최신판의 소스는github로 Git의 리포지터리에 있습니다.「Download source」를 클릭해 다운로드를 할 수 있습니다.「git clone」를 사용할 수도 있습니다. 패치를 보내고 싶다면, 이 방법을 추천합니다.
$ git clone git://github.com/gbiggs/rtsprofile.git