Tech Sketch Bucket of Technical Chips by TIS Inc.

ロボット・デバイス連携アプリの開発環境R-envをハッカソンで触ってきました!

Pocket

2016年3月19日〜3月20日にR-env(連舞)ハッカソンが開催されました。このハッカソンは、NTTが開発中のR-envという開発ツールを使って、ロボットやデバイスを連携したサービスを実装し、その内容を競うというものです。弊社、戦略技術センターはR-envハッカソンに参加し最優秀賞を頂きました。本記事では、開発中である中使わせて頂いたR-envの紹介を含めて、ハッカソンの内容をレポートします。

R-env(連舞)ハッカソン

R-envハッカソンは開発にR-envを用いることを前提として、以下の通り開催されました。

イベント概要
URL:http://blog.goo.ne.jp/gootopic/renv/tokyo_hack.html
日程:2016年3月19日(土)、3月20日(日)09:30-20:00
会場:NTTレゾナント(田町グランパークタワー)
テーマ:ロボットがいる“近未来のおもてなし”

R-envとは

R-envとはロボットやデバイスを連携したアプリケーションの開発をサポートするクラウドサービスです。正確に言うとR-envが提供するサービスは「アプリケーション開発環境」「アプリケーション実行環境」の2つあります。ここでは、私たちが実際に触れた「アプリケーション開発環境」について説明します。

r-env

引用:【NTT R&Dフォーラム2016】「R-env:連舞(れんぶ)」を見てきました。(ロボログ)

「アプリケーション開発環境」はWebブラウザを通して提供されます。WebブラウザさえあればどんなPCでも開発ができることは大きな特徴です。開発は箱形の「ノード」とノードをつなぐ線である「状態遷移」を用いてスクリプトを作成します。

r-env_gui

引用:ロボットやデバイスを連携制御できる技術「R-env:連舞™」のオープンな開発を推進(NTT持株会社ニュースリリース)

「ノード」にはロボット・デバイスにさせたいアクションを選択します。そして「状態遷移」には次のノードに行くための条件を記述します。このノードと状態遷移を繰り返すことでロボット・デバイス間の連携を実現します。

R-envのスクリプトは一つのアプリケーションに複数持つことができます。アプリケーションを複数のスクリプトに分割することで、複数人でも開発を行うことができるようになっています。スクリプトは複数のものを並列に実行することもできますし、違うスクリプトを順次実行していくこともできます。

ハッカソン

アイディア出し

まず、メンバー個人個人のアイディアを見せ合いました。次にそれを共有してチームでアイディアを広げていきました。

brain_storming

今回のハッカソンで特徴的だったのが、チームで出したいくつかのアイディアを他チームの人にも評価してもらうことです。他チームの評価が高いことも考慮して、私たちは、一人一人にあった最適なお風呂空間をロボットを使って提供する「NEO UNIT BATH」を作ることに決めました。

開発

今回使ったロボットはSota・Palro・BB-8で、デバイスはWebカメラ・タブレット・人感センサー・HUE(ネットワーク越しに色・明るさが変えられるLEDライト)になります。私たちはロボット・デバイスのスクリプトを誰が開発するかで役割分担をしました。

以下は開発時の様子です。皆、真剣です。
development

R-envを使ってみて

今回のハッカソンはR-envに初めて触れる機会になりました。ロボット・デバイス連携のためのサービスであるR-envに期待していたのは次の3つです。

  1. どんなロボット・デバイスでも連携できること
  2. ロボット・デバイス個々に開発方法を習得するよりも学習コストがかからないこと
  3. チーム開発が行えること

やったこと

私の担当はロボットPalro。Palroに関する知識はなかったのですが、R-envに接続させるのはPalro内に前もってインストールされていた接続用アプリケーションを実行するだけでした。また、Palroに何か動作をさせるのも、WebブラウザでR-envのスクリプトにノードを配置し、デバイス名をPalroに指定してPalroにさせたいイベント名を選ぶだけと、かなりお手軽にできました(下図参照)。
r-env_action

引用:【NTT R&Dフォーラム2016】「R-env:連舞(れんぶ)」を見てきました。(ロボログ)

が、ここからが私とPalroの戦いの始まりでした。なぜか指定したイベントを実行してくれないParlo。なぜか突然R-envとの接続が切れるPalro。他チームのPalroも同様のようでした。

R-envサーバーとPalroの接続用アプリケーションのソースコードは公開されておらず、少しアナログな対応をとらざるをえませんでした。

指定したイベントを実行できない問題に対しては、必ず実行できるイベントとほとんど実行されないイベントがあることに気づいたので、必ず実行できるイベントを特定してそれだけを使うことにしました。接続が切れる問題に対しては、R-envだけでなくPalroアプリケーションの開発環境PALRO Application Studioとの接続も不安定だったので、ネットワークもしくはPalroのネットワーク接続性能の問題の可能性がありました。ですが、原因を特定できるに至らず、デモの時には直前にPalroをR-envに接続することで対処しました。

わかったこと

  1. どんなロボット・デバイスでも連携できるか
    • R-envはWebSocketで接続できるロボット・デバイスであれば連携させることができます。ただ、最初の接続時にR-envサーバーにロボット・デバイス情報を登録しなければならず、このロボット・デバイス情報を準備するのに少し手間がかかります。今後、WebSocket通信とロボット・デバイスと情報登録を行ってくれる接続用アプリケーションが用意されたロボット・デバイスが増えれば、アプリケーション開発の敷居がかなり下がるのではないでしょうか。
  2. ロボット・デバイス個々に開発方法を習得するよりも学習コストがかからないか
    • 使用するロボット・デバイスに接続用アプリケーションが用意されていれば、あとはR-envのGUIだけで開発することができ、ロボット・デバイスごとに違う開発方法を身につける必要はありません。しかし、今回Palroなどのロボット・デバイスがうまく動かないといった問題がありました。このような問題を避けるために、接続用アプリケーションの信頼性向上と、ロボット・デバイス毎にR-envと接続するときのTipsのような情報があればよいなと思います。
  3. チーム開発が行えるか
    • 複数のスクリプトが並列にもシーケンシャルにも実行できるので、役割分担がしやすいです。アプリケーションの処理フローがわかっていれば、処理ごとの実装の難易度を勘案してタスクを割り振ることができます。ただ、デバッグ権限がアプリケーション単位で専有されるため(どのスクリプトを実行するかは選択できます)、チームで同時に開発するにはスクリプトごとに並行してデバッグが行える機能が欲しいところです。(現状のままでも、個人で開発するツールと割り切ればよいのかもしれません。)他には、アプリケーションのバージョン管理機能の登場にも期待です。

作品紹介

私たちの「NEO UNIT BATH」は、ユーザーに最適なお風呂を提案し、その入り方のアドバイスをするというものです。お風呂は究極のプライベート空間であるからこそ、ロボットを活用できる場であると考えました。

「NEO UNIT BATH」は大きく以下の3つのサービスから構成されます。

1、Sotaとタブレットによる受付
2、受付内容をもとにしたHUE、音楽、プロジェクター、Palroによるお風呂サービス
3、BB-8による道案内

構成図

1の受付では、Sotaとの会話を通じてユーザーに最適なお風呂を提案します。まず、人感センサーによってユーザーを検知します。ユーザーを検知したら、Sotaの質問と男女識別機能でユーザーの好みを推定し、ユーザーに合ったお風呂を提案します。提案されたお風呂はタブレットに表示してユーザーが確認できるようにしました。このとき得たユーザーの情報は、R-envを通して各デバイスに連携されます。

そして2のお風呂サービスでは、ユーザーの好みに応じてムードを演出し、お風呂の入り方のアドバイスを行います。ムード作りはHUEによる照明の色彩、BGM、プロジェクター投影によって行います。お風呂の入り方のアドバイスはPalroが行います。最後にはWebカメラから得たデータをMicrosoftのProject Oxfordで解析し、お風呂の入り方の採点を行います。もし結果が悪ければ、Palroが改善点をアドバイスします。

受付とお風呂の間の道のりは、BB-8が案内します。前もって経路を登録しておくことで、BB-8は経路通りに移動をすることができます。

以下はアプリケーションのデモを撮影した動画です。

プレゼン・デモ

二日目の最後にはプレゼン・デモを行いました。こちらはプレゼンの様子です。
presentation
写真提供:ロボットスタート株式会社

デモも本番で止まることなく最後まで稼働させることができました。

結果

見事、TISチームは最優秀賞をいただくことができました。

commendation
写真提供:ロボットスタート株式会社

お風呂でロボットを活用するというアイディアと、ロボットだからこその作品ということを評価して頂きました。

今回のハッカソン参加の最大の目的はR-envでできることを知ることであり、それは最優秀賞という形で実を結びました。しかし最優秀賞以上に私の心に残ったのは、審査員の方の次のような話です。「ロボットの活用は、すでにある作業をロボットで代替させるのでは難しい。なぜなら今作業として成立しているものは今の形が良いはずだから。ロボットの活用は、まだない全く新しい形として進むだろう。」

AI・ロボットの研究開発に従事するものとして、まだない全く新しいサービスとは何か、これまで以上に考えなければならないと感じた2日間でした。

参考URL

http://robotstart.info/2016/03/22/report-renv_hackathon_2.html
http://blog.goo.ne.jp/robologoo/e/07638a22aeba486968c9895331fd2498

エンジニア採用中!私たちと一緒に働いてみませんか?