ロボットアプリ開発入門

はじめに

三菱総研DCS クラウドテクノロジー部の良波(よしなみ)です。

弊社では、介護施設や学校教育にコミュニケーションロボットを導入することを目指し、ロボットのアプリケーション開発を行っています。

コミュニケーションロボットサービス Link&Robo for ウェルネス|三菱総研DCS

ソフトバンクロボティクス社のNAOのアプリケーションは、Choregraphe(コレグラフ)と呼ばれるツールで簡単に開発することができます。 今回はロボアプリ開発未経験の方向けに、ロボットの「喋る・動く」といった基本的な動作の実装方法をご紹介します。 「ロボアプリの開発って難しそう・・・」といったイメージを持つ人も多いかと思いますが、この記事を通してロボアプリ開発の敷居が低くなれば幸いです。

※ソフトバンクロボティクスのNAOを活用し、当社が独自に実施しています。

「Choregraphe」とは

Choregrapheとは、ソフトバンクロボティクス社のロボット開発ツールです。 このツールを利用することで、NAOのアプリケーションをGUIベースで作成できます。

ボックス(ロボットの動きや処理の要素)を、処理の流れに沿ってドラッグ&ドロップ操作で結び、ノーコードでプログラミングします。 この記事でご紹介する機能も、ノーコードで作成しています。

また、作成したアプリケーションはChoregraphe上のバーチャルロボットを用いることで、実機がなくても手軽に動作を検証することが可能です。(一部、バーチャルロボットには対応していない機能があります。)

1.ダウンロード手順

下記のリンクからChoregrapheをダウンロードすることができます。

開発ドキュメント、SDK | ロボットを活用した社会の実現 | ソフトバンクロボティクス

今回はNAO(V6)のアプリケーションを作成します。Choregrapheはご利用のOSに合わせたものを選択してください。なお、記事はWindows版(バージョン2.8.6)を用いて執筆しています。

2.バーチャルロボットの設定

Choregrapheを起動すると、次のように表示されます。

以下の手順で、ロボットビューにバーチャルロボットを表示させてみましょう。
・メニューの「編集」 > 設定

・バーチャルロボットタブ > ロボットモデル
・「NAO H25(V6)」を選択して「OK」ボタン

・メニューの「接続」 > バーチャルロボットに接続

ロボットビューにNAOが表示されれば設定完了です。

ロボットに喋らせる

ここからアプリケーションの実装に入ります。まずはロボットに言葉を喋らせるプログラムを作りましょう。

1.ボックスを配置

画面左下に、ボックスライブラリパネルがあります。
Speech > Creation のフォルダ内にある「Say」ボックスを、画面中央のフローダイアグラムパネルへドラッグ&ドロップします。

2.ボックスを結ぶ

配置したSayボックスを、図の通りに線で結んでください。線は始点から終点へドラッグ&ドロップすることで結べます。たったこれだけで喋らせるプログラムは完成です。

3.アプリの再生

試しにバーチャルロボットで動かしてみましょう。画面上部の再生アイコンを押下します。

作成したプログラムが実行され、バーチャルロボットが「Hello」と喋りました。

喋らせる内容は変更可能です。Sayボックス左下のパラメータボタン(スパナアイコン)を押下します。Textに設定された言葉をロボットは喋ります。Sayボックスに限らず、パラメータを変更できるボックスにはパラメータボタンが付いています。

このように、Choregrapheでは動かしたい動作をボックスライブラリから選択し、配置したボックスを線で結ぶといった操作で簡単にロボット開発ができます。

アニメーションを作る

次は、ロボットのアニメーションを作りましょう。

ロボットのアニメーションについても、ボックスライブラリの Animationフォルダにさまざまなボックスが定義されています。それらを使うことでロボットを動かすことができますが、今回はボックスライブラリにはないオリジナルのアニメーション(右腕を上げる→下ろす)を作ってみます。

1.ボックスの新規作成

フローダイアグラムパネルで
右クリック > ボックスの新規作成 > タイムライン を選択してください。
任意のボックス名を入力し、作成します。今回は「Sample」というボックスを作りました。

作成されたら、次のように結びます。

2.タイムラインにロボットのポーズを登録

タイムラインボックスをダブルクリックして開くと、画面上部にタイムラインパネルが表示されます。 この時間軸にロボットのいくつかのポーズを登録することで、1つのアニメーションが作成できます。
(親ボックスのフロー図に戻りたいときは、フローダイアグラムパネル上部に表示されているボックスパスの「root」をクリックします。)

ポーズを登録するために、バーチャルロボットの関節のパラメータを変更していきます。関節のパラメータを変更してポーズを作ったときに、オートノマスがONの状態であるとロボットが勝手に直立姿勢に戻ろうとしてしまいます。(オートノマスとは、ロボットが生きているような振る舞いをする機能です。)

以下の手順でオートノマスをOFFにします。
・画面右上の♥アイコンを押下し、オートノマスをOFFにする。(OFFにするとロボットがしゃがみます。)
・☀アイコンを押下し、しゃがんだ姿勢から直立姿勢に戻す。

・右腕を上げるポーズ

では実際に「右腕を上げる」ポーズをタイムラインに登録します。タイムラインボックスが起動してから2秒後に右腕が上がるようにしたいと思います。
タイムラインの目盛はフレーム値(F)を示しており、デフォルトだとフレームレート(fps)は25fpsとなっています。50F(ボックスが起動してから2秒後)にポーズを登録したいので、目盛50の位置をクリックし、青色のバーが50の位置に表示されることを確認してください。

続いて、ロボットビュー内のロボットの右腕をクリックします。画面右下のインスペクタパネルに、右腕の各関節のパラメータが表示されるかと思います。RShoulderPitchの値を-60.0°に変更することで、ロボットの腕を上げることができます。RShoulderPitchの値は、水平方向に対する下向きの角度を表しているため、値を小さくするほど腕は上がります。

関節のパラメータを変更すると、タイムライン上にポーズが自動で登録されます。(登録されると50Fにグレーのポイントが表示されます。)

・右腕を下げるポーズ

「右腕を下げる」ポーズも同様の方法で登録します。腕が上がってからさらに2秒後、腕が下がるように登録します。
タイムラインの100F(タイムラインボックスが起動してから4秒後、すなわち右腕が上がってから2秒後)の位置をクリックし、インスペクタパネルからRShoulderPitchを直立時の値である80.0°に変更します。100Fにポーズ(グレーのポイント)が登録されていることを確認してください。

3.アプリの再生

これで、「右腕を上げる→下ろす」アニメーションが完成しました。再生してみましょう。 Helloと喋った直後、「右腕を上げる→下ろす」動作をすることが確認できました。

今回はSayボックスとタイムラインボックスを直列に結んでいますが、並列に結ぶことで「喋りながら動く」も実現可能です。
並列にする場合は、ボックスライブラリの Programming > Logic > 「Wait For Signals」ボックスを活用しましょう。Sayボックスのほうが動作の時間が短く、先にフローダイアグラムの終端に到達してしまうため、タイムラインボックスのアニメーションが途中で止まってしまいます。このボックスを使うことで「2つの信号が入力されるまで待つ」といった制御ができます。

おわりに

バーチャルロボットを用いて、ロボットの基本的な動作「喋る・動く」を実装してみました。 Choregrapheを使うことで、簡単にロボアプリ開発できることがご理解いただけたと思います。

今回の記事ではバーチャルロボットで実現できる初歩的な部分しかご紹介できていませんが、ボックスライブラリには他にも豊富な種類のボックスがあり、それらを使いこなせばより複雑な動作を作ることができます。

また、各ボックスはPythonで記述されています。ボックスをダブルクリックするとスクリプトエディタパネルが表示されるので、コードを修正してボックスをカスタマイズすることができます。ボックスライブラリの Programming > Templates > 「Python Script」というボックスのひな形を使えば、自作のボックスを作ることも可能です。

この記事を通して、「ロボアプリの開発って難しそう・・・」というイメージを払拭できていれば幸いです。