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

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

コレオノイド最新版の1.2では、Ubuntuバージョン 10.04, 11.04, 11.10, 12.04 でのビルドと動作を確認しています。今後も、サポート期間中の Ubuntu デスクトップバージョンには対応させる予定です。

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

コレオノイドのソースアーカイブをコレオノイドのダンロードページからダウンロードし、適当なディレクトリに展開して下さい。 コマンドラインからでしたら、

$ unzip choreonoid-x.x.x.zip

などとすることで展開できます。

ここでは展開するディレクトリを “~/choreonoid” であるとし、

$ cd ~/choreonoid

によってカレントディレクトリをソースディレクトリに設定しているものとします。

ビルドツール、依存ライブラリのインストール

コレオノイドをビルドするには、下記のツール・ライブラリが必要になります。

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

以下のライブラリも必要となりますが、コレオノイドソースアーカイブにバンドルしているものも利用可能です。

  • LibYAML : YAML形式テキストのパーサです。

Ubuntuにおいては、 “misc/script” 以下にある “install-requisities-ubuntu-x.x.sh` というスクリプトを用いることにより、以上のツール・ライブラリを簡単にインストールすることができます。x.xはUbuntuのバージョンに対応します。例えばUbuntu 12.04であれば

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

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

ノート

Ubuntu の 11.04 以前のバージョンでは、コレオノイドで必要な Eigen バージョン3系がパッケージとして提供されていません。それらのUbuntuバージョンにおいては、Eigenを 配布元 からダウンロードし、手動でインストールしておく必要があります。(こちらで対応を確認しているEigenのバージョンは3.0系になります。) この場合、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

などとします。

(と言いつつも、私は開発時に emacs上で M-x compile を使ってビルドを行うのですが、これだとソースディレクトリ上でそのままビルドする方が、ソースコードを表示しているemacsのバッファですぐビルドを開始できるので、快適なのですよね…。まあどちらでもよいかと思います。)

ノート

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.2/” 以下に “libCnoidBalancerPlugin.so” という名前に変更して コピーしてください。これで、Balancerプラグインの機能を使えるようになります。

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

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