OpenRTM / OpenRTP-aist

OpenRTP-aist: RT-Middleware and OMG RTC based component and system development tools implemented by AIST
Other
1 stars 6 forks source link

RTCをシステムエディタ上に表示したときにIDなどが空のServiceProfileを登録しようとする #288

Closed Nobu19800 closed 3 years ago

Nobu19800 commented 4 years ago

Describe the bug RT System EditorでRTCをシステムエディタ上に表示するとコンポーネントオブザーバーの登録の前にIDなどが空のServiceProfileを登録しようとする。

SDOPackage.ServiceProfile(id='', interface_type='', properties=[], service=None)

To Reproduce Steps to reproduce the behavior:

  1. RTCを起動する。
  2. RT System Editor上でRTCをネームサービスビューからシステムダイアグラムにドラッグアンドドロップする。
  3. RTCのログに以下のエラーが出力される。
2020-03-18 16:16:38,017 file.SdoServiceAdmin ERROR type  not exists.

Reproducibility 100%

Expected behavior 空のサービスプロファイルを登録しようとする意図が不明のためその部分を削除すれば解決するかも不明。なぜこうなっているのかの理由を教えてほしい。

Screenshots or Logs

Environment

Additional context

ga-sakamoto commented 4 years ago

対象RTCのOpenRTM-aistのバージョンをチェックし,オブザーバが使用可能かどうかを確認するため行っている動作です. オブザーバが使用できないバージョンのRTCの場合,SDOConfigurationへServiceProfileをAddしようとすると例外が発生していたので,最初に空のダミープロファイルをAddし,例外が発生するか?(オブザーバが使用できるか?)のチェックを行っています.

n-ando commented 4 years ago

空のServiceProfile を登録しても副作用はないはずなので、過去のRTCへの影響も考えられるのでこのままにします。 以下のエラーメッセージは、WARNにするなどした方がいいです。

2020-03-18 16:16:38,017 file.SdoServiceAdmin ERROR type not exists. このメッセージはどこにあるのでしょうか?C++のasterには見当たりませんでした。

n-ando commented 3 years ago

OpenRTM-aist-1.0では、空のプロファイルをaddするとExceptionが返ってきていた。 → 1.0 かそれ以降かをこれで判断できる。→例外は返るが落ちない → Observer参照入りProfileをいきなり登録するとRTC側が落ちる。→これを回避したい

1.1以降では、

以上から、以下のSDOサービスがまともに使えるか否かのRTCバージョンチェックロジックが実装されている。

https://github.com/OpenRTM/OpenRTP-aist/blob/843f076534b604a25303852b027ede28adb93c9c/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaComponentImpl.java#L2163-L2182

というわけで、この処理の流れ自体は過去バージョンとの互換性のために必要。