Closed y-masutani closed 5 years ago
色々試してみたのですが問題を再現できていません。 状況がよく分からないのですが、どういうRTCをいくつ存在しているのでしょうか? また2本目の接続というのは、例えばサービスポートA、B、Cがあって、サービスポートAとBが接続しているところにAとCを接続しようとした、という認識であっていますでしょうか?
一つのprovidedなポートに,二つのrequiredなポートを接続しようとしています.
具体的には,菅佑樹様が作成されたコンポーネントMapServerのmapServerポート(provided)に,NavigationManagerのmapServerポート(required)とLocalization_MRPTのmapServerポート(required)を接続しようとしています.順番に関係なく,2本目を接続する際にエラーになります.
https://github.com/sugarsweetrobotics/MapServer https://github.com/sugarsweetrobotics/NavigationManager https://github.com/sugarsweetrobotics/Localization_MRPT
ただし,そのままではMRPTの新しいバージョンやOpenRTM-aist-1.2.0で使えないのでフォークして多少手を入れています.
https://github.com/MasutaniLab/MapServer/tree/for-OpenRTM-aist-1.2.0 https://github.com/MasutaniLab/NavigationManager/tree/for-OpenRTM-aist-1.2.0 https://github.com/MasutaniLab/Localization_MRPT
詳細について教えていただいてありがとうございます。 Java版のバグのようです。原因については調査します。
以下のように修正しました。ご迷惑をおかけして申し訳ありません。
Windowsのインストーラで導入したjarファイルを入れ替えれるような形で提供していただけないでしょうか.よろしくお願いいたします.
以下のように修正しました。ご迷惑をおかけして申し訳ありません。
* [OpenRTM/OpenRTM-aist-Java#31](https://github.com/OpenRTM/OpenRTM-aist-Java/pull/31)
jarファイルを自前で作るにはどうすればいいですか? https://github.com/OpenRTM/OpenRTM-aist-Java/archive/v1.2.0.zip をダウンロードして展開し,buildRTC.batを実行するだけではダメでした.
BUILD FAILED
略\OpenRTM-aist-Java-1.2.0\jp.go.aist.rtm.RTC\build.xml:125: taskdef class net.charabia.jsmooth
gen.ant.JSmoothGen cannot be found
using the classloader AntClassLoader[]
申し訳ございません。Windows環境でのビルド設定はメンテナンス不十分でした。 Linux環境であれば下記手順でビルドして頂けます。(Ubuntu16.04で確認)
git clone https://github.com/OpenRTM/OpenRTM-aist-Java.git
cd OpenRTM-aist-Java/
git checkout svn/RELENG_1_2
./buildRTC.sh
これで、jp.go.aist.rtm.RTC/jar下に生成されます。 よろしくお願いします。
アドバイスありがとうございます.Ubuntuでjarファイルを作ることができました.OpenRTM-aist-1.2.0.jarをWindowsへコピーすればOKでしょうか?
はい、Windows環境へコピーして使用できます。 よろしくお願いいたします。
UbuntuでビルドしたOpenRTM-aist-1.2.0.jar
をWindowsのC:\Program Files\OpenRTM-aist\1.2.0\jar\OpenRTM-aist-1.2.0.jar
へコピーし,JavaのRTCのMapServerとNavigationManagerをビルドし直し,同じことを試しましたが,改善しません.ログを表示させながら試しているのですが,以下のように表示されます.
1本目required側
May 24 22:24:44.708 INFO: mapServer: interface matched with old descriptor: port.RTC::OGMapServer.mapServer
1本目provided側 表示なし
2本目required側
May 25 07:26:16.236 mapServer ERROR : connectNext() in notify_connect() failed.
May 25 07:26:16.236 CorbaPort ERROR : subscribeInterfaces() failed.
May 25 07:26:16.252 mapServer ERROR : subscribeInterfaces() in notify_connect() failed.
May 25 07:26:16.252 mapServer ERROR : Connection failed. cleanup.```
2本目provided側
May 25 07:26:16.267 mapServer ERROR : Invalid connector id: 1e4b9aa2-ec3b-4264-8a74-1b477937541f
順番を逆にしてもid等は異なりますが同様です.
解決に向けてどのようにしていけばいいでしょうか?
OpenRTM-aist-1.2.0.jar
がコピーされていれば問題は解決されているはずです。
念のためにこちらでMapServer、NavigationManager、Localization_MRPTのサービスポートを接続して動作確認したのですが、問題は発生しませんでした。
未だに解決しない原因としては、OpenRTM-aist-1.2.0.jar
がコピーできていないか、RTC実行時に何故か別のOpenRTM-aist-1.2.0.jar
がクラスパスに設定されているという事が考えられますが、そうでないのであれば見当もつきません。
上手くできました.敗因は,古いjarファイルをOpenRTM-aist-1.2.0.jar.SAVED
という名前で同じディレクトリに残していたことでした.このため,起動用のバッチファイルの
for /F %%A in ('dir "%JAR_BASE%OpenRTM*" /B') do (set FILE1=%%A)
に捕捉され...という次第です. お騒がせしました.問題が解決でき助かりました. ありがとうございました.
1.2.0の環境で,あるRTCのサービスポートへ異なるRTCから接続しようとすると,2本目の接続時にエラーになります.RTSEでは「接続に失敗しました」というエラーパネルが現れます.rtshellのrtconコマンドでは,「rtcon: Failed to make connection: Precondition not met」と表示されます.1.1.2の環境では,同じRTCの組み合わせで問題なく使えていました.
Windows 10にOpenRTM-aist-1.2.0-RELEASE_x86_64.msiをインストールして使っています. 確認をお願いいたします.