OpenHRIAudioをLinuxでビルドする

このドキュメントでは、Linux環境でOpenHRIAudioのビルドと動作確認の方法について説明します。

ビルド方法は次の二種類あります。

  • cmakeしてビルドする方法
  • autoconfしてビルドする方法

ここではcmakeを使ったビルド方法を説明します。 ※autoconfを使った方法は、 こちら で確認できます。

基本的な手順は次の通りです。

  1. ビルド環境の準備
  2. OpenHRIAudioのビルド
  3. コンポーネントの動作確認

以下に作業内容を詳細に説明します。

ビルド環境の準備

ここではUbuntu12.04の場合について説明します。

OpenHRIAudioのコンパイルに必要なライブラリ、ツールは下記の通りです。

ツール

  • cmake
  • マルチプラットフォームで動作するビルド自動化のためのフリーソフトウェアです。OpenHRIはcmake対応しており、Windows(VisualC++、VisualStudio)のプロジェクトファイルや、LinuxでのMakefileを生成します。次の項でパッケージ管理コマンドを使ってインストールします。
  • OpenRTM-aist
  • OpenHRIAudioはOpenRTM-aist-1.0.0以降(または、1.1.0-Release )が必要です。次の項でパッケージ管理コマンドを使ってインストールします。
  • gettext
  • 国際ソフトウェアの対話的メッセージを翻訳された現地語にて容易に表示させることができるライブラリで、OpenHRIAudioで使用しています。次の項でパッケージ管理コマンドを使ってインストールします。
  • doxgen
  • ソースを解析してドキュメントを生成するツールです。OpenHRIAudioとOpenRTM-aistで使用しています。次の項でパッケージ管理コマンドを使ってインストールします。
  • RTSystemEditer
  • RTSystemEditerは産総研が提供する開発ツールのひとつであり、RTコンポーネントをリアルタイムにグラフィカル操作する機能を持っています。また、その名前のとおりEclipse統合開発環境のプラグインとして作成されており、Eclipse上にて既存のプラグインとシームレスに操作を行うことが出来ます。OpenRTM-aistのwebページで配布しています。後の項でインストールと初期設定の方法を説明します。
  • Java Development Kit
  • オラクルからリリースされているソフトウェア開発キットです。eclipseのプラグインで起動するRTSystemEditerでJDK1.6または1.7を使用します。次の項でパッケージ管理コマンドを使ってインストールします。

ライブラリ

  • Gtkmm
  • GUIツールキットであるGTK+のC++バインディングで、WavPlayer、WavRecordなどで使用します。次の項でパッケージ管理コマンドを使ってインストールします。
  • PortAudio
  • WindowsやMac、Linuxなど様々なプラットフォームに対応したオープンソースaudio I/O(インプット/アウトプット) ライブラリで、PortAudioInput、PortAudioOutputなどで使用します。次の項でパッケージ管理コマンドを使ってインストールします。
  • Speex
  • VoIPアプリケーションやポッドキャストで使われるフリーな音声圧縮コーデックで、DSArrayやEchoCancelerなど複数のコンポーネントで使用しています。次の項でパッケージ管理コマンドを使ってインストールします。
  • Resample
  • FIRフィルタを使ってサウンドファイルを再サンプリングし、そのサンプリングレートを変更するプログラムで、SamplingRateConverterで使用します。次の項でパッケージ管理コマンドを使ってインストールします。
  • sndfile
  • サンプルオーディオデータを含むファイルの入出力を行うライブラリで、WavRecordで使用します。次の項でパッケージ管理コマンドを使ってインストールします。

※他のディストリビューションであっても、cmakeを使ったコンパイルですので、OpenRTM-aistや他のライブラリをインストールすれば、特に問題なくコンパイルできると思います。

次の項からインストール方法を説明します。

ツール・ライブラリのインストール

RTSystemEditer以外のツール・ライブラリはdebパッケージが存在するので、パッケージ管理コマンドを使ったインストールが可能です。

※ インストールでsudoを使用するため、あらかじめ/etc/sudoersファイルに権限を与えられるユーザーを使用します。権限の付与はパソコンのシステム管理者に確認します。

コンソールを起動し、”$”を除いた次のコマンドを実行してインストールを完了します。:

$ sudo apt-get install cmake gettext libgtkmm-2.4-dev portaudio19-dev libspeexdsp-dev libresample1-dev libsndfile1-dev doxygen git
  (パスワードをたずねてくるので入力します)
  (途中、いくつかの質問をたずねられるので、''y'' あるいは ''Y'' を入力しながら完了します)

OpenRTM-aistはPPA(パーソナル・パッケージ・アーカイブ)からパッケージを配布しています。 PPAからパッケージをインストールする為、source.listにリポジトリを登録します。

次の”$”を除いたコマンドを実行して登録を完了します。:

$ sudo add-apt-repository ppa:openrtm/stable
  (パスワードをたずねてくるので入力します)
  (Enterキーを押下して完了します)

追加したリポジトリを反映した後、apt-getコマンドを実行しOpenRTM-aistのインストールを完了します。:

$ sudo apt-get update
  (パスワードをたずねてくるので入力します)

$ sudo apt-get install openrtm-aist1.1 openrtm-aist1.1-dev omniidl omniorb-nameserver omniorb libomniorb4-dev uuid-dev
  (パスワードをたずねてくるので入力します)

次にRTSystemEditerの設定に進みます。

RTSystemEditerのインストール

ここではRTSystemEditerと、必要なソフトJDK1.6または1.7をインストールする方法を説明します。

以下にはホームディレクトリに 作業ディレクトリ[HRI] を作成して作業を行う設定で説明します。

手順

  1. OpenRTMが提供するRTSystemEditerをダウンロードし、適当な作業ディレクトリに展開します。

次の”$”を除いたコマンドを実行してダウンロードを完了します。:

$ cd ~HRI
$ wget http://openrtm.org/pub/openrtp/packages/1.1.0.rc4v20130216/eclipse381-openrtp110rc4v20130216-ja-linux-gtk.tar.gz
$ tar zxvf eclipse381-openrtp110rc4v20130216-ja-linux-gtk.tar.gz
  1. Javaをインストールしているか確認します。

次のコマンドを実行してJavaのバージョンを確認します。以下のように表示したら未インストールです。:

$ java -version
  The program 'java' can be found in the following packages:
   * default-jre
   * gcj-4.8-jre-headless
   * openjdk-7-jre-headless
   * gcj-4.6-jre-headless
   * openjdk-6-jre-headless
  Try: sudo apt-get install <selected package>

未インストールの場合、次のコマンドを実行しJava Development Kit(openjdk-7-jre-headless)をインストールします。:

$ sudo apt-get install openjdk-7-jre-headless
  (パスワードをたずねてくるので入力します)
  1. 次にeclipseを起動し、RTSystemEditerを起動します。

コンソールで次のコマンドを実行しeclipseを起動します。:

$ cd ~HRI/eclipse
$ ./eclipse

初めて起動する場合、RTSystemEditerを表示するためにいくつかの操作が必要です。

「eclipse起動アイコン」、「ワークスペースの選択」ウィンドウを順に表示します。「ワークスペースの選択」はデフォルトで[home/(ユーザ名)/workspace]と入っているので、変更の必要が無ければそのまま[OK]で進みます。

alternate text

eclipse起動アイコン

.

alternate text

ワークスペースの選択

.

次に下のようなページを表示するので[ようこそ]タグを”×”で閉じます。
alternate text

初期起動時の画面

.

RTSystemEditerのパースペクティブを選択します。「Open Perspective」ボタンをクリックし「その他...」を選択します。
alternate text

Open Perspective ボタン

.

「パースペクティブを開く」ウィンドウが表示されたら「RTSystemEditer」を選択し[OK]ボタンをクリックします。
alternate text

パースペクティブを開く

.

タイトルバーに「RT System Editer」と表示したら成功です。

.

alternate text

RT System Editerの画面

.

最後に、[Open New System Editer]ボタンをクリックして「System Diagram」を表示しておきます。
alternate text

[Open New System Editer]ボタン

.

2回目以降の起動は、RTSystemEditerの画面を表示します。 ※ 新しいワークスペースを参照して起動した場合、再度操作が必要になります。

以上でRTSystemEditerの初期起動は終了です。ウィンドウ左上の[×]ボタンでEclipseを終了します。

次にOpenHRIAudioのビルドを行います。

OpenHRIAudioのビルド

OpenHRIAudioのソースファイルをダウンロードした後にビルドを行い、実行ファイルを生成します。

ビルドを行うには、適当な作業ディレクトリを作りそこでビルドを実行すると良いでしょう。

以下にはホームディレクトリに 作業ディレクトリ[HRI] を作成して作業を行う設定で説明します。

手順

  1. Github にあるCMake対応の[ForCMake]ブランチを作業ディレクトリ[HRI]にチェックアウトします。

次の”$”を除いたコマンドを実行してチェックアウトを完了します。:

$ cd ~HRI
$ git clone -b ForCMake https://github.com/openhri/OpenHRIAudio.git

ディレクトリを移動した後に次のコマンドを実行し、[ForCMake]ブランチに”*”が付いたら成功です。:

$ cd OpenHRIAudio/
$ git branch -a

  * ForCMake
    remotes/origin/ForCMake
    remotes/origin/HEAD -> origin/master
    remotes/origin/master
  1. 次に ~HRI/OpenHRIAudio/にcmakeを適用します。[~/HRI/OpenHRIAudio]直下に作業ディレクトリ[work]を作成・移動し、cmakeを適用します。

次の”$”を除いたコマンドを実行して作業ディレクトリへの移動とcmakeの適用を行います。:

$ mkdir work
$ cd work
$ cmake ..

cmakeコマンドの最後にconfigure doneと確認出来たら次に進みます。

  1. cmake完了後、makeを実行しビルドを完了します。:

    $ make
  2. ビルド終了後、[~/HRI/OpenHRIAudio/bin] ディレクトリに以下の実行ファイルとライブラリが確認できます。

  • AutoGainControl.so
  • AutoGainControlComp
  • BeamForming.so
  • BeamFormingComp
  • ChannelSelector.so
  • ChannelSelectorComp
  • CombFilter.so
  • CombFilterComp
  • DSArray.so
  • DSArrayComp
  • EchoCanceler.so
  • EchoCancelerComp
  • EchoSuppressor.so
  • EchoSuppressorComp
  • Gate.so
  • GateComp
  • Mixer.so
  • MixerComp
  • NoiseReduction.so
  • NoiseReductionComp
  • PortAudioInput.so
  • PortAudioInputComp
  • PortAudioOutput.so
  • PortAudioOutputComp
  • SamplingRateConverter.so
  • SamplingRateConverterComp
  • SignalGeneration.so
  • SignalGenerationComp
  • WavPlayer.so
  • WavPlayerComp
  • WavRecord.so
  • WavRecordComp
  • WebRTCVAD.so
  • WebRTCVADComp

コンポーネントの動作確認

PortAudioInputCompとPortAudioOutputCompを接続し動作確認を行います。

※ 音声入力を行うためマイクをご用意ください。ヘッドホンもあると、より音声確認しやすくなります。
  1. 最初にマイクとヘッドホンをPCに接続します。
  2. コンソールを3つ起動し、それぞれOpenRTM-aistのネームサービスと実行ファイルを起動します。
ネームサービスの起動
※ openRTM-aistと一緒にインストールしたomniorbがすでに起動している場合、コンソール画面に入力を求めてくるので、”Y”を入力して進みます。
$ rtm-naming

PortAudioInputCompの起動:

$ cd ~/HRI/OpenHRIAudio/bin
$ ./PortAudioInputComp

PortAudioOutputCompの起動:

$ cd ~/HRI/OpenHRIAudio/bin
$ ./PortAudioOutputComp
  1. 次に、RTSystemEditerを使って、実行ファイルの接続やアクティベートなどを行います。

コンソールを起動して、次のコマンドを実行します。

RTSystemEditerの起動

$ cd ~/eclipse
$ ./eclipse

ネームサービスビューにあるネームサーバとコンテキストの[横向き▲]ボタンをクリックし、実行ファイルを表示します。

.

alternate text

ネームサービスビューの画面

.

ネームサーバが表示されていない場合は、次の操作を行って表示しましょう。

ネームサービスビューの[ネームサーバを追加]ボタンをクリックし、「ネームサーバへ接続」ウィンドウを表示します。”localhost”または”127.0.0.1”と入力した後に[OK]をクリックし、ネームサーバを登録します。

.

alternate text

ネームサーバの追加

.

次に実行ファイルをドラッグアンドドロップし、[System Diagram]に表示します。

.

alternate text

ドラッグアンドドロップ

.

実行ファイルの接続します。「System Diagram」上のPortAudioInputの出力ポート[AudioDataOut]からPortAudioOutputの入力ポート[AudioDataIn]へドラッグアンドドロップします。データポートからドラッグを始めると線を表示します。接続先のポートでドロップすると、次のウィンドウを表示するので[OK]を押下します。

.

alternate text

Connector Profile

.

ポート間に線が表示されたら、接続は成功です。

.

alternate text

リンク接続成功

.

[All Activate]ボタンをクリックして、実行ファイルをアクティベートします。 実行ファイルが、青から緑色に変更になったらアクティベートは成功です。マイクから音声を入力すると、スピーカ又はヘッドホンで音声を確認できます。

.

alternate text

[All Activate]ボタン

.

alternate text

アクティベートした状態

.

  1. 実行ファイルを終了する場合は、「System Diagram」の実行ファイル上で右クリックし「Exit」を選択します。実行ファイルの動作確認は以上になります。

※ OpenHRIAudio、OpenHRIVoice、SEATSATなどをインストールすると以下のようなシステムを動作確認することも可能です。

  • システム構成例

お問い合わせ先

不明な点や不具合が起きた場合、OpenRTM-aistのフォーラムまたはメーリングリストにご連絡ください。