コラム

NAOにプログラミングしてみよう

筆者:須佐 亮太

ロボティクス

2016.01.13


前回は、国内外のロボットの歴史を振り返りながら、現在のロボットビジネス、将来のロボットサービスを考察しました。 今回は、話を「NAO」に戻して、NAOのプログラミング(動かし方)を紹介します。ロボットと聞くと、親近感が湧く方でも、プログラミングと聞くと、そこに大きな障壁を感じる方は多いと思います。今回のコラムを読んで、その障壁が少しでも低くなれば幸いです。


ロボットプログラミングとは


そもそも、プログラミングとは、人間が意図した処理、動作を行うように、コンピューターに指示を与える行為です。コンピューターが動くには「プログラム」を構築する必要があり、それらは専用の「言語」をもって行われます。
プログラミング言語は複数種類存在しますが、どの言語でも、基本的な命令要素は以下の通りです。

・入力: キーボード、ファイル、その他の機器からデータを入手する。
・出力: 画面にデータを表示したり、ファイルその他の機器にデータを送る。
・演算: 加減算のような基本的算術操作を行う。
・条件付き実行: 条件をチェックして、一連の処理を行うか否かを判断する。
・繰り返し: ある処理を繰り返し実行する。通常、毎回何かが変化している。

今回は、相手がロボットになるので、例えばNAOに意図した動作をさせる際には、NAOのCPUやモーターに、以上のような命令を与えることで、NAOが思い通りに動くようになるのです。

プログラミング、と聞くと、そういった言語の敷居の高さが感じられると思いますが、NAOの最大の特徴は、このプログラミングを誰でも簡単にできる所にあるのです。

従来の、言語列に頼ったプログラミング方法

GUIとは


従来のロボットは、言語、いわゆる文字列で制御をするのが一般的でした。そのため、かなり専門性、学術性が高く、「できる人にしかできない」ことで、ビジネスとしての競争性にやや欠けていたのではないでしょうか。プログラミング行為がコンピュータの中で閉じてインタラクティブにできるようになったのが1960年代のことです。それ以来50年が経ちましたが、インタフェースの大部分が文字列ベースという点は変わっていません。

しかし最近になって登場した、GUI(グラフィカル・ユーザー・インターフェイス)という開発環境は、それまでの文字列に頼ったプログラミング方法から一変し、今までの論理を絵図や写真などで表すことで、ユーザーが直感的にロボットの操作、制御を可能にしました。MITが開発した子供向けプログラミング学習キット「Scratch」などは、代表的なGUIです。

「Scratch」に代表される、GUIという開発環境

Choregraphe(コレグラフ)とは


NAOを制御する開発環境「Choregraphe」も、このGUIをベースに作られています。Choregrapheの画面上では、動作を定義したボックスを、ドラッグアンドドロップしてボックスとボックスを繋いでいく、いわゆるブロックダイヤグラムによるビジュアルなプログラミングが可能になっています。

あらかじめ動作を定義した標準動作のボックスライブラリーが用意されており、それを組み合わせることによって、NAOの様々なアプリケーションを作る事ができるのです。

NAO専用OS「NAOqi」の開発環境「Choregraphe」

NAOに喋らせてみよう


例えば、NAOに喋らせるときは、「Say」ボックスを使用します。図のように、Sayボックスの中で言語を選び(19か国語に対応!)、NAOに喋らせたい言葉を入力するだけで、NAOが思い通りに喋るようになるのです。さらには、Speech recというボックスと組み合わせれば、「人がこう喋ったことに反応して、NAOがこう喋る」というプログラムをすることができるのです。

NAOを動かしてみよう


NAOの動作プログラムも、非常に直感的に操作することが可能です。図のように、バーチャルロボットを画面上で動かし、その動作をロボットにインストールさせることで、NAOがプログラムした通りの挙動を行うのです。

Choregrapheを使った、NAOアプリケーション


実際にChoergrapheを使ったアプリケーションをご紹介します。

https://www.youtube.com/watch?v=Q7DZRdy6MO0

こちらの動画は、Choregrapheで実際にNAOの挙動をプログラムしたものです。先日紹介したNAOが持つセンサーも、Choregrapheでの制御が可能なので、例えば、「人を認識したら~と喋る」「握手したら音楽がなる」といったように、カメラや触感センサーをつかったプログラムも、自由自在に行えるのです。

おわりに


今回はNAOの動作のみをご紹介しましたが、最近のロボットプログラムはさまざまな種類のデータを取り扱う必要があります。そのようなプログラムを開発するためには、ロジックだけを文字で開発するような統合開発環境では不十分です。

具体例として、視覚的な情報を扱うプログラムを主に紹介してきましたが、データが重要なプログラムとしては、最近流行りの機械学習などもあります。

データがないと意味がないということで、プログラムよりもデータのほうが大事な時代に差し掛かってきているとも考えられます。

「開発」には、プログラム開発だけでなくデータの「制作」も必須となり、プログラム開発のプロセスの中でその間の境界が消失する時代がくるのではないでしょうか。そんな時代の開発環境では、プログラムを開発する機能と同等、あるいはそれ以上に、データを編集、制作できる機能が重要視されるでしょう。

関連URL

筆者紹介

須佐 亮太

プロフィール

須佐 亮太(Ryota Susa)

デジタル戦略部 セールスマネージャー
ヒューマノイドロボット NAO(ナオ)、NAOを使った教育プログラム、ロボットアプリケーション営業として、2015年3月に入社致しました。

大学では国文学と社会学を学んでいましたが、様々な縁があり、IT業界に従事しております。
趣味は読書と映画鑑賞。好きな作家は川端康成と宮本輝です。
NAOと共に、精一杯成長していきたいと考えておりますので、宜しくお願い致します。


Page Topへ