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

Linuxには様々なディストリビューションがありますが、現在のところChoreonoidが公式にサポートしているディストリビューションは Ubuntu Linux になります。Choreonoidの最新の開発版では、Ubuntuバージョン18.04, 20.04について、x64アーキテクチャ(64ビット)でのビルドと動作を確認しています。本ドキュメントでは、Ubuntu Linux におけるChoreonoidのソースコードからのビルド方法について説明します。

ソースコードの取得

リリース版

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

unzip choreonoid-1.7.0.zip

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

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

注釈

Choreonoidはまだ発展途上のソフトウェアで、現在も活発に改良が続けられていますので、以下で説明する開発版の方が機能面で優れていることが多いです。そのため特に理由がなければ当面は開発版を使用することをおすすめします。ただし開発版はコミットのタイミングによっては不具合が入り込んでいる場合もありますので、その点はご注意ください。とは言えリリース版も開発の区切りとしてまとめているものであり、現状ではリリース版であってもそこまで安定性の面で優位なわけではありません。

開発版

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

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

sudo apt install git

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

git clone https://github.com/choreonoid/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プラグインで必要になります。
  • Open Dynamics Engine (ODE) : 物理計算ライブラリです。この物理計算によるシミュレーションを行うための「ODEプラグイン」を利用する際に必要です。
  • GStreamer : メディアファイルを扱うためのライブラリです。音声ファイルや動画ファイルをChoreonoid上で再生するための「Mediaプラグイン」を利用する際に必要です。
  • PulseAudio : 音声出力を行うためのシステムです。Ubuntuでは標準でインストールされていますが、Mediaプラグインをビルドする場合には別途開発用ライブラリが必要になります。
  • libsndfile : 音声ファイルを読み込むためのライブラリです。Mediaプラグインを利用する際に必要です。

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

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

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

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

なお、Qtについてはバージョン5に対応しています。Qtバージョン4はChoreonoid 1.7までは対応していましたが、最新版では対応していません。

CMake によるビルド設定

まず、ビルドに使用するディレクトリを作成します。Choreonoidのソースディレクトリ上で

mkdir build

などとして作成してください。作成したディレクトリを「ビルドディレクトリ」と呼びます。ここでは "build" というディレクトリ名を使用していますが、名前は何でも結構です。複数のビルドディレクトリを作成して、それぞれ異なる設定でビルドすることも可能です。

次にビルドディレクトリ上でCMakeを実行します。

cd build
cmake ..

このコマンドにより、コンパイラのバージョンや依存ライブラリのチェックなどが行われ、ビルドに必要なMakefileが生成されます。cmakeコマンドの後はピリオドが2つになりますので、ここも間違わないようにしてください。これはcmakeの対象となるソースがひとつ上のディレクトリにあることを示しています。

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

ccmake ..

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

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

注釈

CMakeを使用したビルドでは上記のようにビルドディレクトリを使用するのが一般的です。しかしCMakeではビルドディレクトリを作成せずにソースディレクトリ直下でビルドを行うことも可能となっており、Choreonoidもこの方法に対応しています。この場合は、ソースディレクトリ上で

cmake . (or ccmake .)

とすればOKです。(cmakeの後のピリオドがひとつであることに注意してください。)この場合、ソースディレクトリをそのままビルドディレクトリとして使用していると考えればOKです。

この場合ディレクトリ作成の手間は減りますが、異なる設定によるビルドを同時に扱うことはできなくなりますし、ソースのファイルとビルドによって生成されるファイルが混ざってしまって両者の区別がしづらくなるといったデメリットもありますので、基本的にはビルドディレクトリを使用する方法がおすすめです。

注釈

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のビルドが行われます。

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

make -j8

とすると、最大で8つのビルドプロセスが同時に実行されることになります。通常は論理コア数と同じプロセス数を指定することで、CPU能力を最大限に活かした並列ビルドとなります。

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

make VERBOSE=1

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

インストール

ChoreonoidをUbuntuで使用する場合は、ビルドディレクトリ内に生成される実行ファイルをそのまま実行することが可能です。ビルドに成功すれば、ビルドディレクトリ内の"bin"というディレクトリの下に "choreonoid" という実行ファイルが生成されていますので、これを実行してください。

bin/choreonoid

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

このようにインストール作業なしに実行できるのは便利なので、特に問題がなければこの形態で使用してもよいかと思います。

一方で指定したディレクトリへのインストールを行うこともできます。この場合ソフトウェアの実行に必要なバイナリファイルやデータファイルのみが一箇所にまとめられることになります。このためソフトウェアをシステム全体で共有したり、パッケージ化したり、他のソフトウェアと連携して使用する場合などは、インストール作業を行います。

これを行うためには、ビルドディレクトリ上で

make install

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

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

sudo make install

とする必要があります。

/usr/localの場合は実行ファイルを格納する/usr/local/binにデフォルトでパスが通っているので、カレントディレクトリがどこにあっても、単に

choreonoid

とすることでChoreonoidを実行できます。

インストール先は、CMakeの CMAKE_INSTALL_PREFIX の設定で変更することも可能です。複数のアカウントで利用する必要がなければ、ホームディレクトリのどこかをインストール先にしてもOKです。この場合、インストール時にsudoをする必要もなくなります。ただし/usr/local/binと同様にパスが通っている必要がある場合は、インストール先のbinディレクトリに自前でパスを通すようにしてください。

注釈

デフォルトのインストール先である/usr/localにインストールすることは お勧めできません 。このディレクトリはデフォルトのインストール先として一般的ではあるのですが、これは便宜的なものだと考えたほうがよいです。ソフトウェアをソースコードから自前でビルド・インストールする場合、OSのパッケージ管理システムでは管理されないのが一般的です。つまり管理も自前で行う必要がありますが、そのようなものが/usr/localという同一のディレクトリにごちゃまぜにインストールされると、ある特定のソフトウェアのアップグレードにおいて不必要になったファイルを除去したり、特定のソフトウェアだけアンインストールするといったことが、大変困難になります。従って/usr/localにはインストールせず、ホームディレクトリ上に各ソフトウェアごとに専用のディレクトリを用意してそこにインストールするのがよいかと思います。

注釈

Choreonoidのように共有ライブラリを含むソフトウェアの場合、一般的には共有ライブラリをインストールするlibディレクトリに共有ライブラリパスが通っている必要があります。これについても/usr/local/libについてはデフォルトでパスが通っていますが、そうでない場合は自前でパスを通す必要があります。ただしChoreonoidではRPATHという仕組みで共有ライブラリパスを設定しなくても動作するようになっていますので、通常この設定は必要ありません。Choreonoidの共有ライブラリを外部のソフトウェアからライブラリとして利用する際は、この設定が必要になる場合があります。なおRPATHについてはCMakeのAdvancedオプションで ENABLE_INSTALL_RPATH をOFFにすることで無効化できます。これはデフォルトでONになっており、特に無効化する理由がなければ変更しないようにしてください。

その他の環境整備

Choreonoid本体のビルドとインストールが完了しましたら、より快適な利用環境の確保のため、以下の内容についても確認することをおすすめします。