Pepperアプリを開発していてつまずいたこと、情報が見つけにくいことをまとめたTipsです。(随時、追記しています。)
#▼アプリ開発に便利な機能
##■ssh接続
PepperはChoregrapheを使わなくてもssh接続をして動かすことができます。
接続は、以下を実行します。
$ssh nao@<pepperのIPアドレス or 機体名.local>
ssh接続状態で以下を実行することで高速に再起動することができます。
$nao restart
このコマンドで、NAOqi OSだけを再起動することができます。
###・Pepper(linux)内のエディタ
Pepper内のnginxなどの設定ファイルを見ようとしても、viやvimなどが入っていません。(他にもmakeなどがありません。)エディタはnanoが入っているのでこちらを使います。
##■タブレットに表示されているhtmlをPCのブラウザで見る
Pepperアプリ実行中にPCなどのブラウザで
http://<pepperのIPアドレス>/apps/<アプリID>/<htmlファイルなどのパス名>
にアクセスすると、実行中のアプリのhtmlファイルなどを見ることができます。(最後のパス名を指定しないときは、アプリ内のhtml/index.htmlにアクセスします。)
Pepperアプリのhtmlやjsファイルをデバッグするには、大変便利です。
#▼アプリ開発で気をつけること
##■ポーズ
ポーズは必ず正立に戻してください。正立以外のポーズをとり続けていると機体の温度が上がって、「肩の赤ランプが点灯→再起動」という憂き目にあいます。
##■ファイル名
ファイル名は日本語があってもよいですが、必ず半角英数字から始めてください。また、ボックス名に”/”は使わないようにしましょう。
##■unicode型
Pythonにはstr型とunicode型と言う二つの文字列を扱う型があります。str型はコード中でencode形式を意識しておかなければならないのでPythonではunicode型の登場頻度が多くなっています。しかし、ChoregrapheではonStopped()などBOXをまたいで文字列を渡すメソッドの引数はstr型でなければなりません。さもなくば文字列が全てNoneになってしまいます。
##■Touch Detectionボックス
NAOqi OSのバージョンが2.3以降になるとディスプレイの解像度が本来の1707×1067ピクセルに対応します。しかし、touch detectionボックスの出力はOSのバージョンによらず1280×800ピクセルになっています。
##■Play Videoボックス
Play Videoボックスによる動画再生中はタブレットのタッチイベントが発生しません。Show Web Viewボックスなどhtmlファイルをブラウザで表示している際はタッチイベントが有効なので、動画再生中にタッチイベントを発生させたいときはvideoタグなどを使ってhtmlから動画を再生することで対処できます。
#▼アプリの保守性を上げるために
##■dialogボックスとSpeech Reco.の使い分け
ボックスが多くなるとメモリを消費するだけでなく、可読性・保守性が低下します。そのため、コミュニケーションが1往復程度ならSpeech Reco.でよいですが、それ以上ならdialogボックスを使いましょう。
##■タイムラインのフレーム数
保守面からタイムラインボックスは500フレーム以内が推奨されています。
#▼できないこと and 問題点
##■初期化できない
Choregraphe上部で「接続>アドバンスト」 とたどると「ロボットシステムを初期化/アップデート」と表示されますが、システムイメージが公開されていないためここから初期化を行うことはできません。(2015/09/16現在)
ただ、ssh接続を使った方法なら初期化できるようです。(詳細はこちら)
##■retinaディスプレイ非対応
Choregraphe (2.3.1)はmacのretinaディスプレイに対応していません。特に、retinaではロボットビューが小さく表示されます。ポーズの微調整をしたいときは、ロボットビュー全体にロボットが写っていると想像して、調整したいパーツがあると想定される場所にカーソルを置くとうまくいきます。(詳しくはこちらの記事参照)
##■アプリがロボットにインストールされない
ロボットアプリケーションダイアログからプロジェクトをインストールしようとしても、無線LANだと通信速度が遅いなどの問題でインストールされないことがあります。解決策としては有線LANで接続するのがベターですが、無線LANでも次の方法があります。
- 待つ。
- インストールしたアプリを上書きしようとして上手くいかないときは、インストールするbehavior
ファイルのパスを以前のものと変えてインストールを試みる。
##■よく分からないエラーが起きる
Pepperはロボットであることもあって、まま原因が分からないエラーが起きます。その時は、下記の順に試します。
- Choregrapheを再起動
- Pepperをsleep、からのwake up
- sshで nao restartコマンドでNAOqi OS再起動
- 胸ボタン4秒押しから再起動
- 胸ボタン8秒押しから再起動