OpenRTMプラグイン分離のお知らせ

ChoreonoidをOpenRTMと連携して使用するためのOpenRTMプラグインについて、これまではChoreonoid本体に付属しておりましたが、この度この部分が本体からは分離されることになりました。

本体から分離したOpenRTMプラグインは、今後産総研のOpenRTM開発チームによって開発と管理が行われることになります。

この経緯としまして、まずこれまでChoreonoidは産総研で開発され、同じく産総研で開発されているOpenRTMとの連携もあわせて産総研内で開発されてきました。しかし2019年4月よりChoreonoidの開発はその事業化のために設立された株式会社コレオノイドが引き継くごとになりました。そのような状況の中で、OpenRTMプラグインをOpenRTMの最新版に対応させ保守を続けていく活動は、OpenRTMに一番熟知しているOpenRTM開発チームがより適任という判断に至りました。その旨株式会社コレオノイドの方からOpenRTM開発チームに申し入れましたところ、これを受け入れていただく運びとなりました。この件の受け入れについて、産総研のOpenRTM開発チームには大変感謝しております。

分離作業自体は既に完了しており、Githubリポジトリにおいてこれは現在のところ “remove-openrtm-plugin” というブランチで格納されています。これからこのブランチをmasterにマージします。それ以降はOpenRTMプラグインを利用するために必要な作業が若干変わってきますので、その方法についてまずこのトピックでお知らせしたいと思います。

2 Likes

分離されたOpenRTMプラグインの取得方法とビルド方法について説明します。

まず、以下の作業は、OpenRTMプラグイン分離後のChoreonoidが対象となります。それは現在のところremove-openrtm-pluginブランチに格納されていますが、間もなくmasterにマージする予定です。OpenRTMプラグイン分離前のChoreonoid本体に対して分離されたOpenRTMプラグインを使用することはできませんので、ご注意ください。

分離されたOpenRTMプラグインは、以下のリポジトリに格納されています。

なお、これは正確にはプラグインだけではなく関連するライブラリなども含んでおりまして、正式には “Choreonoid-OpenRTM” モジュールと呼ぶことにします。

ビルド方法については、以下の2通りの方法があります。

  1. Choreonoid本体ソースのextディレクトリ以下に配置して、Choreonoid本体とまとめてビルドする

  2. Choreonoid本体が既にインストールされている環境で、Choreonoid本体とは独立してビルドする

まず1の方法について説明します。

Choreonoid本体のソースコード内に “ext” というディレクトリがありますので、そこに Choreonoid-OpenRTMモジュールのリポジトリをcloneしてください。

cd Choreonoidのソースディレクトリ/ext
git clone https://github.com/OpenRTM/choreonoid-openrtm.git

この状態にしてしまうと、OpenRTM分離前のものと、やることはほとんど変わりません。マニュアルの以下のページの手順に沿ってビルド・インストールを行うことが可能です。

一点注意があるとすれば、この方法でOpenRTMモジュールをビルドして、さらにそれに依存するプラグインやRTCなどもext以下でビルドしたい場合です。その場合、ビルドの順番について依存している方が後になるようにする必要があります。

ext以下に複数のモジュールがある場合のビルド順は、各モジュールのディレクトリ名で決まります。順序はディレクトリ名の辞書順で行われるようになっています。名前の辞書順序が想定するビルド順序と異なる場合は、各モジュールのディレクトリ名を変更する必要があります。その場合、ディレクトリ名に数値のプレフィックスをつけるのが分かりやすいかと思います。

なお、OpenRTMモジュールに依存している方のモジュールがOpenRTMモジュールのCMakeLists.txtにおいて定義されている変数を使用したいこともあるかもしれませんが、これはそのままでは使用できません。もしどうしても使用する必要がある変数などがある場合は、対策を考えますので、お知らせいただければと思います。

次に2の方法について説明します。

この場合、まずはChoreonoid本体のビルド・インストールを行ってください。その際、OpenRTMモジュールをビルド・実行するのに必要なモジュールとして、以下のCORBAに関するCMakeオプションもONにしてビルドしてください。

  • ENABLE_CORBA
  • BUILD_CORBA_PLUGIN

Choreonoidはビルドだけを行ってビルドディレクトリで使用することも可能ですが、この方法においてはインストールまで行うことが必要になります。Linuxの場合、 “make install” まで行うということです。

なお、make install を行う場合、デフォルトのインストール先は /usr/local になりますが、これは慣習上そうなっているだけで、これをそのまま用いるのはおすすめできません。/usr/local以下にいろいろなソフトウェアがインストールされると、管理が難しくなるからです。そこで通常はCMakeの設定で BUILD_INSTALL_PREFIX を設定して、どこか管理しやすいディレクトリにインストールします。

その場合、そのディレクトリに各種のパスが通っていることが必要となりますが、今回のOpenRTMモジュールのような外部ビルドモジュールをビルドする場合は、CMakeのパスが通っている必要があります。これは環境変数 CMAKE_PREFIX_PATHで設定できます。

例えば /home/hoge/usr 以下にインストールしている場合、

export CMAKE_PREFIX_PATH=/home/hoge/usr

とすれば、このディレクトリ内にインストールされたCMakeの設定ファイルが使用できるようになります。他にもこのパスを設定しているシステムがあるかもしれないので、

export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/home/hoge/usr

といった記述にしたほうがよいかもしれません。

これを通常は .bashrcなどに記述して、何度も入力しなくてよいようにします。

なお、デフォルトの /usr/local にインストールする場合は、このパスはデフォルトで通っているようですので、設定する必要はありません。

また、Windowsでは、CMakeでConfigureをしてからCMakeの
Choreonoid_DIRという変数を設定するという方法でもOKです。その場合、Choreonoid_DIRにChoreonoidインストール先の share/choreonoid/cmake ディレクトリを指定します。(これはChoreonoidをc:\choreonoidといったディレクトリにインストールしている場合は自動で検出します。)

上記の準備ができているとして、まず適当なディレクトリにChoreonoid-OpenRTMモジュールをcloneします。(「適当なディレクトリ」はChoreonoid本体のソースとは別のディレクトリとしてください。)

git clone https://github.com/OpenRTM/choreonoid-openrtm.git

そして、このディレクトリ内でbuildディレクトリを作成し、cmakeし、ビルドします。

cd クローンしたディレクトリ
mkdir build
cd build
cmake ..
make

といった作業になります。

ここで、以下のCMakeオプション(変数)にご注意ください。

  • Choreonoid_DIR
    • Choreonoid本体のインストール先です。CMAKE_PREFIX_PATHにインストール先が設定されていれば、自動で検出されます
  • CMAKE_INSTALL_PREFIX
    • ここでビルドするOpenRTMモジュールのインストール先です。これはChoreonoid本体のインストール先に合わせる必要があります。CMakeのバージョン3.7以降(Ubuntu 18.04以降)ではこの変数が自動で設定されますが、それ以前のCMake(Ubuntu 16.04)の場合は、手動で入力する必要があります。

ビルドとインストールに成功すると、ビルドされたOpenRTM関連ライブラリやプラグインが、Choreonoid本体の所定のディレクトリ内に格納され、OpenRTM連携機能が使えるようになります。

OpenRTM関連モジュールを分離したChoreonoidのバージョンをmasterブランチにマージしました。

今後Choreonoid開発版でOpenRTM連携機能を使用したい場合は、上記の方法でChoreonoid-OpenRTMモジュールを別途導入して使用するようにしてください。

ChoreonoidのOpenRTMプラグイン choreonoid-openrtm をOpenRTM-aist の github リポジトリへ fork させていただきました。今後は、OpenRTM-aist のリポジトリで管理させていただきます。

ご対応いただきありがとうございます!

上記のChoreonoid-OpenRTMモジュールのビルド方法について、リポジトリのアドレスをOpenRTMアカウントのものと差し替えておきました。今後こちらが公式になりますのでよろしくお願いします。

Choreonoidの最新版とChoreonoid-OpenRTMモジュールをWindows 10,Visual Studio 2015でビルドしてみました.

以下の二つの変更が必要でした.

  • ChoreonoidのCMakeでINSTALL_SDKにチェック(以前からそうですが,Windowsではこのオプションがデフォルトではオフになっています).

  • Choreonoid-OpenRTMのビルドの際に,PyOpenRTMPluginで「LNK1104: ファイル ‘python37.lib’ を開くことができません。」でエラーになります.正しい対処法ではないと思いますが,choreonoid-openrtm\src\OpenRTMPlugin\pybind11\CMakeLists.txt
    target_link_libraries()を以下のように書き直すとビルドが通りました.

target_link_libraries(${target} CnoidOpenRTMPlugin CnoidPyBase C:/Python37/Libs/python37.lib)

その後,INSTALLをビルドして,Choreonoidを起動すると,RTC関係の項目が増えており,OpenRTM-*のプロジェクトのシミュレーションが実行できることを確認しました.

@n-ando ChoreonoidのOpenRTMプラグインに関する質問はどこですればいいですか?ここではないですよね? https://github.com/OpenRTM/choreonoid-openrtm のリポジトリにIssuesを設置してはどうでしょうか?GitHubの設定でフォークしたリポジトリでもIssuesを設けることはできます.

すみません、だいぶ間があいてしまいましたが、Choreonoid-OpenRTMのリポジトリに関して、以下の対応をしました。

  • 公式リポジトリ( https://github.com/OpenRTM/choreonoid-openrtm ) にREADME.md を作成し、このソフトウェアの概要とインストール方法などが分かるようにしました。

  • 私のアカウントで当初作成した暫定リポジトリ( https://github.com/s-nakaoka/choreonoid-openrtm )については、README.mdにて公式リポジトリの案内を行い、リポジトリ自体もアーカイブ化して更新できないようにしました。

  • Choreonoid本体のマニュアルからOpenRTMに関する記述を削除し、OpenRTMプラグインに関するマニュアルは分離してそのソースをChoreonoid-OpenRTMのリポジトリに含めました。そちらはSphinxというツールを使うことでHTMLなどに出力できます。このマニュアルについて、今後OpenRTMの公式サイト等で公開いただくよう依頼をしています。

公式リポジトリ( https://github.com/OpenRTM/choreonoid-openrtm ) でIssuesもPull requestもできるようになっているようですので、今後OpenRTM関連のご質問や修正依頼はそちらで行ってください。

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