追加したユーザーは Kazuchika Sekiya です。最後に編集したユーザーは Kazuchika Sekiyaで、その日時は 2009-05-27 09:14:45 です。
Nabaztag4G - Groovy library for Nabaztag API
概要
Nabaztag4G は、フランス生まれのうさぎ型ロボットガジェット
Nabaztag の
API を、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)
- シリアル番号と、Violetのサイトから取得したトークン(API利用キー)を指定して、制御対象の Nabaztag に対応する Nabaztag オブジェクトを生成します。すべての制御メソッドはこのオブジェクトに対して呼び出します。
- 制御メソッド wake を使って Nabaztag を起こす例です。
- 制御メソッド speak を使って英語をしゃべらせる例です。英語の場合、声の指定は省略可能です。
- 日本語をしゃべらせる場合は、'JP-Tamura' を明示的に指定する必要があります。
- 汎用制御メソッドを使って耳の位置を動かす例です。
- 制御メソッド sleep を使って Nabaztag を眠らせる例です。
- プロパティ表記を使って getName メソッドを呼び出し、名前を取得する例です。
制御メソッド
汎用制御メソッド。
APIドキュメントに示されたパラメータ(posright, tts, action等)を Groovy の名前付き変数の形式で指定します。ストリーム再生を除くすべての制御メソッドは、このメソッドの便利なショートカットに過ぎません。
ストリーム再生メソッド。url で指定された mp3 等のファイルを再生します。
メッセージ(msg)を指定された声(voice)で読み上げます。
フレンドのリストを取得します。action=2 に相当します。
inboxにあるメッセージのリストを取得します。action=3 に相当します。
[from:"toto", title:"my message", date:"today 11:59", url:"broad/001/948.mp3"] のようなマップを要素とするリストを返します。
設定されたタイムゾーンを取得します。action=4 に相当します。
シグネーチャを取得します。action=5 に相当します。(現時点では実現されていないようで、常に空文字列が返されます)
ブラックリストを取得します。action=6 に相当します。
Nabaztag が睡眠中なら true、置きていれば false を返します。action=7 に相当します。
Nabaztag のバージョンを返します。action=8 に相当します。
言語毎に利用可能な声の一覧を返します。action=9 に相当します。[言語A:言語Aで利用可能な声のリスト, 言語B:言語Bで利用可能な声のリスト] のような形式のマップを返します。
Nabaztag の名前を返します。action=10 に相当します。
Nabaztag を眠らせます。action=13 に相当します。
Nabaztag を起こします。action=14 に相当します。
耳の現在の位置を [右耳の位置, 左耳の位置] のようなリストで返します。
例外処理について
上記の制御メソッド呼び出しにおいて、サーバからのレスポンス中の 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
}
}
- Choreography オブジェクトを生成します。コンストラクタの引数はテンポ (Hz) です。commands メソッドを呼び出し、具体的な振り付けを記述したクロージャを渡します。
- time(action time) ブロック内に、同じタイミングで実行するコマンド群を記述します。この例では time ブロックは一つしかありませんが、通常は複数になるでしょう。
- 具体的な振り付けコマンドです。詳細は以下で説明します。
このようにして作った 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 の意味が不明確。移動量ではなく、目的位置と思われるが思い通りに動かない場合もある。