ソースコードからのビルドとインストール (Ubuntu Linux編)

Linuxには様々なディストリビューションがありますが、現在コレオノイドが公式にサポートしているディストリビューションは Ubuntu Linux になります。本ドキュメントでは、Ubuntu Linux におけるコレオノイドのソースコードからのビルド方法について説明します。ポイントを押さえれば他のディストリビューションでもビルド出来ると思われますので、必要であればトライしてみてください。

コレオノイド最新版の1.4では、Ubuntuバージョン 12.04, 12.10, 13.04 でのビルドと動作を確認しています。32ビット(x86)と64ビット(x64)はどちらでも利用可能です。

ソースコードの取得・展開

コレオノイドのソースアーカイブを ダウンロード のページからダウンロードし、適当なディレクトリに展開して下さい。 例えばコマンドラインからバージョン1.4.0のソースアーカイブを展開する場合は、

unzip choreonoid-1.4.0.zip

とします。この場合、choreonoid-1.4.0 というディレクトリが生成され、この中にソースファイル一式が入っています。

以下の説明ではこのソースアーカイブの展開先ディレクトリをカレントディレクトリにしているものとします。:

cd choreonoid-1.4.0

などとしてカレントディレクトリを移動しておいてください。

開発ツールと依存ソフトウェアのインストール

コレオノイドの基本機能をビルドするには、以下のソフトウェアが必要になります。

  • C/C++標準開発ツール一式: C/C++コンパイラ、Make等の標準開発ツール一式が必要です。Ubuntu であれば 'build-essential' というパッケージで一式インストールできます。C/C++コンパイラに関しては通常GCCを用いますが、Clang/LLVMも利用可能です。
  • CMake : ビルドツールです。本ツール独自の記述から、MakeやVisual Stuioといった標準ビルドツールのファイルを生成します。多くの環境に対応したビルド記述を効率的に行うことが可能です。
  • Boost C++ Libraries : C++の便利なライブラリ集です。
  • Eigen : 行列・ベクトル・線形代数演算のための高速・高機能なテンプレートライブラリです。
  • Qt : GUIツールキットを含むフレームワークライブラリです。
  • gettext : 表示を多国語対応とするためのツール・ライブラリです。
  • libjpeg : JPEG形式の画像ファイルを読み込むためのライブラリです。
  • libpng : PNG形式の画像ファイルを読み込むためのライブラリです。
  • LibYAML : YAML形式テキストのパーサです。
  • GLEW : OpenGLの拡張機能を利用するためのライブラリです。

また、オプションでビルド可能な機能については、以下のようなソフトウェアも必要となってきます。

  • omniORB : オープンソースのCORBA実装です。CORBAプラグインやOpenRTMプラグイン、OpenHRPプラグインをビルドする場合に必要です。
  • OpenRTM-aist : 産総研によるRTミドルウェアの実装です。OpenRTMプラグインをビルドする場合に必要です。
  • Open Dynamics Engine : 物理計算ライブラリです。ODEプラグインをビルドする場合に必要です。
  • Bullet Physics Library : 物理計算ライブラリです。Bulletプラグインをビルドする場合に必要です。
  • GStreamer : メディアファイルを扱うためのライブラリです。Mediaプラグインをビルドする場合必要です。
  • PulseAudio : 音声出力を行うためのシステムです。Ubuntuでは標準でインストールされていますが、Mediaプラグインをビルドする場合にはクライアント開発用ライブラリが必要になります。
  • libsndfile : 音声ファイルを読み込むためのライブラリです。Mediaプラグインをビルドする場合に必要です。

Ubuntuにおいては、 "misc/script" 以下にある "install-requisities-ubuntu-x.x.sh` というスクリプトを用いることにより、以上のソフトウェアのほとんどを簡単にインストールすることができます。x.xはUbuntuのバージョンに対応します。例えばUbuntu 12.04であれば

misc/script/install-requisities-ubuntu-12.04.sh

を実行すると、sudoのパスワードが求められるので入力してください。すると、パッケージシステム経由で、必要なパッケージが自動でインストールされます。

なお、上にあげたソフトウェアのうち、上記スクリプトでインストールされないのは、OpenRTM-aist と Bullet Physics Library です。

OpenRTM-aist については今のところUbuntuの標準パッケージにはなっていません。開発元が用意している追加リポジトリからパッケージをインストールするか、ソースアーカイブからビルドするなどしてください。詳しくはOpenRTM-aistのドキュメントを参照ください。OpenRTMプラグインが必要なければ、インストールする必要はありません。

Bulletについては、Ubuntu 12.10 以降で標準パッケージに含まれているのですが、そちらのパッケージでインストールすると必要なファイルが欠けているようでBulletプラグインをコンパイルできません。従って、Bulletプラグインをビルドする場合にはBulletをソースコードからコンパイルしてインストールするようにしてください。こちらについても、Bulletプラグインが必要なければ、インストールする必要はありません。コンパイルの際にはCMakeの設定で BUILD_SHARED_LIBSUSE_DOUBLE_PRECISION をONにしておきます。

注釈

Ubuntu の 12.10 の Eigenライブラリのパッケージはバージョン3.1のベータ版となっているようですが、このバージョンのEigenを用いてChoreonoidをビルドするとシミュレーションの際に落ちてしまうことがあります。詳細は不明ですが、ベータ版ということでEigenの方に不具合が含まれている可能性があります。

従いまして、Ubuntu 12.10 で利用の際にはEigenを 配布元 からダウンロードしてインストールするようにしてください。バージョンについては、3.0系と3.2系で問題なく動くことを確認していますので、そちらをお使いください。この場合、Eigenのアーカイブを展開したディレクトリ内で、

mkdir build
cd build
cmake ..
sudo make install

などとすればOKです。

CMake によるビルド設定

まず、cmake コマンドを使って コレオノイドをビルドするために必要な Makefile を生成します。ソースディレクトリ上で

cmake .

を実行すると、必要なライブラリをチェックし Makefile を生成します。(cmake コマンドのあとのピリオドに注意してください。)

対象バージョンのUbuntuにおいて上述の説明通りに作業を進めていれば問題なくMakefileが生成されるはずですが、必要なライブラリが所定の場所にインストールされていなかったりすると、cmake 実行の際にエラーが出ることがあります。その場合には、適切にインストールを行うか、CMakeによるビルド設定を修正することが必要になります。ビルド設定は cmake コマンドを用いてコマンドラインから行うことも可能ですが、ccmake コマンドを

ccmake .

と実行することにより、各種設定をメニュー形式で行うことも可能です。詳しくは CMake のマニュアルを参照してください。

コレオノイドは、上記のデフォルトではビルドされないオプション機能もいくつか備えています。 それらの概要を オプションモジュールの概要 にまとめてありますので、希望する機能がある場合は CMake の設定で有効にしてください。 例えば、Open Dynamics Engine によるシミュレーション機能を使いたい場合は、 BUILD_ODE_PLUGIN を "ON" にしておきます。 また、 操作チュートリアル で説明の対象としているGR001ロボットを動かす場合は、 BUILD_GROBOT_PLUGIN を "ON" にしておきます。

コレオノイドのビルド

CMakeによりMakefile の生成が成功すれば、makeコマンドでコレオノイドをビルドします。 "~/choreonoid" のディレクトリで

make

を実行します。

マルチコアCPUであれば、-j オプションにより並列ビルドを行うことでビルド時間を短縮できます。例えば、

make -j4

とすると、最大で4つのビルドプロセスが同時に実行されることになります。通常論理コア数に1〜2を足した程度のプロセス数を指定することで、CPU能力を最大限に活かした並列ビルドができるのではないかと思われます。

なお、CMakeが生成した Makefile による make では、実行コマンドの詳細は表示されず、ビルド過程がすっきりとまとまった表示で出力されます。これはビルドの進行を確認する際には大変見やすくてよいのですが、GCCに与えている細かなコンパイルオプションなどは確認できません。その必要があるときには、

make VERBOSE=1

というように VERBOSE変数をオンにして make を行うことで、全てのコマンド実行文の詳細を出力させることも可能です。

注釈

上記の例では説明をシンプルにするため、ソースディレクトリでそのままビルドを行なっていますが、CMakeではサブディレクトリを作ってそこでビルドを行うことが推奨されています。これにより、ソースファイルとビルドのための中間ファイルを分離できますし、デバッグ用・リリース用など、設定を分けて同時に扱うことも可能となります。 これを行う場合、例えばソースディレクトリのトップで以下のようにします。

mkdir build
cd build
cmake .. (or ccmake ..)
make

注釈

32ビット環境でGCCを使ってコンパイルする場合、SSE関連の拡張命令を有効とすることで、シミュレーションなどの実行速度がより速いバイナリを生成できます。これはCMakeの ADDITIONAL_CXX_FLAGS_RELEASE に以下のようなオプションを入力することで実現できます。

-mtune=core2 -march=core2 -mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2

開発者の環境で試したところ、この記述を行うことによりシミュレーションの実行速度が10〜15%程度速くなりました。

なお、64ビット環境ではデフォルトでこのような拡張命令を使うようになっており、特に設定する必要はありません。また、64ビット環境では、32ビット環境で上記の対応を行った場合よりもさらに実行速度が向上するようです。

インストールと実行

上記の手順でビルドしたコレオノイドの実行ファイル等は、そのまま実行することが可能です。ビルドに成功すれば、binというディレクトリの下に "choreonoid" という実行ファイルが生成されていますので、これを実行してください。

bin/choreonoid

ビルドに問題がなければ、コレオノイドのウィンドウが起動します。

テストとしてサンプルを試してみましょう。例えば、:

bin/choreonoid share/project/SR1Walk.cnoid

を実行すると、コレオノイドが起動してロボットの歩行シミュレーションのサンプルが読み込まれます。シミュレーション開始ボタン(緑色の再生ボタンのようなボタン)を押せば、ロボットが歩き出すはずです。 シミュレーションサンプル で他のサンプルについても紹介していますので、それらもぜひ試してみてください。

このようにLinuxにおいては、ビルドを行うソースディレクトリ内に出力された実行ファイルを直接実行することも可能となっています。これで利用してもよいのですが、一方で、

make install

を実行することで、ビルドしたファイル一式を所定のディレクトリにインストールすることも可能です。 デフォルトでは /usr/local 以下にインストールされますが(この場合 sudo make install としてください)、CMake の CMAKE_INSTALL_PREFIX の設定でインストール先のディレクトリを変更することも可能です。なお、通常はインストール先のlibディレクトリに共有ライブラリパスが通っている必要がありますが、 ENABLE_INSTALL_RPATH を ON にしておくと、パスが通っていなくてもそのまま動かすことが可能となります。

Qtスタイルの変更による描画速度の改善

コレオノイドが利用しているGUIライブラリのQtでは、ボタン等のGUI部品の外観をカスタマイズする「スタイル」機能が備わっています。そして、Ubuntuのデフォルト状態では、このQtのスタイルが、Linuxの標準GUIライブラリである "GTK+" の外観と同じになるように設定されています。実はGTK+自体も見た目をカスタマイズする機能を備えているのですが、QtのGTK+スタイルは、GTK+においてカスタマイズされた見た目もダイナミックに反映してくれます。

これは外観の統一という点で大変素晴らしい機能なのですが、GTK+の動的なスタイル設定をQtでも反映させることにはやはりコストがかかってしまうようで、このデフォルト状態ではQtのGUI部品の描画が大変遅くなってしまいます。それでも通常のアプリケーションではさほど問題にならないのですが、コレオノイドでは例えばロボットの関節角の表示や変更を行うGUI機能があり、これをロボットの動きと連動させる場合などには、多くのGUI部品をスムーズに描画することが求められます。しかしQtのスタイルがGTK+スタイルであると、このような場合に描画がスムーズでなくなってしまいます。

これを解決するため、QtのスタイルをGTK+でないスタイルに変更しておくことを強くお勧めします。これには、"qtconfig-qt4" というコマンドを使うのが簡単です。(アプリケーションメニュー内では通常「Qt4設定」と表示されるようです。)このツールを起動し、「外観」の「GUIスタイル」について、適当な変更を行なってください。例えば "Cleanlooks" スタイルに変更します。そしてメニューの「ファイル」-「保存」を実行すると、この設定が反映されます。これでコレオノイドのGUIもよりスムーズに動くようになります。

Balancerプラグインについて

"Balancerプラグイン"の導入により、二足歩行ロボットを対象に動力学バランスを自動補正し、実機においても転倒しない動作を作成する機能が追加されます。このプラグインは現在のところソースを公開しておらず、コンパイル済みのバイナリのみの提供としています。

Ubuntu Linux を対象にコンパイルされたバイナリとして、ソースの "proprietary/BalancePlugin" 以下に以下のファイルを収録してあります。

  • libCnoidBalancerPlugin.x86.so (32ビット用)
  • libCnoidBalancerPlugin.x64.so (64ビット用)

お使いの環境に合わせて、上記のいずれかを、利用中のコレオノイドバイナリの "lib/choreonoid-1.4/" 以下に "libCnoidBalancerPlugin.so" という名前に変更して コピーしてください。これで、Balancerプラグインの機能を使えるようになります。

また、"proprietary/BalancePlugin/locale/ja/LC_MESSAGES/CnoidBalancerPlugin-1.4.mo" をビルド(インストール)先の "share/locale/ja/LC_MESSAGES/" 以下にコピーすることで、本機能を日本語で利用できるようになります。

なお、Balancerプラグインのライセンスはコレオノイド本体のライセンス(LGPL)とは異なりますので、ご注意ください。使用条件は proprietary/BalancerPlugin/LICENSE でご確認ください。この条件を超える範囲の利用やソースコードに取得に関しては、産総研までお問い合わせください。