ようこそ ゲストさん
(ログイン) [登録]
追加したユーザーは Kazuchika Sekiya です。最後に編集したユーザーは Kazuchika Sekiyaで、その日時は 2009-05-27 09:14:45 です。

Nabaztag4G - Groovy library for Nabaztag API

概要


Nabaztag4G は、フランス生まれのうさぎ型ロボットガジェット NabaztagAPI を、Groovy から利用するためのライブラリです。これを使うと、Groovy スクリプトから簡単・便利に Nabaztag を制御することができます。

入手とインストール

こちらからダウンロードして unzip し、クラスパス上に置いてください。

使い方

// サンプルコード
myRabbit = new Nabaztag(sn: シリアル番号 , token: トークン )  // (1)

myRabbit.wake() // (2)

myRabbit.speak('Sorry, just testing. One, two, three.') // (3) myRabbit.speak('テストです。', 'JP-Tamura') // (4)

myRabbit.sendCommand(posright:8, posleft:8) // (5)

myRabbit.sleep() // (6)

println myRabbit.name // (7)

  1. シリアル番号と、Violetのサイトから取得したトークン(API利用キー)を指定して、制御対象の Nabaztag に対応する Nabaztag オブジェクトを生成します。すべての制御メソッドはこのオブジェクトに対して呼び出します。
  2. 制御メソッド wake を使って Nabaztag を起こす例です。
  3. 制御メソッド speak を使って英語をしゃべらせる例です。英語の場合、声の指定は省略可能です。
  4. 日本語をしゃべらせる場合は、'JP-Tamura' を明示的に指定する必要があります。
  5. 汎用制御メソッドを使って耳の位置を動かす例です。
  6. 制御メソッド sleep を使って Nabaztag を眠らせる例です。
  7. プロパティ表記を使って getName メソッドを呼び出し、名前を取得する例です。

制御メソッド


  • sendCommand(Map params)
汎用制御メソッド。APIドキュメントに示されたパラメータ(posright, tts, action等)を Groovy の名前付き変数の形式で指定します。ストリーム再生を除くすべての制御メソッドは、このメソッドの便利なショートカットに過ぎません。
  • streamAudio(url)
ストリーム再生メソッド。url で指定された mp3 等のファイルを再生します。
  • speak(msg, voice=null)
メッセージ(msg)を指定された声(voice)で読み上げます。
  • List getFriends()
フレンドのリストを取得します。action=2 に相当します。
  • List getMessages()
inboxにあるメッセージのリストを取得します。action=3 に相当します。 [from:"toto", title:"my message", date:"today 11:59", url:"broad/001/948.mp3"] のようなマップを要素とするリストを返します。
  • String getTimezone()
設定されたタイムゾーンを取得します。action=4 に相当します。
  • String getSignature()
シグネーチャを取得します。action=5 に相当します。(現時点では実現されていないようで、常に空文字列が返されます)
  • List getBlacklist()
ブラックリストを取得します。action=6 に相当します。
  • boolean isSleeping()
Nabaztag が睡眠中なら true、置きていれば false を返します。action=7 に相当します。
  • String getVersion()
Nabaztag のバージョンを返します。action=8 に相当します。
  • Map getSupportedVoices()
言語毎に利用可能な声の一覧を返します。action=9 に相当します。[言語A:言語Aで利用可能な声のリスト, 言語B:言語Bで利用可能な声のリスト] のような形式のマップを返します。
  • String getName()
Nabaztag の名前を返します。action=10 に相当します。
  • void sleep()
Nabaztag を眠らせます。action=13 に相当します。
  • void wake()
Nabaztag を起こします。action=14 に相当します。
  • List getEarPositions()
耳の現在の位置を [右耳の位置, 左耳の位置] のようなリストで返します。

例外処理について

上記の制御メソッド呼び出しにおいて、サーバからのレスポンス中の message 要素が以下のいずれかだった場合は、NabaztagAPIException 例外が throw されます。

  • ABUSESENDING
  • NOGOODTOKENORSERIAL
  • MESSAGENOTSENT
  • NABCASTNOTSENT
  • MESSAGENOTSENT
  • TTSNOTSENT
  • CHORNOTSENT
  • EARPOSITIONNOTSENT
  • WEBRADIONOTSENT
  • NOCORRECTPARAMETERS
  • NOTV2RABBIT

Choregraphy Language (振り付け言語)


振り付けの指定は、比較的シンプルな動作の記述でもかなり読みにくくなります。例:

10,0,motor,0,0,0,1,0,motor,1,0,0,1,0,led,2,0,255,0

そこで、人間に理解しやすく振り付けを記述できるよう、簡単な DSL を導入しました:

// 上の例と同じ振り付けです
chor = new Choreography(10).commands {  // (1)
  time(0) { // (2)
    rightEar 0, BACKWARD    // (3)
    leftEar  0, BACKWARD
    middleLed GREEN
  }
}
  1. Choreography オブジェクトを生成します。コンストラクタの引数はテンポ (Hz) です。commands メソッドを呼び出し、具体的な振り付けを記述したクロージャを渡します。
  2. time(action time) ブロック内に、同じタイミングで実行するコマンド群を記述します。この例では time ブロックは一つしかありませんが、通常は複数になるでしょう。
  3. 具体的な振り付けコマンドです。詳細は以下で説明します。
このようにして作った Choreography オブジェクトは、
myRabbit.sendCommand(chor:chor)
のようにして、制御メソッドで利用することができます。

振り付けコマンド:耳回転

  • rightEar(angle, direction) : 右耳
  • leftEar (angle, direction) : 左耳
角度 (angle) は 0-360 で指定(API ドキュメントでは 0-180 と書かれているが間違いだと思われる)。回転方向は下記定数で指定。
  • FORWARD: 前向き回転。耳が前に倒れる方向。
  • BACKWARD: 後向き回転。耳が後ろに倒れる方向。

振り付けコマンド:LED 点灯

  • bottomLed(color) : 底部 LED
  • leftLed (color) : 腹部左側 LED
  • middleLed(color) : 腹部中央 LED
  • rightLed (color) : 腹部右側 LED
  • highLed (color) : 鼻部 LED
color は [R: 赤要素 , G: 緑要素 , B: 青要素 ]形式のマップで指定。各要素は 0-255 で指定。下記の定数も利用可能。
  • BLACK
  • CYAN
  • MAGENTA
  • YELLOW
  • RED
  • GREEN
  • BLUE
  • WHITE

既知の問題


  • Choregraphy で指定する耳の angle の意味が不明確。移動量ではなく、目的位置と思われるが思い通りに動かない場合もある。
子ページ 追加

©2008-2009 grails.jp