ダウンロード
最新バージョン : 2.0.2-RELESE
| 2.0.2-RELESE | ダウンロードページ |
OpenRTM@Github
OpenRTM-aist GitHubサイト
ROS
Robot Operating System
Choreonoid
モーションエディタ/シミュレータ
DAQ-Middleware
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
| 2.0.2-RELESE | ダウンロードページ |
OpenRTM-aist GitHubサイト
Robot Operating System
モーションエディタ/シミュレータ
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
OpenRTM-aist MLの皆様:
お世話になります.菅です.
Java版のrtcdの動作について気になっているので,
メールを書きました.
rtc.confに適切な設定をしたrtcdを起動することで,
複数のRTCを簡単に起動できるのは皆さんご存知かと思います.
ポイントとしては,
manager.is_master : YES
manager.modules.load_path : モジュールがある場所
manager.modules.preload : モジュールのファイル名
manager.components.precreate : 自動的に起動するComponentの名前
と行った所だと思いますが,
Javaだけ,挙動が大きく違うので,変更してはどうか,という提案です.
たとえば,カレントディレクトリでrtcdを起動する場合,
ディレクトリ内に,
- rtc - ConsoleOut.dll
- ConsoleIn.dll
- conf - rtc.conf
のように配置されている場合,
manager.modules.load_path : rtc
manager.modules.preload : ConsoleIn.dll, ConsoleOut.dll
manager.components.precreate : ConsoleIn, ConsoleOut
のように設定するのが定石と考えていますが,
現状のJava版では,相対パスをパッケージ名と解釈するコードがあるように見えます.
jp/go/aist/rtm/RTC/ModuleManager.javaのload関数内です.
svnリポジトリ:
http://svn.openrtm.org/OpenRTM-aist-Java/trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/ModuleManager.java
230行目あたりが当該の箇所で,getModuleName関数は,jarファイル名を判別すると,
ファイルまでのパスをクラスのパッケージパスと解釈して文字列を生成している
ように見えますが,あんまり意味がよくわかりません.
そこで,添付のパッチのように,manager.modules.preloadに設定されたものが
jarファイルの場合に,RTCのクラス名がデフォルトパッケージにある,という前提を元に,
jarをURLClassLoaderで開き,クラス名からClass型オブジェクトを生成するようにしました.
かなりアドホックなやり方ですが・・・
ご意見を頂ければと思います.
それでは
--
///////////////////////////////////////////////////////////////////
// Yuki Suga, Ph.D.
// URL: http://www.ysuga.net/?lang=en
// E-mail: ysuga@ysuga.net
///////////////////////////////////////////////////////////////////