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

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

Choreonoidの最新の開発版では、Ubuntuバージョン14.04、16.04、x64アーキテクチャ(64ビット)でのビルドと動作を確認しています。

ソースコードの取得

リリース版

Choreonoidのリリース版のソースコードは、 ダウンロード のページからダウンロードすることが可能です。このページにある「ソースパッケージ」の該当するバージョンをダウンロードしてください。ファイルはZIPファイルになっていますので、適当なディレクトリで

unzip choreonoid-1.6.0.zip

などとして展開してください。

展開すると choreonoid-1.6.0 といったディレクトリが生成されます。このディレクトリの中にソースコード一式が格納されており、本マニュアルではこれを今後 「ソースディレクトリ」 と呼ぶことにします。

開発版

Choreonoid開発版も利用可能です。これは git リポジトリとして管理されており、 github の以下のアドレスにて公開されています。

リポジトリの利用にあたってはgitコマンドが必要です。Ubuntuでは以下のコマンドでgitをインストールできます。

sudo apt-get install git

Choreonoidのリポジトリは以下のコマンドを実行することで取得できます。

git clone https://github.com/s-nakaoka/choreonoid.git

これによってリポジトリを格納した "choreonoid" というディレクトリが生成されます。このディレクトリ内で

git pull

などとすることにより、その時点での最新のソースコードにアップデートできます。

gitの使用方法の詳細についてはgitのマニュアルや解説記事を参照してください。

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

開発ツール

Choreonoidをソースコードからビルドするためには、以下の開発ツールが必要になります。

  • C/C++標準開発ツール一式: C/C++コンパイラ、Make等の標準開発ツール一式が必要です。Ubuntuであれば "build-essential" というパッケージで一式インストールできます。C/C++コンパイラに関しては通常GCCを用いますが、Clang/LLVMも利用可能です。
  • CMake : ビルドツールです。本ツール独自の記述から、Make や Visual Studio といった標準ビルドツールのファイルを生成します。多くの環境に対応したビルド記述を効率的に行うことが可能です。

依存ライブラリ

基本機能をビルドするにあたって以下のライブラリも必要になります。

  • Boost C++ Libraries : C++の便利なライブラリ集です。
  • Eigen : 行列・ベクトル・線形代数演算のための高速・高機能なテンプレートライブラリです。
  • Qt : GUIツールキットを含むフレームワークライブラリです。
  • gettext : 表示を多国語対応とするためのツール・ライブラリです。
  • libjpeg : JPEG形式の画像ファイルを読み込むためのライブラリです。
  • libpng : PNG形式の画像ファイルを読み込むためのライブラリです。
  • LibYAML : YAML形式テキストのパーサです。
  • Assimp : 様々な形式の3Dモデルファイルを読み込むためのライブラリです。

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

  • Python : プログラミング言語Pythonを用いてChoreonoidを操作するための「Pythonプラグイン」を利用する際に必要となります。通常Pythonは標準でインストールされていますが、プラグインをビルドする際に開発用のライブラリが必要となります。
  • Numpy : 各種科学技術計算を行うためのPythonライブラリです。こちらもPythonプラグインで必要になります。
  • omniORB : オープンソースのCORBA実装です。CORBAプラグインやOpenRTMプラグイン、OpenHRPプラグインを利用する際に必要です。
  • OpenRTM-aist : 産総研によるRTミドルウェアの実装です。OpenRTMプラグインを利用する際に必要です。
  • Open Dynamics Engine (ODE) : 物理計算ライブラリです。この物理計算によるシミュレーションを行うための「ODEプラグイン」を利用する際に必要です。
  • Bullet Physics Library : 物理計算ライブラリです。この物理計算によるシミュレーションを行うための「Bulletプラグイン」を利用する際に必要です。
  • GStreamer : メディアファイルを扱うためのライブラリです。音声ファイルや動画ファイルをChoreonoid上で再生するための「Mediaプラグイン」を利用する際に必要です。
  • PulseAudio : 音声出力を行うためのシステムです。Ubuntuでは標準でインストールされていますが、Mediaプラグインをビルドする場合には別途開発用ライブラリが必要になります。
  • libsndfile : 音声ファイルを読み込むためのライブラリです。Mediaプラグインを利用する際に必要です。

依存パッケージのインストール

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

misc/script/install-requisites-ubuntu-16.04.sh

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

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

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

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

Qtについては、バージョン4と5のどちらも利用可能となっていますが、Ubuntuにおいてデフォルトではバージョン4を使うようになっています。バージョン5を使いたい場合は、まず以下のようにしてQt5関連のパッケージをインストールします

sudo apt-get install qt5-default libqt5x11extras5-dev qt5-style-plugins

その上で、CMakeの USE_QT5 をONにしておきます。

注釈

Ubuntu 14.04 で Qt5 を使用するようにしたところ、フォントが化けてしまったりしてまともに動かず、修正方法もみつけられませんでした。設定にもよるとは思うのですが、Ubuntu 14.04 では Qt5 は十分サポートされていないと考えて、Qt4 を使ったほうが無難なようです。Ubuntu 16.04ではQt5で問題なく動作します。逆にQt4を使うとなぜかChoreonoid起動が遅くなってしまうようなので、Ubuntu 16.04ではQt5の使用をおすすめします。

注釈

Qt5の場合、環境によってはフォントのサイズが適切でない場合もあるようです。例えば Ubuntu 16.04 の Ubuntu Mate デスクトップ環境で試したところ、フォントサイズがかなり大きくなってしまったことがありました。これはコントロールセンターの「外観の設定」の「フォント」タブにある「詳細」で解像度(ドット/インチ)を設定し直すことで直すことができました。

注釈

Ubuntu 14.04 では、Qt4を使用することを推奨していますが、Choreonoidを操作していると稀にマウスの左クリック等が反応せず、操作できなくなることがあります。その場合、Qt5を使用することでマウスの左クリックが反応しない等の問題は解消されます。ただし、Choreonoidで日本語表記されている箇所が文字化けすることがあります。 その解決方法はまだわかっていないため、暫定的な対応として下記のコマンドを実行し、英語版を使用することで文字化けの問題を回避してください。

export LANG=C

CMake によるビルド設定

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

cmake .

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

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

ccmake .

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

Choreonoidは、上記のデフォルトではビルドされないオプション機能もいくつか備えています。それらの概要を オプション機能 にまとめてありますので、希望する機能がある場合はCMakeの設定で有効にしてください。例えば、Open Dynamics Engine によるシミュレーション機能を使いたい場合は、 BUILD_ODE_PLUGIN を "ON" にしておきます。

注釈

CMakeを実行したディレクトリを 「ビルドディレクトリ」 と呼びます。上記の例ではソースディレクトリ直下をビルドディレクトリとしていますが、一般的には他のディレクトリを作成してそこをビルドディレクトリとします。これにより、ソースファイルとビルドのための中間ファイルを分離できますし、デバッグ用・リリース用など、設定を分けて同時に扱うことも可能となります。 例えばソースディレクトリ内に "build" ディレクトリを作成して、これをビルドディレクトリとする場合は、以下のようにします。

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

注釈

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ビット環境で上記の対応を行った場合よりもさらに実行速度が向上するようです。

Choreonoidのビルド

CMakeによりMakefileの生成が成功すれば、makeコマンドでChoreonoidをビルドします。CMakeを実行したディレクトリ(ビルドディレクトリ)で

make

を実行します。

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

make -j4

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

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

make VERBOSE=1

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

インストール

Linuxでは、ビルドディレクトリ内に生成される実行ファイルを(インストール作業なしに)そのまま実行することが可能です。ビルドに成功すれば、ビルドディレクトリ内の"bin"というディレクトリの下に "choreonoid" という実行ファイルが生成されていますので、これを実行してください。

bin/choreonoid

ビルドに問題がなければ、Choreonoidのメインウィンドウが起動します。

このようにインストール作業なしに実行できるのは便利なのですが、一般的にはインストール作業を行なって、インストール先の実行ファイルを実行することになります。これを行うためには、ビルドディレクトリ上で

make install

を実行します。すると、実行に必要なファイル一式が所定のディレクトリにインストールされます。

Linuxではデフォルトのインストール先は "/usr/local" となっています。このディレクトリへの書き込みは通常はroot権限が必要ですので、

sudo make install

とする必要があります。

インストール先は、CMakeの CMAKE_INSTALL_PREFIX の設定で変更することも可能です。複数のアカウントで利用する必要がなければ、ホームディレクトリのどこかをインストール先にしてもOKです。この場合、インストール時にsudoをする必要もなくなります。

なお、通常はインストール先のlibディレクトリに共有ライブラリパスが通っている必要がありますが、 ENABLE_INSTALL_RPATH を "ON" にしておくと、パスが通っていなくてもそのまま動かすことが可能となります。

GPU用プロプライエタリ・ドライバの導入

NVIDIAのGeForce、Quadroや、AMDのRadeonといったGPUを搭載しているPCの場合、デフォルトでインストールされるドライバでは3D描画のハードウェアアクセラレーションが十分に機能せず、描画が遅くなる場合があります。これについては、各メーカーが開発しているドライバ(プロプライエタリ・ドライバ)をインストールすることにより、パフォーマンスがよくなります。

プロプライエタリ・ドライバの確認や導入は、Ubuntuの「ソフトウェアとアップデート」ツールを用いて行うことができます。このツールの「追加のドライバー」というタブにこの設定があります。

利用可能なドライバがある場合は「追加のドライバー」に選択肢が表示されます。例えばNVIDIAのGPUの場合、

  • NVIDIA binary driver - version 375.29をnvidia-375から使用します(プロプライエタリ,検証済み)

といった表示が出ますので、これをクリックして選択し、「変更の適用」を押すことで、このドライバを使えるようになります。

特にNVIDIA製のGPUをお使いの場合、この設定は必須と言ってよいかと思います。一方で、Intel製CPUに内蔵のGPUについては、Ubuntu上で利用可能なプロプライエタリ・ドライバはありません。しかしIntelのGPUはオープンソースドライバでのサポートがよく、デフォルトのドライバでGPUの性能を十分に引き出せるようになっているようです。

注釈

シーンビュー設定ダイアログ にある「テスト」というボタンを押すと、シーンを360度回転させるアニメーションを行なって、これにかかるフレームレートを表示します。この機能により描画速度が分かりますので、ドライバ更新前と後でこのテストを行なって、描画が速くなっていることを確認できるとよいかと思います。テストは何らかのプロジェクトを読み込んでモデルが表示されている状態で行うとよいでしょう。

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

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

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

これを解決するため、QtのスタイルをGTK+でないスタイルに変更しておくことをお勧めします。これを行う方法はQtのバージョンによって異なるのですが、以下にそれぞれの方法を示します。

Qt5の場合

Ubuntu16.04以降で標準で使用されるQt5では、環境変数 "QT_STYLE_OVERRIDE" を使ってスタイルを指定することができます。あらかじめ

export QT_STYLE_OVERRIDE=スタイル名

としてからchoreonoidを起動するか、choreonoid起動時に

QT_STYLE_OVERRIDE=スタイル名 コレオノイド実行ファイル

などとすればOKです。

利用できるスタイルとして、Ubuntu16.04では以下のようなものがあるようです。

  • gtk
  • cleanlooks
  • windows
  • motif
  • plastique
  • fusion

注釈

上記のスタイルのいくつかは qt5-style-plugins というパッケージに含まれるので、うまくいかない場合はこのパッケージもインストールされているか確認してください。

デフォルトではgtkとなっていますが、この場合上述した問題がありますので、GUIの動きがスムーズでないと感じたら、他のスタイルに変えてみてください。おすすめはcleanlooksです。

よいスタイルがみつかったら、

export QT_STYLE_OVERRIDE=cleanlooks

といった記述をホームディレクトリの .profile 等のファイルにしておけば、OS起動の度に設定しなくてもよくなります。

Qt4の場合

Qt4では "qtconfig-qt4" というGUIツールを使って設定を行うことができます。コマンドラインから "qtconfig-qt4" を実行するか、アプリケーションメニューから「Qt4設定」を実行すると、このツールが起動します。

このツール上で、「外観」タブの「GUIスタイル」について、適当な変更を行なってください。例えば "Cleanlooks" スタイルに変更します。

../_images/qtconfig-qt4-1.png

次に、「フォント」タブの「スタイル」を "Regular" に変更します。これを行わないとフォントが太字で表示されてしまいます。

../_images/qtconfig-qt4-2.png

Qt スタイルを "Cleanlooks" スタイルに変更した場合、Choreonoid のツールチップが正常に表示されません。 これを修正するために、「外観」タブの「パレットの調整」から「ツールチップのテキスト」を選択してフォントの色を黒色に変更します。 これでツールチップが正常に表示されるようになります。

../_images/qtconfig-qt4-3.png

最後に、メニューの「ファイル」-「保存」を実行すると、この設定が反映されます。

効果の確認方法

スタイル設定の影響が大きいGUI機能として、 関節スライダビュー がありますので、これによってスタイル変更の効果を確認できます。

確認にあたっては、関節の多いロボットモデルを読み込み、多数の関節を同時に動かす操作を行うとよいです。例えば、 SR1Walkプロジェクト でシミュレーションを実行します。プロジェクトを読み込んだら、

  1. 重なっているビューの切り替え を行って、 関節スライダビュー を表示します。
  2. アイテムツリービュー 上で "SR1" をクリックして選択し、関節スライダビューの表示対象をこのロボットモデルにします。するとビュー上に多数のスライダが表示されるかと思います。
  3. アイテムツリービュー上で "AISTSimulator" を選択し、シミュレーションできるようにします。
  4. SR1Walkプロジェクト の説明に従って、シミュレーションを開始します。

シミュレーションが開始すると、ロボットの動きに応じて関節スライダも動くかと思います。この動きやロボットの表示のスムーズさが、Qtのスタイル設定によって変わってきます。Qtのスタイルがデフォルトのgtkの場合はあまりスムーズに動きませんが、これをcleanlooksなどに変更すると、動きがスムーズになるのではないかと思います。