Pepper SDK入門(11) Robot ViewerとRobot Browser

Robot emulatorについては「[Pepper SDK入門(3) はじめてのロボアプリ開発②](https://qiita.com/kskrin/private/d3a2a02ec0f090540c0b)」でも触れましたが、もう少し詳しく見ていきたいと思います。



Robot emulatorは、下記のモジュールから構成されています。

<table align="left" border="1">
  <tbody>
<tr>
      <th>モジュール名</th>
      <th>概要</th>
    </tr>
<tr>
      <td width="150px">NAOqi</td>
      <td>Robot emulatorエンジン。実機での操作をエミュレートする。</td>
    </tr>
<tr>
      <td>Robot Viewer</td>
      <td>Pepperの挙動のシミュレーションを表示する。</td>
    </tr>
<tr>
      <td>AVD</td>
      <td>Android仮想デバイス。Pepperのタブレットと同じ形状をしており、アプリはここで実行される。</td>
    </tr>
</tbody>
</table>

以上の3つは同じライフサイクルを持っているため同時に起動し、一つでも停止すればすべてが停止します。

#1.Robot Viewer
Robot viewerにはpluginが接続しているPepperをモニタリングするツールがまとまっており、以下のような機能が利用できます。

- Robot viewによる、Pepperの3Dモデル表示
- Motion Viewによる、Pepperの関節の角度設定
- Dialog viewによる、音声認識の結果や発話内容の表示
- Log viewによる、Pepper本体側のログの表示

pluginがPepperに接続するタイミングで、Robot Viewerは自動で起動します。



**<手順>**

Android StudioのToolsメニューのPepper SDKからEmulatorを選択するか、ツールバーのエミュレータボタン![emu.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/97e16f96-83ce-c94e-daf8-540cbd1603b9.jpeg)
をクリックしてください。robotsdk.xmlに設定されているAPIレベルに応じたエミュレータが起動します。

##1-1.Robot view
Robot viewは接続しているPepperの状態を表示します。

- エミュレータに接続している場合、Pepperは青い背景で表示されます。
![WS000005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/085b0695-86f0-ba48-a1ac-1dd0bdcdb5c0.jpeg)


- 実機に接続している場合、Pepperは緑の背景で表示されます。
![WS000004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/1b87f9ff-7fa9-7b4e-c451-d55acf735695.jpeg)


Robot viewのツールバーで、表示内容を設定できます。

<table border="1"  style="clear: left;">
  <tbody>
    <tr>
      <th>ボタン</th>
      <th>説明</th>
    </tr>
    <tr>
      <td width="100px"><a href="http://1.bp.blogspot.com/-iAQdP5D7iUs/XIYVG9JlYZI/AAAAAAAAAOg/1hoQwohHbesTfkEmOWPIr-zbLkiI1ZR2ACK4BGAYYCw/s1600/1.jpg" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-iAQdP5D7iUs/XIYVG9JlYZI/AAAAAAAAAOg/1hoQwohHbesTfkEmOWPIr-zbLkiI1ZR2ACK4BGAYYCw/s400/1.jpg" /></a>&nbsp; &nbsp;</td>
      <td>3Dを表示する。</td>
    </tr>
    <tr>
      <td><a href="http://3.bp.blogspot.com/-F5GhSisHZkY/XIYVHTRFvgI/AAAAAAAAAOo/sKO2ReoWYhUZ42PmUutHx_ngK8XyF3EawCK4BGAYYCw/s1600/2.jpg" imageanchor="1"><img border="0" src="https://3.bp.blogspot.com/-F5GhSisHZkY/XIYVHTRFvgI/AAAAAAAAAOo/sKO2ReoWYhUZ42PmUutHx_ngK8XyF3EawCK4BGAYYCw/s400/2.jpg" /></a>&nbsp; &nbsp;</td>
      <td>衝突を表示する。</td>
    </tr>
    <tr>
      <td><a href="http://1.bp.blogspot.com/-Ez3zBY5E0oU/XIYVKVnbiFI/AAAAAAAAAOw/FuCb_Rx7Xo8w52iHzO1qNI68PiehrpbIgCK4BGAYYCw/s1600/3.jpg" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-Ez3zBY5E0oU/XIYVKVnbiFI/AAAAAAAAAOw/FuCb_Rx7Xo8w52iHzO1qNI68PiehrpbIgCK4BGAYYCw/s400/3.jpg" /></a>　&nbsp; &nbsp;</td>
      <td>オブジェクトを非表示にする。</td>
    </tr>
    <tr>
      <td><a href="http://3.bp.blogspot.com/-pkcamZYoNCg/XIHLv_3MLwI/AAAAAAAAAI4/_HXNYJHkapkbk77p-pCU12GwSjUvGRWsgCK4BGAYYCw/s1600/4.jpg" imageanchor="1"><img border="0" src="https://3.bp.blogspot.com/-pkcamZYoNCg/XIHLv_3MLwI/AAAAAAAAAI4/_HXNYJHkapkbk77p-pCU12GwSjUvGRWsgCK4BGAYYCw/s400/4.jpg" /></a>　</td>
      <td>立ち位置のアップデートを行わないようにする。</td>
    </tr>
    <tr>
      <td><a href="http://4.bp.blogspot.com/-k2q8oVNs6I8/XIHL54oZ0PI/AAAAAAAAAJE/dMR5JkFWU0gJWCwIT1XjHFZaHQSljNQWgCK4BGAYYCw/s1600/5.jpg" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-k2q8oVNs6I8/XIHL54oZ0PI/AAAAAAAAAJE/dMR5JkFWU0gJWCwIT1XjHFZaHQSljNQWgCK4BGAYYCw/s400/5.jpg" /></a></td>
      <td>モーターの位置のアップデートを行わないようにする。</td>
    </tr>
    <tr>
      <td><a href="http://2.bp.blogspot.com/-qhoEaLyD75U/XIHL-EeO43I/AAAAAAAAAJQ/mBuh4QuoR6AfpDOujIxIMXz5XQe_ezGEgCK4BGAYYCw/s1600/6.jpg" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-qhoEaLyD75U/XIHL-EeO43I/AAAAAAAAAJQ/mBuh4QuoR6AfpDOujIxIMXz5XQe_ezGEgCK4BGAYYCw/s400/6.jpg" /></a></td>
      <td>エンゲージメントゾーンを非表示にする。</td>
    </tr>
    <tr>
      <td><a href="http://4.bp.blogspot.com/-sUWVjlF7DyM/XIHMHFxsrRI/AAAAAAAAAJc/PAW0LXKUICI7LN45YbP8U285a2p2uaZ4ACK4BGAYYCw/s1600/7.jpg" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-sUWVjlF7DyM/XIHMHFxsrRI/AAAAAAAAAJc/PAW0LXKUICI7LN45YbP8U285a2p2uaZ4ACK4BGAYYCw/s400/7.jpg" /></a>　</td>
      <td>人検知を非表示にする。</td>
    </tr>
  </tbody>
</table>

##1-2.Motion View
Motion Viewは関節の角度の閲覧と設定ができます。
<img width="523" alt="WS000009.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/b76432d0-31b9-4914-9634-8a75e9856218.jpeg">


<table border="1"  style="clear: left;">
  <tbody>
    <tr>
      <th>ボタン</th>
      <th>説明</th>
    </tr>
    <tr>
      <td width="100px"><a href="http://1.bp.blogspot.com/-iAQdP5D7iUs/XIYVG9JlYZI/AAAAAAAAAOg/1hoQwohHbesTfkEmOWPIr-zbLkiI1ZR2ACK4BGAYYCw/s1600/1.jpg" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-iAQdP5D7iUs/XIYVG9JlYZI/AAAAAAAAAOg/1hoQwohHbesTfkEmOWPIr-zbLkiI1ZR2ACK4BGAYYCw/s400/1.jpg" /></a>&nbsp; &nbsp;</td>
      <td>3Dを表示する。</td>
    </tr>
    <tr>
      <td><a href="http://3.bp.blogspot.com/-F5GhSisHZkY/XIYVHTRFvgI/AAAAAAAAAOo/sKO2ReoWYhUZ42PmUutHx_ngK8XyF3EawCK4BGAYYCw/s1600/2.jpg" imageanchor="1"><img border="0" src="https://3.bp.blogspot.com/-F5GhSisHZkY/XIYVHTRFvgI/AAAAAAAAAOo/sKO2ReoWYhUZ42PmUutHx_ngK8XyF3EawCK4BGAYYCw/s400/2.jpg" /></a>&nbsp; &nbsp;</td>
      <td>衝突を表示する。</td>
    </tr>
    <tr>
      <td><a href="http://1.bp.blogspot.com/-Ez3zBY5E0oU/XIYVKVnbiFI/AAAAAAAAAOw/FuCb_Rx7Xo8w52iHzO1qNI68PiehrpbIgCK4BGAYYCw/s1600/3.jpg" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-Ez3zBY5E0oU/XIYVKVnbiFI/AAAAAAAAAOw/FuCb_Rx7Xo8w52iHzO1qNI68PiehrpbIgCK4BGAYYCw/s400/3.jpg" /></a>　&nbsp; &nbsp;</td>
      <td>オブジェクトを非表示にする。</td>
    </tr>
    <tr>
      <td><a href="http://3.bp.blogspot.com/-pkcamZYoNCg/XIHLv_3MLwI/AAAAAAAAAI4/_HXNYJHkapkbk77p-pCU12GwSjUvGRWsgCK4BGAYYCw/s1600/4.jpg" imageanchor="1"><img border="0" src="https://3.bp.blogspot.com/-pkcamZYoNCg/XIHLv_3MLwI/AAAAAAAAAI4/_HXNYJHkapkbk77p-pCU12GwSjUvGRWsgCK4BGAYYCw/s400/4.jpg" /></a>　</td>
      <td>立ち位置のアップデートを行わないようにする。</td>
    </tr>
    <tr>
      <td><a href="http://4.bp.blogspot.com/-k2q8oVNs6I8/XIHL54oZ0PI/AAAAAAAAAJE/dMR5JkFWU0gJWCwIT1XjHFZaHQSljNQWgCK4BGAYYCw/s1600/5.jpg" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-k2q8oVNs6I8/XIHL54oZ0PI/AAAAAAAAAJE/dMR5JkFWU0gJWCwIT1XjHFZaHQSljNQWgCK4BGAYYCw/s400/5.jpg" /></a></td>
      <td>モーターの位置のアップデートを行わないようにする。</td>
    </tr>
    <tr>
      <td><a href="http://2.bp.blogspot.com/-qhoEaLyD75U/XIHL-EeO43I/AAAAAAAAAJQ/mBuh4QuoR6AfpDOujIxIMXz5XQe_ezGEgCK4BGAYYCw/s1600/6.jpg" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-qhoEaLyD75U/XIHL-EeO43I/AAAAAAAAAJQ/mBuh4QuoR6AfpDOujIxIMXz5XQe_ezGEgCK4BGAYYCw/s400/6.jpg" /></a></td>
      <td>エンゲージメントゾーンを非表示にする。</td>
    </tr>
    <tr>
      <td><a href="http://4.bp.blogspot.com/-sUWVjlF7DyM/XIHMHFxsrRI/AAAAAAAAAJc/PAW0LXKUICI7LN45YbP8U285a2p2uaZ4ACK4BGAYYCw/s1600/7.jpg" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-sUWVjlF7DyM/XIHMHFxsrRI/AAAAAAAAAJc/PAW0LXKUICI7LN45YbP8U285a2p2uaZ4ACK4BGAYYCw/s400/7.jpg" /></a>　</td>
      <td>人検知を非表示にする。</td>
    </tr>
  </tbody>
</table>
<h3> 1-2.Motion View</h3> Motion Viewは関節の角度の閲覧と設定ができます。<br />
<div align="left" class="separator" style="clear: both;"> <a href="http://1.bp.blogspot.com/-geBqTqbU59Q/XIHsvvnDFNI/AAAAAAAAANE/wi0qg3Zc-nQrl4ykkj2MsqbLn2g3plVxgCK4BGAYYCw/s1600/WS000009.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="378" src="https://1.bp.blogspot.com/-geBqTqbU59Q/XIHsvvnDFNI/AAAAAAAAANE/wi0qg3Zc-nQrl4ykkj2MsqbLn2g3plVxgCK4BGAYYCw/s640/WS000009.JPG" width="640" /></a></div> <br />

<table border="1">
  <tbody>
    <tr>
      <th>インデックス</th>
      <th>名前</th>
      <th>説明</th>
    </tr>
    <tr>
      <td width="120px">A</td>
      <td width="250px">スライダー</td>
      <td width="300px">関節の角度が設定可能。</td>
    </tr>
    <tr>
      <td>B</td>
      <td>現在のジョイントの値</td>
      <td>インジケーターが緑の場合、Pepperはアニメーションの指定通りに動けていることを意味する。インジケーターが青い場合は、現在の関節の角度がアニメーションの指定する角度まで動けていないことを意味し、原因としては以下が考えられる。<br />
        <ul>
          <li>アニメーションがまだ継続している。</li>
          <li>セーフティーなどの機能によって、アニメーションが指定する角度がとれない。</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>D</td>
      <td>関節のロックの切り替え</td>
      <td>
        <ul>
          <li>緑：関節がロックされていない。手動で角度を変更することが可能。</li>
          <li>赤：関節がロックされている。手動で角度を変更することは出来ない。</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>E</td>
      <td>ミラーリングオプション</td>
      <td>選択されている場合、関節の角度の変更等のアクションが左右対称に実行される(右腕を挙げると左腕も同様に挙がるなど)。</td>
    </tr>
  </tbody>
</table>

Cの記録ボタンについては、コレグラフでは確認できましたがAndroidStudioでは動作していないようです。

##1-3.Log view
![WS000000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/33910e38-c55a-146d-cc48-b90c09eb4a02.jpeg)


Log viewにはアプリのデバッグに利用できるPepper側のログが表示されます。表示するログの種類は選択可能です。

##1-4.Dialog view
![WS000000 (1).JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/fa455aab-4d6b-7149-e564-ca61ea3b7eff.jpeg)


Dialog viewは、Pepperが認識した音声の内容、認識制度、及びPepperの発話内容を表示します。

##1-5.Robot viewer表示中に有効となるpluginのボタンについて
<table align="left" border="1">
  <tbody>
    <tr>
      <th>ボタン</th>
      <th>説明</th>
    </tr>
    <tr>
      <td width="150px"><a href="http://4.bp.blogspot.com/-BwdMrILjTnU/XIHVSZAHOVI/AAAAAAAAAMI/okMNdSPPtUUBSzX0jI86zkMnbh7JfFmVwCK4BGAYYCw/s1600/Z.jpg" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-BwdMrILjTnU/XIHVSZAHOVI/AAAAAAAAAMI/okMNdSPPtUUBSzX0jI86zkMnbh7JfFmVwCK4BGAYYCw/s400/Z.jpg" /></a>&nbsp;<a href="http://1.bp.blogspot.com/-tFkYf1H13XE/XIHVuS2s4bI/AAAAAAAAAMg/1n-YkDYK068rqHc6iwfNZ267dTGPVWX5QCK4BGAYYCw/s1600/WS000007.JPG" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-tFkYf1H13XE/XIHVuS2s4bI/AAAAAAAAAMg/1n-YkDYK068rqHc6iwfNZ267dTGPVWX5QCK4BGAYYCw/s1600/WS000007.JPG" /></a></td>
  <td>
接続しているPepperのレスト、及びレスト解除が可能。
</td>
    </tr>
    <tr>
      <td><a href="http://2.bp.blogspot.com/-Gs14z1HFaXc/XIHVUCdij1I/AAAAAAAAAMQ/tCMyT_YX1eQAMvnZX1Hdn1_PtB7269qyQCK4BGAYYCw/s1600/dfsiugzkfsrhz.jpg" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-Gs14z1HFaXc/XIHVUCdij1I/AAAAAAAAAMQ/tCMyT_YX1eQAMvnZX1Hdn1_PtB7269qyQCK4BGAYYCw/s400/dfsiugzkfsrhz.jpg" /></a>&nbsp;<a href="http://4.bp.blogspot.com/-de8dRJsb6RI/XIHVv-0J7nI/AAAAAAAAAMo/gP3bw1mjH1IdtYmwrYBfUT3VMQcO6oX4wCK4BGAYYCw/s1600/WS000008.JPG" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-de8dRJsb6RI/XIHVv-0J7nI/AAAAAAAAAMo/gP3bw1mjH1IdtYmwrYBfUT3VMQcO6oX4wCK4BGAYYCw/s400/WS000008.JPG" /></a></td>
      <td>
アニメーションモードのon/offを設定。<br /> オートノマスライフによって呼吸するような動きを行っているが、モーションを制作する際などにはこの動きが邪魔になることがあります。このボタンでアニメーションモードをonにすることでオートノマスライフの動きを止めることが出来ます。
</td>
    </tr>
  </tbody>
</table>
※上記のボタンは最新版では削除されています。
#2.Robots Browser
pluginで追加されたTool barのボタンの真ん中のボタンを押すとRobot Browserが起動します。Robots Browserには接続可能なロボットが一覧で表示されます。

基本的には、Pepper本体のIPアドレスを[User fixed IP/hostname]に入力し、Selectボタンを押下して接続します。

![WS000000 (2).JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/a80de877-2396-4c8c-8376-e6542d66dfac.jpeg)

<table border="1">
  <tbody>
    <tr>
      <th>項目</th>
      <th>説明</th>
    </tr>
    <tr>
      <td width="100px">★</td>
      <td>Pepperをお気に入りに登録することが出来る。<br />
        <table border="1" style="margin: 5px;">
          <tbody>
            <tr>
              <th>アイコン</th>
              <th>説明</th>
            </tr>
            <tr>
              <td width="100px"><a href="http://4.bp.blogspot.com/-Ebv_4Sagse8/XIHSBx6RNoI/AAAAAAAAAK0/R9sf0jSGmHE3_1OTfL-RzKn2hJTIq_ltACK4BGAYYCw/s1600/fav.jpg" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-Ebv_4Sagse8/XIHSBx6RNoI/AAAAAAAAAK0/R9sf0jSGmHE3_1OTfL-RzKn2hJTIq_ltACK4BGAYYCw/s400/fav.jpg" /></a></td>
              <td>お気に入りに登録されているロボット。次にRobots Browserを開いた際、一覧の先頭に表示される。</td>
            </tr>
            <tr>
              <td><a href="http://1.bp.blogspot.com/-rQsx-LvrvSI/XIHSE1BGXOI/AAAAAAAAAK8/AhEVZOMPWz8dg_EYZ5Jdm0z7HwyBjCHvwCK4BGAYYCw/s1600/WS000003.JPG" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-rQsx-LvrvSI/XIHSE1BGXOI/AAAAAAAAAK8/AhEVZOMPWz8dg_EYZ5Jdm0z7HwyBjCHvwCK4BGAYYCw/s400/WS000003.JPG" /></a></td>
              <td>お気に入りに登録されていないロボット。</td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
    <tr>
      <td>Status</td>
      <td>Pepperのタイプと状態を表示 <br />
        <table border="1" style="margin: 5px;">
          <tbody>
            <tr>
              <th>アイコン</th>
              <th>説明</th>
            </tr>
            <tr>
              <td width="100px"><a href="http://2.bp.blogspot.com/-fALZJlErEkU/XOuu7UOzm_I/AAAAAAAAAdI/MqbutL8uHhg42RiBgZGAy9MVPP2d7l24gCK4BGAYYCw/s1600/WS000001.JPG" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-fALZJlErEkU/XOuu7UOzm_I/AAAAAAAAAdI/MqbutL8uHhg42RiBgZGAy9MVPP2d7l24gCK4BGAYYCw/s400/WS000001.JPG" /></a></td>
              <td>接続できないロボット。<br /> ロボットがシャットダウンされていたり、接続が許可されていないなど。</td>
            </tr>
            <tr>
              <td>
                <div class="separator" style="clear: both; text-align: center;"> <a href="http://1.bp.blogspot.com/-xiwKB39xdGQ/XIHTEzxGgXI/AAAAAAAAALY/e-sD2ZR80ewe2e_wpx_zZCs9AJSaQvJzgCK4BGAYYCw/s1600/real.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-xiwKB39xdGQ/XIHTEzxGgXI/AAAAAAAAALY/e-sD2ZR80ewe2e_wpx_zZCs9AJSaQvJzgCK4BGAYYCw/s1600/real.jpg" /></a></div>
              </td>
              <td>接続できるロボット。<br /> コンテキストメニューに以下のオプションがある。<br />
                <ul>
                  <li>[Copy Host:Port]</li> ホスト名とポート番号をコピーする。<br />
                  <li>[Copy name]</li> ロボットの名前をコピーする。<br /> </ul>
              </td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
    <tr>
      <td>Name</td>
      <td>ロボットの名前</td>
    </tr>
    <tr>
      <td>Port</td>
      <td>ロボットへの接続に使用するポート番号</td>
    </tr>
    <tr>
      <td>Host</td>
      <td>ロボットのホスト名</td>
    </tr>
  </tbody>
</table>