アンオフィシャル - Aldebaran Robotics NAO とそのほかロボットについて

NAO とそのほかロボットについての情報を発信。ここの情報はアルデバラン非公式です。内容に誤りがあった場合はごめんなさい。

Aldebaran Robotics 社の NAO、そのほかロボットに関連する情報を発信します。

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/

f:id:takuji_kawata:20160813211913p:plain

2. VirtualBox で OpenNAO OS VirtualBox 2.1.2 を実行

VirtualBox のインストール、セットアップについては外部のサイトを参考にしてください。
OpenNAO OS VirtualBox 2.1.2 は GUI を持っていません。基本、操作は全てコマンドラインで行うことになります。ログイン ID は nao、パスワードも nao でログインできます。
この後の作業を進める前に一つ変更しておきたい設定があります。仮想環境のネットワーク設定を開き、接続方法を Bridge にします。

f:id:takuji_kawata:20160813213754p:plain

f:id:takuji_kawata:20160813213808p:plain

変更したら一旦仮想環境を再起動、再度ログインしたら 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

6. NAO 上で確認

ssh で NAO にログイン

次のコマンドで、環境変数にパスを設定、実行を確認

export PATH=~/myffmpeg/usr/bin:$PATH
export LD_LIBRARY_PATH=~/myffmpeg/usr/lib:$LD_LIBRARY_PATH
ffmpeg

次のように自分のコマンドのビルド日付が emerge を実行した時と一致していれば、自身が構築した ffmpeg が実行されたと考えて良さそうです。

f:id:takuji_kawata:20160813224318p:plain

どのように使えるのか?

今回、ffmpeg にライブエンコーディングの機能とネットワークストリーミングの機能を追加しました。これらを使って NAO のカメラ画像、マイク音声をストリーミングサーバーを介して遠隔に届けることが可能です。これはつい先日行われた「DO-IT Japan2016」の「Pepperのプログラミング教室」の中で遠隔地から会場の状況を確認し、ロボットを遠隔操作できる仕組みとして試験的に導入されました(この時は Pepper を使用)。

f:id:takuji_kawata:20160813230022p:plain

(参考:「DO-IT Japan2016」の「Pepperのプログラミング教室」に関するロボットスタートの記事
障害のある学生たちにICT教育を行う「DO-IT Japan」でソフトバンクがPepper講義 | ロボスタ

今回有効にした h264 エンコーダなどは商用利用においては特許やライセンスなどでクリアしなければならないところがあるのですが、デモ出展、試験導入的な利用では問題ないでしょう。その他 OpenNAO OS VirtualBox 色々使い道ある気がしますので、是非一度お試しいただければと思います!