[openrtm-users 01031] ConfigulationパラメータとRTC状態遷移における制約に関する要望

13 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01031] ConfigulationパラメータとRTC状態遷移における制約に関する要望

OpenRTM関係者様

産総研の中島です。

過去MLをざっと見渡して既出ではないようでしたので、
以下に要望を示します、ご検討頂ければと思います。

=====
「ConfigulationパラメータとRTC状態遷移における制約」
ということで、既存のconfigulationパラメータに、属性の追加などをして

(1)RTCがINACTIVE時にのみ、変更+反映可能なConfigulationパラメータ
(2)RTCがどの状態遷移にいても、変更+反映可能なConfigulationパラメータ

の2種類があると良いと考えています。

具体的には、RtSystemEditorを使用する場合、INACTIVE時には全パラメータが
編集可能となるが、ActivateしACTIVE状態にいる時には、該当パラメータのみ
編集可能で、その他はフォーカスが当てられないようにロックがかかるような
イメージ。また、RtSystemEditorを使用しない場合は、条件判断し該当パラメー
タは変更不可のメッセージ出力or現在値を変更せず維持するなど。

=====

背景として、以下のような例で示しますが、configulationパラメータという
便利なものを使う上で、その利便性を生かしつつ、さらに安全性を考慮したいと
考えると、上述のような機能があると良いと考えています。
(Configulationパラメータを使用しないという方針は今回は無しとして。)

あくまで一例ですが、1つの速度制御RTCで、2台の移動ロボット
(ロボットの形状は異なる。また、同じ距離センサーを搭載しているとします。)
を制御する場合(動かすのは1台ずつの場合)について、

--------- -------- -----------
| RTC(A) |------->| RTC(B) | -----> | ロボット1 |
--------- | -------- -----------
| -------- -----------
--->| RTC(C) | -----> | ロボット2 |
-------- -----------

RTC(A)から、RTC(B)、RTC(C)のいずれか片方にデータポートで接続し、
制御する対象を変える場合には、一旦RTC(A)をDeactivateし内部処理を
初期化し、DataPortの線も張り替えてから、再度Acitaveteして使用する
場合について。

RTC(A)のコンフィグレーションパラメータに、以下の2種類の項目があるとしま
す。(「RTC名.conf」ファイルにロボット毎のパラメータセットを用意)

(i)各ロボット毎の形状値(ボディや車輪の径)、ゲイン、などロボットの固定固
有値
(ii)センサーのパラメータ(センシング距離やレンジ、サンプルング間隔)の
可変値

これらを、各ロボットを動かす時に、セットしなおすとなると、動作させる前に、
つまり、INACTIVE時に(i)(ii)を初期セットするとして、
走行中(ACTIVE時)に例えば、センサーのパラメータを変更(レンジを広げてみるなど)
したい時には、そのまま(ii)を動的に変更と反映が可能で、便利です。
しかし、(i)はACTIVE時には変更されると危険なため、他のコンフィグ値を変更
する際には、注意が必要になります。

RTCの再利用性などを考えると、作成者以外のユーザが使用する際に、ドキュメ
ントなどに記された注意書きを読んで、かつ操作で注意をする必要が出てきそう
で、安全性が厳しくなってきます。

RTC内部で、(i)はACTIVE時の反映値は無効という実装を入れれば安全ですが、
RtSystemEditorで入力した値との整合もなくなりますし、ミドルウェアやツール
レベルで前処理を施して欲しいと考えています。

1.0.0-RC1系で、コンフィグパラメータの制約条件の処理が追加されていますが、
同様に、入力時にRTCのステータスを見て、入力可否の処理が入るともっと
使いやすいと感じています。

以上、ご検討ください。

未定義
root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01033] ConfigulationパラメータとRTC状態遷移における制約に関する要望

中島様、皆様、

末廣@電通大です。
この件に関して私は以下のように考えています。
(以前も似た議論があったような気が、、、)
あくまで個人的な見解です。

パラメタを変更するときにConfigulationとServicePortとで
何が違うかということです。

Yusuke Nakajima さんは書きました:
> (1)RTCがINACTIVE時にのみ、変更+反映可能なConfigulationパラメータ
これが本来のConfigulationパラメタ。

> (2)RTCがどの状態遷移にいても、変更+反映可能なConfigulationパラメータ
こちらは個別のサービスポートで対応するのが良い。

つまり私は、
・Configulationの方は比較的汎用なRTCを起動時などに
パラメタ設定するときに使う、
・動作中の動的な変更はServicePortで行う、
のが良いと考えています。

動作中のパラメタ変更は多くの場合、変更が及ぼす影響を
十分に考慮して必要な処理も合わせて行う必要があります。
単純にパラメタだけ替えれば良いという場合は少ないと感じています。

もちろん、そういう場合が多いということであればConfigulationで
サポートするのも良いと思うのですが、そうでなければ
単純にしておいた方が良いと考えます。

他の方々のご意見も聞いてみたいと思っています。
いかがでしょうか。

よろしくお願いします。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01034] ConfigulationパラメータとRTC状態遷移における制約に関する要望

中島様,末廣様,皆様:
早大の菅です.

Configurationに関して個人的な見解を申し上げたいと思い
メールを差し上げました.

長文・駄文で失礼します.

私個人の意見としましては,
Configurationの制約条件に,Inactive時の更新の許可・不許可を
加えるほうがよいと考えています.
また,変更時にフックが掛けられて,必要な処理を行える枠組みが
必要だと考えています.

この辺は,RTMを使って如何にシステムを組むか,
という設計論に近い部分があると思います.

以下,細かい話です.

私の場合,
DataPort 
→ RTC間のデータのやり取り
Configuration 
→ ツール側からのデータの送信
ServicePort 
→ InitやResetなどのデータのやり取りに縛られない処理.
 およびPull型のデータのやり取り

という住み分けになっています.
この前提での話をさせてください.

末廣様のおっしゃるように,Active状態中に制御パラメータを変更するのに,
ServicePortの機能を使うのは冗長だと思っていますが,
現状ではこれでも仕方ないと思っています.

私の場合では常時動的なパラメータ変更が行われる場合は,
独立したポートを作るか,独自型のIDLを使ったポートを作るか,
TimedOctetSeq型のポートを使って構造体を投げてしまいます.

これはRTC間の通信の場合です.

本来ConfigurationはSystem Editorのような汎用ツールでも変更できる
便利な機能ですので,ツール側から変更したい場合には,
中島様ご指摘の機能が必要だと思います.

ただ,末廣様ご指摘のように,Configurationの変更に対して,
必要な処理を行うべきという意見にも同意しています.

現状では,Configurationの変更をOnExecute内で監視しており,
変更された場合にInvalidなパラメータの場合は,
Error状態に移行する処置を行っていますが,スマートではありませんよね.

本来ならばConfiguration自体にフックをかけて,
変更があった場合にOnConfigured関数などが呼ばれるか,
フック用のオブジェクトを用意するのがよいと思うのですがいかがでしょうか.

現状のOpenRTMだと,
Configurationの変更時は
RTC::CorbaConsumer(実態はRTC::RTObject)
SDOPackageに直接アクセスしてしまっているので,
RTCでConfigurationというクラスを作って,
RTC::RTObject::get_configuration
では,RTC::Configurationが呼ばれるようにできませんか?
RTC::Configurationにフックがしかけられるようにするとよいと思います.

ではでは

Takashi Suehiro さんは書きました:
> 中島様、皆様、
>
> 末廣@電通大です。
> この件に関して私は以下のように考えています。
> (以前も似た議論があったような気が、、、)
> あくまで個人的な見解です。
>
> パラメタを変更するときにConfigulationとServicePortとで
> 何が違うかということです。
>
> Yusuke Nakajima さんは書きました:
>> (1)RTCがINACTIVE時にのみ、変更+反映可能なConfigulationパラメータ
> これが本来のConfigulationパラメタ。
>
>> (2)RTCがどの状態遷移にいても、変更+反映可能なConfigulationパラメータ
> こちらは個別のサービスポートで対応するのが良い。
>
> つまり私は、
> ・Configulationの方は比較的汎用なRTCを起動時などに
> パラメタ設定するときに使う、
> ・動作中の動的な変更はServicePortで行う、
> のが良いと考えています。
>
> 動作中のパラメタ変更は多くの場合、変更が及ぼす影響を
> 十分に考慮して必要な処理も合わせて行う必要があります。
> 単純にパラメタだけ替えれば良いという場合は少ないと感じています。
>
> もちろん、そういう場合が多いということであればConfigulationで
> サポートするのも良いと思うのですが、そうでなければ
> 単純にしておいた方が良いと考えます。
>
> 他の方々のご意見も聞いてみたいと思っています。
> いかがでしょうか。
>
> よろしくお願いします。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01035] ConfigulationパラメータとRTC状態遷移における制約に関する要望

菅様、皆様、

末廣@電通大です。

ysuga さんは書きました:
> 以下,細かい話です.
>
> 私の場合,
> DataPort 
> → RTC間のデータのやり取り
> Configuration 
> → ツール側からのデータの送信
> ServicePort 
> → InitやResetなどのデータのやり取りに縛られない処理.
>  およびPull型のデータのやり取り

実はこれが大事なポイントだと思っています。
いろいろな考えがあると思いますが、私の場合、

Configulation : 別のRTCにする。
DataPort : RTCのメインループで処理され、生成されるものをやり取りする。
ServicePort : RTCのメインループの振る舞いを変更したり、
  状態を取得したりする。

ですからPull型のデータのやり取りはDataPortで
サポートして欲しいと思っています。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01037] ConfigulationパラメータとRTC状態遷移における制約に関する要望

産総研の松坂です。

私も個人的な意見を失礼します。

2009/12/9 ysuga :
> 私個人の意見としましては,
> Configurationの制約条件に,Inactive時の更新の許可・不許可を
> 加えるほうがよいと考えています.
> また,変更時にフックが掛けられて,必要な処理を行える枠組みが
> 必要だと考えています.

configurationの設定が、最近のオブジェクト指向言語でサポートされているアクセサ
(setter,getter)のような仕組みになっていると嬉しいかなと思います。
アクセサを使うと変数にアクセスしているようでいても実際は関数を通しているので
代入された時の処理をそこに書くことができますし、変数への代入を禁止したい場合は
setterで制御できます。

今書いているコードはbindParameterの第4引数を使ってsetterのようなこと実装をしているの
ですがコンポーネントをアクティブ化しなければ変数がsetされないRT-System Editorの仕様
(?)でなかなか思ったような動作が実現できていません。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01038] ConfigulationパラメータとRTC状態遷移における制約に関する要望

発信源の中島と同じチームの喜多@産総研です。
中島の繰り返しになりますが、、、、

 OpenRTMのひとつの重要な意義は、これを使うことで、簡単に
効率よく信頼性の高いロボット用ソフトウェアモジュールが
構築できることと理解しています。

 RTC Builder や RT System Editor は非常に便利で、
お蔭でOpenRTMの奥深くまで知ることなく、それなりに動く
移動ロボットシステムを構築できています。

 コンフィギュレーションパラメータも便利に使っています。
その一方、Activate中に変更できてしまう危険性も感じています。

 なので、Acitivate中も変更できるものとそうでないものの2種を
ミドルウェアでサポートしてはどうかというのが、中島の提案かと思います。

 例えばRTC Builderでコンフィギュレーションパラメータを
宣言するときに、チェックボックスにチェックを入れると、その
パラメータはActivate時には変更しないようミドルウェアで管理し、
かつ、RT System Editorでは、そのコンフィギュレーションパラメータが、
Activate時には変更不可であることが利用者にわかるようにする、あるいは、
変更しようとしたら警告をだすというような変更は、そんなにコストは
かからず、かつ、効果はそれなりにあると思う次第です。

 ミドルウェアのプロでなくとも、汎用ツールを使えば、知的に、かつ、
安全にロボットを動かすためのプログラムを、さくっと、作れるように、
なるために。

喜多

> 産総研の松坂です。
>
> 私も個人的な意見を失礼します。
>
> 2009/12/9 ysuga :
> > 私個人の意見としましては,
> > Configurationの制約条件に,Inactive時の更新の許可・不許可を
> > 加えるほうがよいと考えています.
> > また,変更時にフックが掛けられて,必要な処理を行える枠組みが
> > 必要だと考えています.
>
> configurationの設定が、最近のオブジェクト指向言語でサポートされているアクセサ
> (setter,getter)のような仕組みになっていると嬉しいかなと思います。
> アクセサを使うと変数にアクセスしているようでいても実際は関数を通しているので
> 代入された時の処理をそこに書くことができますし、変数への代入を禁止したい場合は
> setterで制御できます。
>
> 今書いているコードはbindParameterの第4引数を使ってsetterのようなこと実装をしているの
> ですがコンポーネントをアクティブ化しなければ変数がsetされないRT-System Editorの仕様
> (?)でなかなか思ったような動作が実現できていません。
>

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01041] Configulationパラメータの設定

電通大 末廣です。

Configulationパラメタをrtc.confなどで設定する方法が
あっても良さそうなのですが、どこにも記述が見つかりません。

ご存知の方がいらっしゃいましたらご教示ください。

よろしくお願いします。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01042] Configulationパラメータの設定

末廣先生

安藤です

ここの一番下の部分に記述があります。
http://www.is.aist.go.jp/rt/OpenRTM-aist/html/E3839EE3838BE383A5E382A2E383AB2FE382B3E383B3E38395E382A3E382AEE383A5E383ACE383BCE382B7E383A7E383B3.html

あとは、examples/ConfigSample のサンプルをご覧ください。

> 電通大 末廣です。
>
> Configulationパラメタをrtc.confなどで設定する方法が
> あっても良さそうなのですが、どこにも記述が見つかりません。
>
> ご存知の方がいらっしゃいましたらご教示ください。
>
> よろしくお願いします。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01046] Configulationパラメータの設定

NECシステムテクノロジーの石田です。

コンフィグレーションにおける初期値を与える作法について
ご教授ください。C++版を利用しております。

RTMパッケージに提示されていますサンプルソースでは
examples/ConfigSample/ConfigSample.cppにおいて、例えば

static const char* configsample_spec[]=
"conf.default.int_param0", "0",

ここでparam0に着目しますと、onInitialize()にて
bindParameter("int_param0", m_int_param0, "0");
と初期値0(ゼロ)でbindしています。

confファイルを用意して初期値を与えようとすると、
うまく与えられません。常に0(ゼロ)になります。
RTCLink等のツールはconfファイルを読み込んでおり
ツールでApplyしてやればconfファイルの内容が反映されます。

そこで、ツールでApplyしなくても良いようにするやり方を調べたところ
bindParameter("int_param0", m_int_param0,
m_properties["conf.default.int_param0"].c_str() );
と初期値をプロパティから与えてやるとconfの内容が反映されます。
この作法で初期化してやると、インスタンス別にconfファイルを分けても
読み込まれます。

この作法は推奨されるものでしょうか?

この方が好ましいのであればサンプルソースを改変いただけると
うれしいです。サンプルソースを元にしてconfファイルを読まない
コンポーネントが周囲で増殖しており苦慮しております。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01051] Configulationパラメータの設定

NECシステムテクノロジー 石田様

お世話になっております。
産総研 栗原です。

コンフィグレーションパラメタを、予め用意したconfファイルで初期化
する方法としましては、onActivate()メソッド内にて下記のように一行
追加する事でも実現可能です。

RTC::ReturnCode_t ConfigSample::onActivated(RTC::UniqueId ec_id)
{
m_configsets.update("mode0");
return RTC::RTC_OK;
}

上記は、ConfigSampleの例です。
このようにする事では、configsample.confに記述されているmode0の
コンフィグレーションセットが使用されます。

update()の引数にはコンフィグレーションセット名を指定します。

以上、宜しくお願い致します。

On Tue, 22 Dec 2009 19:48:36 +0900
"Masakazu Ishida" wrote:

> NECシステムテクノロジーの石田です。
>
> コンフィグレーションにおける初期値を与える作法について
> ご教授ください。C++版を利用しております。
>
> RTMパッケージに提示されていますサンプルソースでは
> examples/ConfigSample/ConfigSample.cppにおいて、例えば
>
> static const char* configsample_spec[]=
> "conf.default.int_param0", "0",
>
> ここでparam0に着目しますと、onInitialize()にて
> bindParameter("int_param0", m_int_param0, "0");
> と初期値0(ゼロ)でbindしています。
>
> confファイルを用意して初期値を与えようとすると、
> うまく与えられません。常に0(ゼロ)になります。
> RTCLink等のツールはconfファイルを読み込んでおり
> ツールでApplyしてやればconfファイルの内容が反映されます。
>
> そこで、ツールでApplyしなくても良いようにするやり方を調べたところ
> bindParameter("int_param0", m_int_param0,
> m_properties["conf.default.int_param0"].c_str() );
> と初期値をプロパティから与えてやるとconfの内容が反映されます。
> この作法で初期化してやると、インスタンス別にconfファイルを分けても
> 読み込まれます。
>
> この作法は推奨されるものでしょうか?
>
> この方が好ましいのであればサンプルソースを改変いただけると
> うれしいです。サンプルソースを元にしてconfファイルを読まない
> コンポーネントが周囲で増殖しており苦慮しております。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01061] Configulationパラメータの設定

皆様

産総研 安藤です

configurationについて混乱を招いているようで申し訳ございません。
ご希望の機能ですが、実装しかけたのですが検証するのを忘れておりまして
1.0.0-RC1ではバグのため機能しません。

> そこで、ツールでApplyしなくても良いようにするやり方を調べたところ
> bindParameter("int_param0", m_int_param0,
> m_properties["conf.default.int_param0"].c_str() );
> と初期値をプロパティから与えてやるとconfの内容が反映されます。
> この作法で初期化してやると、インスタンス別にconfファイルを分けても
> 読み込まれます。
>
> この作法は推奨されるものでしょうか?

現状では、こうしていただくか、栗原が示したようなやり方で
default値をファイルから読み込ませたければonActivated()で

m_configsets.update("default");

でconfigurationパラメータに反映させる方法しかありません。
#少々恰好悪いですが。。。

ただし、bindParameter() の第3引数で与えているものはデフォルトの
パラメータでして、これをm_propertiesから取るのは若干問題があります。
というのも、この引数で渡された文字列は、外部からコンフィギュレーション
パラメータの値の文字列を、各変数の型への変換時に、万一変換に
失敗した場合の値になる文字列だからです。

コンフィギュレーションパラメータに正しい文字列の値が指定されている
限りは問題になりませんが。。。

で、上記のバグの件ですが、RTObject.cpp の on_initialize() 関数は現在
以下のようになっていますが、コメントで示したonInitialize() を std::string active_config
のすぐ上に持ってくることでご希望の動作を実現できるのではないかと思います。

ReturnCode_t RTObject_impl::on_initialize()
throw (CORBA::SystemException)
{
RTC_TRACE(("on_initialize()"));
ReturnCode_t ret(RTC::RTC_ERROR);
try
{
// onInitialize() をここに持ってくる
std::string active_config;
active_config = m_properties["active_config"];
if (active_config.empty())
{
m_configsets.update("default");
}
else
{
if (m_configsets.haveConfig(active_config.c_str()))
m_configsets.update(active_config.c_str());
else
m_configsets.update("default");
}
ret = onInitialize(); // この関数を↑に持っていく
}
catch (...)
{
return RTC::RTC_ERROR;
}
return ret;
}

また、これにより起動時のアクティブなコンフィギュレーションを
active_config で指定できます。
#active_config では名前空間的に上位すぎるので、最新版のソースでは
#configuration.active_config になっております。

ConfigSample のサンプルで configsample.conf ファイル内に

configuration.active_config: mode0

と記入することで起動時にmode0のパラメータセットがセットされます。

以上、よろしくお願いいたします。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01048] Configulationパラメータの設定

安藤様、坂本様、

末廣です。
ありがとうございます。

Ando Noriaki さんは書きました:
> ここの一番下の部分に記述があります。
> http://www.is.aist.go.jp/rt/OpenRTM-aist/html/E3839EE3838BE383A5E382A2E383AB2FE382B3E383B3E38395E382A3E382AEE383A5E383ACE383BCE382B7E383A7E383B3.html

これは何度も見たのですが、これがconfiguration setの指定であるとは
書いてありませんし、その書式も不明でした。
書式は以下ということですね。

conf.「コンフィギュレーションセット名」.「パラメータ名: 「設定値」

「設定値」は、どうせ文字列で読み込むから"設定値"としなくても
良いということですね。

これを直にrtc.confなどの最初に読み込むファイルに
書き込んではだめなのでしょうか?

> あとは、examples/ConfigSample のサンプルをご覧ください。

そうでしたか、これがファイルからconfigurationを
読み込むサンプルというのは気がつきませんでした。

いずれにしてもいろいろ分かりました。
どうもありがとうございます。

root
オフライン
Last seen: 32分 21秒 前
登録日: 2009-06-23 14:31
[openrtm-users 01036] ConfigulationパラメータとRTC状態遷移における制約に関する要望

皆様:
お世話になっております.早大の菅です.

すみません.先ほどのメールですが,
確認していくとCallbackはすでにあるようですね.

以下,細かい話です.

RTC::ConfigAdminクラスに,
onActivateSetなどのフック関数があり,
その中でRTC::OnActivateSetなどの
RTC::OnActivateSetインターフェースのオブジェクトが励起されるようです.

現状だと,RTObjectクラスのprotectedメンバで,
ConfigAdminクラスオブジェクトのm_configsetsがあるので,
これに対してsetOnActivateSetを使って上記の
RTC::OnActivateSetインターフェースを実装したオブジェクトをセットすれば
コールバックが実現されるようです.

ご参考まで.

Takashi Suehiro さんは書きました:
> 中島様、皆様、
>
> 末廣@電通大です。
> この件に関して私は以下のように考えています。
> (以前も似た議論があったような気が、、、)
> あくまで個人的な見解です。
>
> パラメタを変更するときにConfigulationとServicePortとで
> 何が違うかということです。
>
> Yusuke Nakajima さんは書きました:
>> (1)RTCがINACTIVE時にのみ、変更+反映可能なConfigulationパラメータ
> これが本来のConfigulationパラメタ。
>
>> (2)RTCがどの状態遷移にいても、変更+反映可能なConfigulationパラメータ
> こちらは個別のサービスポートで対応するのが良い。
>
> つまり私は、
> ・Configulationの方は比較的汎用なRTCを起動時などに
> パラメタ設定するときに使う、
> ・動作中の動的な変更はServicePortで行う、
> のが良いと考えています。
>
> 動作中のパラメタ変更は多くの場合、変更が及ぼす影響を
> 十分に考慮して必要な処理も合わせて行う必要があります。
> 単純にパラメタだけ替えれば良いという場合は少ないと感じています。
>
> もちろん、そういう場合が多いということであればConfigulationで
> サポートするのも良いと思うのですが、そうでなければ
> 単純にしておいた方が良いと考えます。
>
> 他の方々のご意見も聞いてみたいと思っています。
> いかがでしょうか。
>
> よろしくお願いします。

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク