OpenNAO OS VirtualBox を使って NAO (Pepper) を機能拡張してみる
Softbank Robotics デベロッパーコミュニティーサイト(旧アルデバラン コミュニティーサイト)から入手できるソフトウェアの一つに 「OpenNAO OS VirtualBox」なるものがあります。 NAO/Pepper は Gentoo Linux 上で NAOqi OS が動いているわけですが、「OpenNAO OS VirtualBox 」はこの Gentoo Linux 部分について NAO と同様のものを VirtualBox 上の仮想環境で動かすことができるものです。 肝心の NAOqi が入っていないので、ロボットのエミュレータとしては使えないのですが、代わりにコンパイラなどの開発に必要なツールがインストールされています。
OpenNAO OS VirtualBox 2.1.2 とリアルロボットのアプリ開発に関連した機能の比較
名前 | カーネル | NAOqi | C/C++コンパイラ | emerge | pip |
---|---|---|---|---|---|
OpenNAO OS VirtualBox 2.1.2 | 2.6.33.9-rt31-aldebaran-rt | no | gcc version 4.5.3 | yes | yes |
NAO (NAOqi 2.1.4) | 2.6.33.9-rt31-aldebaran-rt | yes | no | no | no |
Pepper(NAOqi 2.4.3 | 3.10.33-rt33-aldebaran-rt | yes | no | no | no |
pip は Pythonのパッケージの管理ツール。例えば、公開されている Python パッケージを NAO の中で動かしたい場合、OpenNAO OS VirtualBox 2.1.2 で構築したインストール構成を移行するという手法が取れそうです。
emerge は Gentoo Linux のパッケージ管理ツール。これを使って特定の Linux ベース機能を拡張することができそうです。
Cコンパイラは Linux プラットフォーム内のライブラリを使うようなネイティブコードのコンパイルに使えそうです。ただ NAOqi が 入っていないので、NAOqi と連携するネイティブプログラムのコンパイルに使うのは少し難しそうです。 ネイティブモジュールの開発には C++ NAOqi SDK を使うのが常套手段です。
OpenNAO OS VirtualBox を使って ffmpeg にネットワーク機能、h264 エンコーダなどの機能を追加する
ffmpeg は動画と音声を変換することのできるソフトウェアーです。動画ファイルから、音声だけを抜き出したり、動画ファイルを複数の画像ファイルで切り出したり、様々なことをコマンドラインツールを使って行うことができます。このツール NAO/Pepper の中にも組み込まれているのですが、幾つかの機能が落とされています。特許やライセンスが関わっている機能なので、おそらく意図的に落としているのでしょう。 商用でアプリ配信をする場合、これら機能を使うこと一定の配慮が必要そうですが、デモンストレーショや個人での利用においては、特に問題ないかと思います。 ffmpeg の機能拡張版を OpenNAO OS VirtualBox 2.1.2 で作ってみましょう。
次から手順を説明します。
1. OpenNAO OS VirtualBox 2.1.2 のダウンロード
OpenNAO OS VirtualBox 2.1.2 は Softbank Robotics コミュニティーサイトより入手できます。(コミュニティーサイトにアクセスするにはまず コミュニティーサイトにユーザーされている必要があります。ユーザー登録は
Create New Customer Account から行います)
コミュニティーサイト、リソースページより OpenNAO OS VirtualBox 2.1.2 をダウンロードします。
https://community.ald.softbankrobotics.com/en/resources/software/
2. VirtualBox で OpenNAO OS VirtualBox 2.1.2 を実行
VirtualBox のインストール、セットアップについては外部のサイトを参考にしてください。
OpenNAO OS VirtualBox 2.1.2 は GUI を持っていません。基本、操作は全てコマンドラインで行うことになります。ログイン ID は nao、パスワードも nao でログインできます。
この後の作業を進める前に一つ変更しておきたい設定があります。仮想環境のネットワーク設定を開き、接続方法を Bridge にします。
変更したら一旦仮想環境を再起動、再度ログインしたら ifconfig コマンドを実行 IP アドレスを調べておきます。
VirtualBox から開かれる仮想環境のターミナルはコピー&ペーストができないなど何かと使い勝手が悪いので、以降の作業は ssh で仮想環境にアクセスして操作することをお勧めします。
3. emerge を実行してカスタム ffmpeg を作る
sudo USE="faac network librtmp x264 static-libs" emerge media-video/ffmpeg
ここでは ffmpeg にネットワークストリーミング機能、h264 エンコーディング機能、aac エンコーディング機能、rtmp ストリーミング機能を有効にしています。emerge、と各オプションの詳細については外部サイトを参考にしてください。
4. NAO に持って行く
構築されたファイルは /home/nao/opennao-distro/packages 配下に保存されています。これを NAO に持って行きましょう。
まずはファイルが複数あるので、移動用にアーカイブします。
仮想環境にて
cd /home/nao/opennao-distro/packages zip -r ../../myffmpeg.zip media-libs media-video
次にいったん PC にファイルを持ってきます。
PC にて
scp nao@<仮想環境のIPアドレス>:./myffmpeg.zip ./
これを NAO に持って行きます。
PC にて
scp ./myffmpeg.zip nao@<NAOのIPアドレス>:./
5. NAO に配置
ssh で NAO にログイン
ssh nao@<NAOのIPアドレス>
次のコマンドで myffmpeg ディレクトリを作成、配置
mkdir myffmpeg mv myffmpeg.zip myffmpeg cd myffmpeg/ unzip myffmpeg.zip tar -jxvf media-libs/faac-1.28-r1.tbz2 tar -jxvf media-libs/libmp4v2-1.9.1.tbz2 tar -jxvf media-libs/x264-0.0.20110426.tbz2 tar -jxvf media-video/ffmpeg-0.7.8.tbz2
どのように使えるのか?
今回、ffmpeg にライブエンコーディングの機能とネットワークストリーミングの機能を追加しました。これらを使って NAO のカメラ画像、マイク音声をストリーミングサーバーを介して遠隔に届けることが可能です。これはつい先日行われた「DO-IT Japan2016」の「Pepperのプログラミング教室」の中で遠隔地から会場の状況を確認し、ロボットを遠隔操作できる仕組みとして試験的に導入されました(この時は Pepper を使用)。
(参考:「DO-IT Japan2016」の「Pepperのプログラミング教室」に関するロボットスタートの記事
障害のある学生たちにICT教育を行う「DO-IT Japan」でソフトバンクがPepper講義 | ロボスタ )
今回有効にした h264 エンコーダなどは商用利用においては特許やライセンスなどでクリアしなければならないところがあるのですが、デモ出展、試験導入的な利用では問題ないでしょう。その他 OpenNAO OS VirtualBox 色々使い道ある気がしますので、是非一度お試しいただければと思います!