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 を設定することは必要となりません。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はPythonの標準スタイルに従います。PEP8に参照してください。
最も重要な点は、プライベートな内部API関数はアンダースコア(「_」)で始まることです。アンダースコアで始まる関数はクラス外から証すべきではありません。もし使用した場合には、未定義の振る舞いを引き起こす可能性があります。アンダースコアで始まらず、docstringがある関数だけを使ってください。
最新版のソースはgithubでGitのリポジトリにあります。「Download source」をクリックしてダウンロードをすることができます。「git clone」を使うこともできます。パッチを送りたがったら、この方法がおすすめします。
$ git clone git://github.com/gbiggs/rtctree.git
より詳細なドキュメンテーションはDoxygenで記述されたドキュメンテーションを参照してください。
サンプルはrtshellのソースを参照してください。これらはRTSystemEditorで実現可能なことをrtctreeで行う方法のほぼ全てを示しています。
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
rtctree は Python で RTコンポーネントの管理をするためのライブラリです。
概要
rtctree は簡単な API で RTコンポーネントの管理をするための Python用のライブラリです。開発者は CORBA の API を知らなくとも、他のプログラムから、RTコンポーネントのシステムを管理することができます。 コンポーネントを activate したり deactivate したり、コンポーネント間の接続を行うことが可能です。
このソフトウエアは NEDO (独立行政法人 新エネルギー・産業技術総合開発機構) の次世代ロボット知能化技術開発プロジェクトの支援により、独立行政法人産業技術総合研究所によって開発されています。
必要条件
インストール
インストールはいくつかの方法が利用可能です。
環境変数
以下の環境変数が使われます。
普通の場合、RTCTREE_ORB_ARGS を設定することは必要となりません。RTCTREE_NAMESERVERS を設定したら、rtctree を使うときにもっと便利となります。例えば、Bash シェルでしたら:
RTC ツリー
ライブラリの主要部分は RTC ツリーです。
ツリー内の各ディレクトリーは、通常のネーミングコンテキストまたはネームサーバーのルートコンテキストです。ネームサーバーのルートコンテキストは NameServer クラスで示します。また、ネーミングコンテクストは 'Directory クラスで示し、マネージャは Manager'' クラスで示します。
ネームサーバーは、ルートディレクトリーからのディレクトリーとして扱われます。その下はファイルとサブディレクトリーです。サブディレクトリーはルートコンテクストの下のネーミングコンテクスト及びマネージャを示します。
ファイルはコンポーネントとマネージャです。コンポーネントは Componentクラスで示します。
コンポーネントオブジェクトが表しているコンポーネントに関するさまざまな情報を格納します。コンポーネントを activate や deactivate したり、コンポーネントのポートを管理したり、ポートを接続したり、構成設定を設定したりができます。
マネージャで新しいコンポーネントインスタンスを作ったり、コンポーネントを消したりことができます。
ツリー内のすべてのノードにも、それらが表すオブジェクトには、CORBA オブジェクトの参照を格納します。このオブジェクトにアクセスすることで、IDL のメソッドを呼び出すことができます。もし現在 rtctree で実現不可能な機能があったとしても、この CORBA オブジェクトを利用し IDL メソッドを直接的に呼び出すことができます。
ツリーの構築
ツリーのファクトリ関数の引数(create_tree())は、ツリーを構築するための解析対象となるネームサーバーを指定します。詳しくは当該関数のドキュメンテーションに参照してください。一般的に、ネームサーバーのアドレスのリストまたはパスのリストを渡してツリーを構築することができます。環境変数 RTCTREE_NAMESERVERS もチェックされます。
パス
ツリー内のノードはパスで指定されます。パスはストリングのリストです。一つ右のレベルは、左のものより1レベル深くなります。絶対パスは、ツリーオブジェクトを指定するために必要となります。もしパスがノード以下に存在する場合、ノードからの相対パス指定も可能です。
これらのパス文字列は、ファイルシステムパス指定と似ています。ツリーのルートは/で示します(Windowsの場合は\)。最初のレベルはネームサーバーのアドレスです。その下のレベルはコンポーネント、マネージャ及びネーミングコンテクスト(ディレクトリーとしてしめす)です。parse_pathと言う関数は文字列のパスを RTC ツリー用のパスに変更します。
例えば、以下のパス:
ヘルパー関数
以下は RTCTree クラス及びさまざまなノードクラスのためのヘルパー関数です。以下はすべての API を示しているわけではありません。Doxygen で記述されたAPIのドキュメンテーションを参照してください。例は rtcshell のソースを参照してください。
APIのスタイル
rtctreeはPythonの標準スタイルに従います。PEP8に参照してください。
最も重要な点は、プライベートな内部API関数はアンダースコア(「_」)で始まることです。アンダースコアで始まる関数はクラス外から証すべきではありません。もし使用した場合には、未定義の振る舞いを引き起こす可能性があります。アンダースコアで始まらず、docstringがある関数だけを使ってください。
リポジトリ
最新版のソースはgithubでGitのリポジトリにあります。「Download source」をクリックしてダウンロードをすることができます。「git clone」を使うこともできます。パッチを送りたがったら、この方法がおすすめします。
より詳細なドキュメンテーションとサンプル
より詳細なドキュメンテーションはDoxygenで記述されたドキュメンテーションを参照してください。
サンプルはrtshellのソースを参照してください。これらはRTSystemEditorで実現可能なことをrtctreeで行う方法のほぼ全てを示しています。
Changelog
3.0
2.0