Edited at

Pepperチュートリアル (8):移動

More than 3 years have passed since last update.


このチュートリアルの内容

このチュートリアルでは、Pepperの動きについて、特に移動に関するアプリケーションの作成方法を通じて、Pepperの足関係の仕様や、制御方法について説明します。


  1. 各種駆動系、センサー仕様

  2. 単純な移動

  3. 任意の軌道による移動


各種駆動系、センサー仕様

Pepperは車輪による移動をおこないますが、周辺への衝突などを防ぐため、多くのセンサーを足回りに備えています。


  • 車輪 (WheelFR [A], WheelFL [B], WheelB [C])

  • バンパー (BumperFR [D], BumperFL [E], BumperB [F])

  • ソナー (SonarF [G], SonarB [H])

  • レーザーセンサー ([I], [J], [K])

  • レーザーアクチュエータ (Shovel [L], Vertical right [M], Vertical left [N], Front [O], Left [P], Right [Q])

これらの駆動系やセンサー1つ1つについて開発者が気にする必要はほとんどありません。これらのセンサーの値はロボットにより処理され、セーフティや、より抽象的なイベントの処理に使用され、駆動系は与えられた軌道の情報にあわせて適切に駆動されます。


単純な移動

もっとも簡単に移動を実現する方法として、Move Toボックスを利用する方法があります。

MoveToボックスのパラメータに、以下のような X, Y, Theta の値を指定することで、Pepperを移動させることができます。

ここでは、サンプルとして、Pepperに 「まえ」「うしろ」「ひだり」「みぎ」と言うとその方向に移動し、「とけい」「はんとけい」と言うと回転する ということをやってみます。このアプリケーションは、 「おしまい」と言われたら「じゃあ また」と言って停止する ことにします。

なお、チュートリアル(2) でも見ましたが、Pepperは障害物があると移動をおこなわないというセーフティ機構を持っています。この確認のため、移動に成功したかどうかをSayでしゃべることにします。


つくってみる



  1. 利用するボックスの準備


    • Audio > Voice > Set Language ... 言語設定を変更する

    • Audio > Voice > Speech Reco. ... 音声認識をおこない、パラメータで与えられた単語候補のいずれかを判別する

    • Flow Control > Switch Case ... 入力された値に対して、条件に応じて異なる出力をおこなう

    • Motions > Move To ... 指定座標だけ移動/回転する (6回ドラッグ&ドロップ)

    • Audio > Voice > Say ... 入力した文字列をしゃべる (3回ドラッグ&ドロップ)


    まずは接続せずに並べておきます。



  2. パラメータを設定する

    Set LanguageボックスにはJapaneseを、Speech Reco.ボックスには、今回Pepperが認識すべきキーワードを まえ;うしろ;ひだり;みぎ;とけい;はんとけい;おしまい と、セミコロンで区切って指定します。




    また、各Move Toボックスには、それぞれ以下のように、X=0.2 (前方へ20cm), X=-0.2 (後方へ20cm), Y=0.2 (左へ20cm), Y=-0.2 (右へ20cm), Theta=1.57 (反時計回りに90°), Theta=-1.57 (時計回りに90°)と設定します。



  3. 条件分岐を設定する

    Switch Caseボックスに条件を設定します。1番上のボックスから順番に、"まえ" "うしろ" "ひだり" "みぎ" "とけい" "はんとけい" "おしまい" と、それぞれセミコロンで囲んで指定します。



  4. ボックスをつなげる(成功パターン)

    まずは、Move Toボックスが失敗する場合を考えず、ボックス同士をつなげます。



  5. ボックスをつなげる(失敗パターン)

    次に、Move Toボックスが失敗した場合の接続をおこないます。



  6. Sayボックスの内容を変更する

    Sayボックスをダブルクリックし、それぞれの内容を 成功 失敗 じゃあまた に変更します。



これで、聞いた内容に応じてそれぞれの座標だけ移動/回転するアプリケーションを作成することができました。


動作確認

バーチャルロボットまたはPepperに接続した上で、再生してみてください。

バーチャルロボットの場合は、音声による対話のときと同様、ダイアログビューを開き、「まえ」「うしろ」など入力して [1] みてください。ロボットの移動する様子 [2] と、「成功」と言う [3] ことが確認できるはずです。

Pepperの場合は、Pepperに「まえ」「うしろ」などと話しかけてください。移動して、「成功」と言えば成功です。「失敗」と言う場合は、Tipsを参考に、原因を調べて取り除いてから再チャレンジしてみてください。


[Tips]動かないときは

Pepperに接続している場合、「失敗」と言うだけで、うなだれたまま何もしない場合があります。Pepperが以下のような状態になっているときは、おやすみ中です。




このような場合は、[Wake Up]をクリックして起こしてあげてください。




また、以下のように充電コネクタが開いている状態ですと、同様にセーフティが働き動きません。




他に、Pepperが「進行方向に障害物がある」と判断する状況ですと動きません。Pepperを少し移動させてみるなどして動作がどう変化するか、確認してみてください。


任意の軌道による移動

Choregrapheが提供する、平面動作 の作成機能を利用することで、自由な軌道を直感的に定義することができます。


作成方法

以下の手順で利用することができます。


  1. プロジェクトの内容パネルの [+]ボタン をクリックし、[平面動作を作成中...] をクリックします



  2. 平面動作の名前を問い合わせるダイアログが開くので、適当な名前を設定し、[追加]ボタンをクリックします



  3. 平面動作エディタが開きます




    画面中央の円をドラッグ [A] することで、軌道を作成することができます。 [新規パス]をクリック [B] することで、新たな曲線(パス)を追加し、続けて軌道を描く[C] ことができます。






  4. 一連の軌道をどの程度の時間で実行するのか、フレーム数で指定することができます




    このフレーム数を大きくすれば、移動はゆっくりになり、小さくすると速く移動することになります。

  5. 必要に応じて、移動後の向きを指定します



  6. 軌道はトラジェクトリという単位で編集します。[新規&トラジェクトリ]をクリック [A]すると、新たなパスを編集 [B] することができます。

    なお、トラジェクトリの[1]をクリックすると、これまで編集していたパスを再度編集することができます




利用方法


  1. 編集した平面動作は、フローダイアグラムパネルにドラッグ&ドロップ することで利用することができます



  2. ボックスをつなぎます



また、Move Alongボックスをドラッグ&ドロップし、パラメータから平面動作を設定することも可能です。

これでPepperに接続、再生すると、作成した軌道にしたがってPepperが移動することが確認できます。

このようにして、各ホイールをどう駆動するかなどを気にすることなく、平面移動に関する動作を定義、実行することが可能です。