OpenRTM-aist-1.2.0への対応

3/15にOpenRTM-aist-1.2.0がリリースされましたが,対応できるか試された方はおられますか?

Windows 10 1809, VS2015, Python 3.7.2でビルド,実行できました.

遅くなってしまいましたが、Ubuntu 18.04 にOpenRTM-aist 1.2.0 をインストールして試してみました。

ビルドに一部失敗したり、大量の警告が出たり、ビルドできても起動しないといった問題がありましたが、それらについては修正できるところは修正し、いちおうビルドと起動はできるようにしました。

ただし、コンパイル時にOpenRTMのヘッダに起因してWarningが多数出ます。それについてはOpenRTMのフォーラムでも指摘しています。
https://www.openrtm.org/openrtm/ja/node/6587

そして、OpenRTMのサンプルについてまだ正常に動作しない状況です。

具体的には、以下のような不具合があります。

  • OpenRTM-SR1Walk.cnoid, OpenRTM-PA10Pickup.cnoid
    RTCのactivateがうまく出来ていない模様で、シミュレーションを実行するとロボットが崩れ落ちる。

  • OpenRTM-Tank.cnoid, OpenRTM-TankVisionSensors.cnoid
    起動時に terminate called after throwing an instance of ‘CORBA::BAD_PARAM’ という例外で落ちる。

  • OpenRTM-AizuSpider-Terminal.cnoid と OpenRTM-AizuSpiderSS-Remote.cnoid の組み合わせ(同一ホスト上で実行)
    シミュレーション実行時に、Error: the application attempted to invoke an operation on a nil reference. terminate called after throwing an instance of ‘CORBA::INV_OBJREF’ というエラーで落ちる

どうもOpenRTM 1.1.2と1.2.0でAPIの使用方法についても一部変更があるようで、上記の不具合もそれに起因するものかと思われますが、現状ではどこがどう変更されたかが分からないため、修正が難しいところがあります。

あとは、プロジェクト起動時から、コンソールにRTCの情報がテキストで大量に出力されるようになってしまいました。これはOpenRTM1.2で仕様が変わってデフォルトでコンソールにいろいろと出力されるようになったのかと思われます。あまりコンソールにいろいろ出てきても困るので、この機能をオフにする方法は無いものかと思っています。

升谷先生によるとWindows上では1.2でも問題なく動いているようなのですが、Ubuntu上で私が確認した限りでは以上のような状況です。したがって、当面はChoreonoidについてはOpenRTM 1.1.2を継続して利用されるのがよろしいかと思います。

_REENTRANTの件対応できておらずすみません。
バグなどの対応状況については、Githubのほうで対応していますのでそちらをご覧ください。

その他の事象については、ECのActivate/Deactivateの同期・非同期の問題かもしれません。

コメントありがとうございます。
OpenRTMのgithubリポジトリがあったのですね!知りませんでした。
本件ご対応いただけるということでありがとうございます。

ちなみに現在の開発版はバージョン2.0になるのですね。
まだしばらくは1.1.2を使う必要がありそうですし、1.2.0への対応もしなければならないので、1.1.2や1.2.0に対してもこの問題(_REENTRANTの件)を修正していただけると助かります。

あとOpenRTMのサイトが復活したようですが、1.1.2用の一括インストールスクリプトのリンクが切れていて、1.1.2をインストールしづらい状況になっています。
https://www.openrtm.org/openrtm/ja/node/6034
便乗になってしまい恐縮ですが、こちらも修正いただけるとうれしいです。

その他の事象については、ECのActivate/Deactivateの同期・非同期の問題かもしれません。

コメントありがとうございます。
確かにActivate時に落ちているようなので、関係がありそうです。
具体的にどのような変更がなされたか、どこかにまとめていただけないでしょうか?
よろしくお願いいたします。

openrtm.orgのサイトはまだ仮運用ですが間もなく本格復旧できると思います。

1.2で落ちる件はこちらで調査したのですが、ECのSingletonのFactoryのインスタンスが複数できてしまうことが原因のようです。
ECのFactoryを宣言している部分で、以下のようにexternを入れてみていただけないでしょうか?

extern template class coil::Singleton<coil::GlobalFactoryRTC::ExecutionContextBase>;

よろしくお願いいたします。

1.1.2用の一括インストールスクリプトのリンクを修正しました。
このスクリプトを使うと、OpenRTM-aistの最新パッケージである1.2.0がインストールされます。

1.1.2のパッケージはtarで固めたものを用意しております。下記ページからダウンロードできますので、よろしくお願いいたします。

OpenRTM-aistのmaster、RELENG_1_2ブランチのソースコードについてChoreonoidで問題が出ないように修正しました。1.2については以下のコマンドでインストール後、ChoreonoidをビルドするとUbuntuでも正常に動作するはずです。

git clone -b svn/RELENG_1_2 https://github.com/OpenRTM/OpenRTM-aist
cd OpenRTM-aist
./autogen.sh
./configure
make
make install

Windows、Ubuntuで動作を確認しましたが、以下の問題が発生しました。

  1. Visual Studioでビルド失敗

Windowsについては、ChoreonoidのCMakeLists.txtで-Wno-deprecatedオプションを設定する部分で-Dがないためエラーになりました。

 list(APPEND OPENRTM_DEFINITIONS -Wno-deprecated)
  1. OpenRTM-Tank.cnoidが動作しない

RTCダイアグラム上にRTCが配置されず、データポートも接続されていません。他のサンプルは動作しています。以下のようなメッセージしか表示されていないため、原因がよく分かりません。

 RTシステム "/home/aaaaaa/choreonoid/build/install/share/choreonoid-1.7/project/TankSystem.xml" を読み込み中
 -> 失敗.

上記ご回答いただきありがとうございます。
すみません、まだ確認できていないのですが、今後確認を進めてまいります。