IPA


開発成果一覧へ

 



2005年度下期 未踏ソフトウェア創造事業  採択案件評価書

 


1.担当PM

   原田 康徳 (NTTコミュニケーション科学基礎研究所 主任研究員)


2.採択者氏名

開発代表者

 石野 明  (九州大学 大学評価情報室 助手)

共同開発者

 小林 隼人 (九州大学 システム情報科学府 情報理学部門 修士課程)


3.プロジェクト管理組織


  NTT出版株式会社


4.委託金支払額


 1,199,914


5.テーマ名


  Webアプリケーションによるロボットプログラムの開発環境

 


6.関連Webサイト


  http://www.jollypochie.org/


7.テーマ概要


 ロボットブームにより現在,多くのロボットが広く一般に市販されている.しかし,その中でもプログラムを開発できるものは僅かしかない.たとえ,開発環境が用意されていても,それらを使うためには多くのことを学ばなければならず,ロボットを用いて何かやりたいことを持っているが,そのための下準備の大変さにその実現をあきらめてしまった人も多いのではないだろうか.
 ロボットをはじめとした組み込み機器におけるプログラミングに関しては,これまでも数多くの手法が提案されているが,それらの多くは高度に専門的な知識を要求し,提供されるツールもいわば玄人好みな専門的なものであることがほとんどである.
 一方,計算機のユーザインタフェースは近年,劇的に進化し,その結果,計算機は広く一般に普及するに至った.特に,WWWの普及は単なるデータ交換の仕組みを超えて,メール,スケジュール管理,写真管理などのWebアプリケーションの登場により,個別のアプリケーションを必要としていた領域にまで応用が広がっている.
 ロボットプログラムの開発においても,開発環境を使いこなすということは目的ではなく手段にすぎず,それらは簡単であれば簡単なほどよい.Webアプリケーションはその実装上の制約により通常のアプリケーションよりも使いにくい点もある.しかし一方で,インストールが不要であり,常に最新のものを使うことができ,他のユーザとの情報共有が容易であるといった大きな長所をもつ.
 本プロジェクトでは,Webアプリケーションの技術を応用することで,WWWブラウザだけを用いてロボットプログラムを作成することができる環境の提供を目的とする.ロボットとPCの間にWWWサーバーを介することで高度なインタフェースとグループ内の情報共有が可能な環境および,ロボット自身がWWWサーバーとなる環境の両方の開発をおこなう.
 この Webアプリケーションによるロボットプログラムの開発環境の実現により,子供を含めた一般の多くの人々がロボットプログラムの開発に容易に参加することが可能となり,その成功はより高度なロボットの実現へとつながる突破口となる.


8.採択理由


 ロボットのプログラミングをWebアプリを介して行おうというシステム.開発者は毎年RoboCup4足ロボットリーグで優秀な成績を収めている経験から,グループでの迅速なチューニングが重要であり,Webアプリによるプログラミング環境という結論に至った.
 この開発の成果やノウハウの蓄積は,RoboCupだけでなく,突発的なデモを行うような様々なシステムへの応用も可能である. 非常にユニークな成果が期待できる.




9.開発目標


本プロジェクトではWebアプリケーションを用いたロボットプログラムの開発環境の構築を目的とする.ロボットとしてはソニー製のエンターテイメントロボットAIBOを用い,DHTMLAJAXなどの最新のWebテクノロジを応用したインタラクティブ性の高いインタフェースを備えたWebアプリケーションの構築を目標とする.

実際の開発では,Ruby on Railsを用い,以下にあげる様々な機能を実現した.

1. モーションエディタ

2.   DHTML, AJAX技術を用いたインタラクティブなインタフェースと,ロボットを入力装置としても用いることができる斬新な操作を実現した.また,ロボットを用いることができない状況においてもモーションの開発ができるようシミュレータの利用も可能である.

3. 歩行エディタ

4.   歩行エディタにより歩行パラメータを編集し調整することが容易に可能となった.

5. スクリプトエディタ

6.   Luaスクリプトを編集し,ロボットに送信し実行することが可能である.また,モーションエディタで作成したモーションを利用することもできる.

7. オブジェクト認識モニタ

8.   ロボット内のオブジェクト認識の結果をリアルタイムに表示する.

9. 自己位置同定モニタ

10.ロボットが認識した各種ランドマークオブジェクトと,それを用いた自己位置同定の結果をリアルタイムに表示する.

11.     カメラ画像モニタ

12.ロボットのカメラ画像と,それに対して色変換処理を施した結果を簡単に確認する事ができる.

 

これらすべての機能を一つのWebアプリケーションとして提供することで,ロボット開発,とくにサッカーロボット開発に必要な様々なツール群に容易にアクセスすることが可能となった.


10.進捗概要


3.1. システムの概要

ロボットプログラムの開発をWWWブラウザを用いて行うために,ロボットとWWWブラウザの間にWWWサーバを置き,このWWWサーバに対してアクセスをすることで,ロボットの操作および,ロボットから各種のデータの受け取りを可能にした.ただし,データの即時性が重要な,物体認識結果の視覚化および自己位置同定結果の視覚化に関してはWWWサーバを介さずにクライアントプログラムとロボットが直接通信を行っている.

WWWサーバで動作するWebアプリケーションを開発するにあたって,WebアプリケーションのフレームワークとしてRuby on Railsを使用した.Ruby on Rails2004年にDavid Heinemeier Hanssonによって発表されたWebアプリケーションフレームワークで,国産のスクリプト言語Ruby上に構築され,その開発効率の高さから現在急速に普及が進んでいる.我々もこのRuby on Railsを用いることで,目的とするWebアプリケーションを短期間に構築することが可能となった.さらに,開発されたWebアプリケーションはAJAXなど最新のWeb技術を活用した高度なインタフェースを備えている.

 

 

1. システム構成.

本プロジェクトで作成したロボットプログラムの開発環境は,さまざまなツールの集合体である.それらすべてはRuby on Railsで作成された一つのWebアプリケーションのコントローラとして実装されている.以下の図2における,Motion, Gait, Luaなどのタブをクリックする事で各ツールにアクセスすることができる.そこで,本章ではまずそれら各ツールについて順に述べる.

 

 

 

 

 

2. 開発環境(共通項目).

また図2において,Connect, Disconnectと表示されているボタンがあるが,これはそれぞれロボットと接続,解除を行うためのボタンである.


11.成果


3.2.
モーションエディタ

モーションエディタはモーションを作成するためのツールであり,大きく分けて登録されているモーションを一覧できる画面とモーションを編集するための画面からなる(図3

 

 

3. モーションエディタ.

モーション一覧画面(図3左)では,各モーションごとにモーション名,モーションの説明が表示され,その右にモーションに対する操作として,編集(Edit),複製(Copy),送信(Send),削除(Delete)の4つのボタンが用意されている.

4. モーション一覧画面.

モーション名あるいは編集ボタンを押す事で,モーションの編集画面へと移動する.複製ボタンによってモーションの複製が作成され,その際にはモーション名として後ろに新たな数字が連番となるようにつけられる.送信ボタンを押す事でロボットへとモーションが送信され,ロボットによってモーションが実行される.削除ボタンはモーションを削除するが,その際には確認ダイアログが表示され,誤操作を防止している.

モーション一覧画面の最下部には操作メニューとして2つの機能が表示されている.Newは新規モーションの作成であり,Importはモーションのファイルからの取り込みである.

5. モーション一覧画面操作メニュー

これらのボタンをクリックするとYahoo! User Interfaceを利用したダイアログが表示され,それぞれモーション名とファイル名の入力が促される.なお,モーション名はロボット内で使用するための制限として8文字の英数字でなくてはならない.

6. モーション名入力ダイアログ.

モーションの編集画面は図7のような画面となっている.

7. モーション編集画面.

 

 

 

一番上に大きな文字で表示されているのがモーション名で,クリックすることで編集することができる.その下にはモーションの説明が標示されており,これもクリックで編集が可能である(図8).水色の背景色の列がフレームを表し,各関節の角度と変化のスピードを表すフレーム数が表示されている.これらの数字もすべてクリックすることで編集することができる.なお,関節の角度として空白を指定することもでき,その場合は関節の角度を変えないということを意味する.

8. フレーム編集

フレームの各数字の右には,フレームに対する操作ボタンが並び,左から順に,複製,左右入れ替え,ロボットへ送信,削除を行うことができる.

フレーム表示の下にはフレームの追加として,AddRecieveの2つのコマンドが並んでいる.Addはすべての指定が空白のフレームが追加され,Recieveは現在のロボットの関節の角度が返される.

さらに,その下にはモーションの操作メニューとして,モーションの送信(Send),初期姿勢へ戻す(Get up),左右入れ替え(Change LR),モーションのローカルへの保存(Export),モーションをロボット内に保存(Upload),モーションリストへ戻る(Back)が用意されている.Uploadはロボット内にモーションを保存することでLuaスクリプトからモーションを呼び出せるようにするために用いられる.

 

3.3. ロボットからの関節角度の読み込み

モーションの作成は,モーションエディタで直接関節角度を入力するほか,ロボットから関節角度を読み込むことでも可能である.ユーザは図9のようにロボットの関節を手で動かしてポーズを設定することができる.まず,足先のセンサーをクリックして関節を脱力させ(図9左),ポーズを決めた後,再度,足先のセンサーをクリックして関節を固定する(図9右).そのようにしポーズを決めた後で,Receiveボタンを押すことでそのポーズの関節角度を読み込んで1つのフレームを設定できる.

同様にして,いくつかのポーズをフレームとして読み込むことで,パラパラ漫画のように,より直感的にモーションを作成できる.

 

9. ポーズの設定

 

ポーズの設定は,頭,右前足,左前足,右後足,左後足をそれぞれ別個に動かすことで実現される.足を動かす場合は,背中の接触センサーに触れながら足先の肉球センサーをクリックすることで,クリックされた足全体,つまり3つの間接すべてを脱力させることができる.もう一度その肉球センサーをクリックすると,脱力していた関節を固定することができる.頭を動かす場合も同様に,背中の接触センサーに触れながら頭の接触センサーをクリックすることで,首から先の3つの関節を脱力,固定することができる.ただし,どこかの関節グループが脱力している間は,他の関節を脱力することはできない.例えば,右前足と左前足を同時に脱力させることはできない.

3.4. シミュレータ

モーションを作成する際には,モーションの確認をするためにロボットを用いる必要がある.しかし,実機を常に用いることには幾つかの点で問題がある.ひとつ目の理由としてあげられる点は,実機はモーション作成において1時間程度しかバッテリーが持たないということがある.また,過度の連続使用はロボット本体の寿命を縮める結果となる.ふたつ目の理由として,ロボットの台数の問題がある.十分な台数のロボットが確保できていればよいが,しばしばロボットの台数が足りなくなってしまい,実機を用いるしか手段がなくては,その間,作業が中断してしまう.そして,最後に,これが最も大きな欠点であるが,そもそもロボットがなければモーションを作ることも見ることもできない.当然ながらロボットが常に使用できる環境というのは考えられなく,ロボットが使用できないこともしばしばである.しかし,モーションがどんなものであったのか見ることができなくてはスクリプトを作成することもままらない.

そこで,そういったロボットが使用できない環境において,代替手段としてシミュレータによるモーションの作成と確認ができることは重要である.

ロボカップ4足ロボットリーグ用のシミュレータとして,いくつかのものが提案されているが,我々はイタリアのローマ大学によるAIBO 3D Simulatorを使用した.これは市販されているゲームであるアンリアル・トーナメントのゲームエンジンを利用したロボットシミュレータであり,RoboCupにおいてレスキューシミュレーションリーグで大会が開催されているUSARシミュレータを4足ロボットリーグ用へと改造したものである.

 

10. 4足ロボットリーグ用USARsim

 

このロボットシミュレータ上で動作するロボットは,ゲームサーバに対してネットワークを通じて関節の角度を命令する事によって動作する.そこで,我々のモーションエディタで用いているプロトコルを解釈し,それによる関節角度の変化の指示に対して線形補完を行い,一定時間ごとにロボットシミュレータへと指示を送るシミュレータ上のロボットに対するラッパープログラムを作成した.これにより,モーションエディタは接続相手が実機であるかシミュレータ上のロボットであるかを意識することなく使用することができる.

3.5. 歩行エディタ

歩行エディタは歩行のためのパラメータを作成するためのツールである.モーションエディタと同様に登録された歩行を一覧できる画面と歩行パラメータを編集するための画面からなる.(図11

 

11. 歩行エディタ

 

歩行一覧画面での操作はモーション一覧画面と同様であるので省略する.歩行編集画面では歩行動作のための65個のパラメータを設定することができる.画面下部にはSave(保存),Send(送信),Stop(停止),Download(ローカルにダウンロード)のボタンが並ぶ.

3.6. スクリプトエディタ

我々がこれまでに開発したロボットプログラムでは,AIBO中でスクリプト言語Luaを動作させることが可能である.Luaはブラジルのカトリカ大学で開発されたスクリプト言語であり,軽量で高速に動作することから組み込み用途に向いているという特徴を持つ.

スクリプトエディタはLuaスクリプトの編集を行うためのツールで,作成したスクリプトはその場でロボットへと送信し実行させることができる.(図12

 

スクリプト一覧画面          スクリプト表示画面

スクリプト表示画面

12. スクリプトエディタ

3.7. オブジェクト認識モニタ

オブジェクト認識モニタはロボット内でのオブジェクト認識の様子をモニタリングするツールである.オブジェクト認識の様子のモニタリングは,目の前を通過させたボールがどう見えているかを確認するなど,即時性が重要となる.そこでオブジェクト認識モニタはWebアプリケーションではなく,Processingを使用して作成されたJavaアプレットによって実装され,サーバを介することなく,直接ロボットからUDP通信を用いてオブジェクトの認識結果を受信する.

 

操作画面                                        モニタ

13. オブジェクト認識モニタ

ロボットからのUDP通信はブロードキャストを用いて行われる.もちろん,普段はブロードキャストを行っていないため,オブジェクトの認識結果を受信するためにはブロードキャストを開始する必要がある.そのためのボタンがStart StatusServerである.

ブロードキャストされた情報を可視化するためのツールはProcessingで作成され,別途,JollyPochieSDKの一部として配布されているが,サーバとクライアントが同一マシンであるときは,Monitorボタンを押すことでオブジェクト認識モニタを起動することができる.

14. オブジェクト認識結果のネットワーク上での流れ

モニタは画面上がロボットのカメラ方向を表し,白い同心円によってロボットからの距離を1 m単位で示している.このツールを用いることで,各オブジェクトが正しい方向と正しい距離に見えているかを容易に調べることができる.

3.8. 自己位置同定モニタ

自己位置同定モニタは,ロボットが認識した各種ランドマークとなっているオブジェクトの情報を元に自己位置の同定を行い,その同定結果とロボット内部での同定結果を比較表示するプロウグラムである.

ロボットに対する操作やプログラムの起動はオブジェクト認識モニタと同様である(図15左).

 

操作画面              モニタ

15. 自己位置同定モニタ

ロボット内部で計算された内部状態をロボットから受信できるとなお正確であるが,我々のチームでは自己位置同定に,何百ものパーティクルを使用するパーティクルフィルタを用いているため,それらパーティクルの情報を高速に送受信することは難しい.そこで,クライアントプログラム内でロボットと同じアルゴリズムを用いて自己位置同定を行い,その結果とロボットによる同定結果を比較表示している.

ただし,アルゴリズムは確率的アルゴリズムであるためクライアント内の計算結果とロボット内の計算結果は異なる.結果がどの程度異なるかは逆に同定された自己位置どの程度安定しているかを示し,大きく異なるときにはその原因を調査することになる.

多くの場合,原因は,オブジェクト認識におけるオブジェクトまでの距離推定の間違いであったり,オブジェクトの誤認識である.そこで,ここで自己位置の同定が安定しない場合,前述のオブジェクト認識モニタに戻って,各オブジェクトの認識結果を確認を行ったり,後述するカメラ画像を確認して,色認識が正しく行われているかを確認することになる.

3.9. カメラ画像モニタ

カメラ画像モニタを用いるとAIBOのカメラによって捉えられている画像ならびに,それに対して色認識をおこなった結果を見ることができる(図16).カメラ画像は2秒ごとにリアルタイムに更新される.

 

カメラ画像               色認識結果

16. カメラ画像モニタ

色認識には,その時の光量などに合わせて適切な色認識テーブルを用いる必要があり,カメラ画像モニタを用いる事で,用いられている色認識テーブルが適切なものであるかどうかを確認することができる.

このとき,カメラ画像の更新はJavaScriptにより2秒ごとにWebブラウザからWebサーバへと画像を要求することによって行われている.その画像の要求に対して,WebサーバはAIBOと通信しカメラ画像を取得する.ここで,AIBOから送られてくる画像データはWebブラウザによって表示できる形式にはなっていないため,Webサーバ内のプログラムよって一般的な画像形式の一つであるPNG形式へと変換されWebブラウザへと送信される.したがって,WebブラウザはあくまでWebサーバとのみ通信し,ロボットとは直接は通信を行っていない.

17. カメラ画像のネットワーク上の流れ

Java AppletFlashなどを埋め込み画像を表示するためには,それらが自分が提供されているWebサーバとだけしか通信できないというセキュリティ上の制約があるが,この方式であれば,その制約も問題とならないため,Java AppletFlashを用いたより高度なクライアントを作成することも可能である.

3.10. ロボットプログラム

Jolly Pochieのサッカーロボットの構成は図18のようになっている.AIBOOSであるAperiosでは,並列実行されるオブジェクト間の通信によって処理が進む.特に,OPEN-RではOVirtualRobotというオブジェクトが定義されており,このオブジェクトと通信することでAIBOの各種機能を使用することができる.

18. フレームワーク.

Jolly Pochieでは,OVirtualRobotとの通信を代表するオブジェクトして,JPObjectというオブジェクトを定義している.個々の機能要素はJPObjectにプラグインされるモジュールとして実装される.JPObjectOVirtualRobotとの通信の仲立ちをし,動作,画像,センサー,ネットワークなどのイベントが生じたときには,それぞれに対応したモジュールを呼び出すことで処理される.

このような構成にすることで,各モジュール開発の独立性が高められ,また,OPEN-Rの機能を隠蔽し開発を容易なものにしている.その結果,Jolly Pochieでは,これまでに200以上ものモジュールが作成された.それらモジュールの構成によって何種類もの異なるロボットを得ることができ,サッカーロボット以外にも,写真撮影やレース競技用などの特殊な用途のロボットも用意されている.

本プロジェクトでは,このJolly Pochieのフレームワークを用い,主に通信に関わるモジュールの開発を行った.開発されたモジュールには,以下のものがある.

13.  RCMotion.

14.  モーションデータを受信し,再生するモジュール.

15.  RCJointAngle.

16.  現在の関節角度を送信するモジュール.

17.  RCGaitsMixer.

18.  歩行データを受信し,再生するモジュール.

19.  RCLuaScript.

20.  Luaスクリプトを受信し,実行するモジュール.このモジュールはLua編集画面のみな   らず,多くの画面から使用されている(モーションの保存,StatusServerの起動など).

21.  RCCapture.

22.  画像の送信を行うモジュール.

23.  StatusServer.

24.     オブジェクト認識結果や自己位置の推定結果などの内部情報をUDPを通してブロードキャストする.

 


12.プロジェクト評価


市販ロボットの多くには開発キットとしてモーション作成や時にはプログラムを作成できる専用ソフトウェアが付属している.しかし,それらは専用ソフトウェアでは開発プラットフォームとなるOSを限定する上に,ソフトウェアをインストールし,その操作方法を覚える必要がある.

それに対し,本プロジェクトではWebアプリケーションを用いたロボットプログラムの開発環境の構築を行った.その結果,ロボット本体とWWWブラウザが使えるPCがあればロボットソフトウェアの開発が可能となった.

これまで,ロボットを活用した初等教育などを行う際には,専用のソフトウェアをインストールしたPCを何台も用意する必要があったが,本プロジェクトの成果によってサーバマシンを1台用意し,その他には通常のPCを必要な台数だけ準備するだけとなった.

また,開発したWebアプリケーションはDHTML, AJAXなどの最新のWebテクノロジを使用し,高いインタラクティブ性をもったインタフェースを有し,直感的な操作が可能となっている.

こうした最新のWebテクノロジを利用したインタラクティブ性の高いWebアプリケーションは,ときにWeb2.0として一括りにされることもあるが,本プロジェクトの開発成果は,キーボードやマウスによって操作し,その結果がコンピュータのディスプレイに映し出される他のWeb2.0アプリケーションと異なり,ロボットを情報の入出力デバイスとして持つところが決定的に異なる.ロボットのポーズやロボットが見ているものを入力とし,ロボットに行動の指示を与えるという実世界とのインタラクションは他のWebアプリケーションにはない特徴であり,今後のコンピューティング環境の一つの在り方を示している.

 


13.今後の課題


本開発ではロボカップ4足ロボットリーグをツール使用の実践の場として活用するため,ソニー製エンターテイメントロボットAIBOを用い,ツール群も主にサッカーロボット開発に必要なツールに絞って開発を行った.

しかし,ソニーのAIBOの生産中止の決定もあり,現在,ロボカップ4足ロボットリーグではAIBO以外のロボットの使用が検討されている.本開発で作成したWebアプリケーションはシミュレータに対しても同様に使用ができることを示した通り,AIBO以外のロボットに対して応用することは容易であると考えられる.また,現在のAIBOのものよりも強力なコンピュータを搭載したロボットを用いる場合,Webサーバをロボット自身に搭載することも可能となり,より使いやすいものになるであろう.

 



  ページトップへ   

 

 

 


  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004