Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
Documentation | 2 |
Choreonoid
Motion editor/Dynamics simulator
OpenHRP3
Dynamics simulator
OpenRTP
Integrated Development Platform
AIST RTC collection
RT-Components collection by AIST
TORK
Tokyo Opensource Robotics Association
DAQ-Middleware
Middleware for DAQ (Data Aquisition) by KEK
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
///////////////////////////////////////////////////////////////////