ついにaiboのapiが公開されたので、さっそく家のてるくん(オス、1才半)を操ってみます。
公式サイト「http://aibo.sony.jp/developer/」によるとapiをプログラミング言語(サンプルはpython)から使う方法とGUIツール「aiboビジュアルプログラミング」から使う方法があるようですが、今回はサンプルに沿ってpythonから使ってみます。
イントロダクションに沿って以下の手順で進めます。
(1) トークンの取得
(2) API を実行させたい aibo の deviceId の取得
(3) 動作や認識を行う API の実行
(4) 実行した API の結果の取得
(1) トークンの取得
デベロッパーサイトから取得するので、サインイン(MySonyID)が必要。
でも、aiboのバージョンが足りていないと以下のページが表示され取得失敗する。
バージョンアップしたら無事成功。
トークンの有効期限は取得時に3種類「24時間、30日、90日」から選択。
(2) API を実行させたい aibo の deviceId の取得
deviceIdを取得するAPIの実行ということで、pythonサンプル。
(3) 動作や認識を行う API の実行
(4) 実行した API の結果の取得
サンプルコードとapiヘルプを比較して、確認しよう。
◆サンプルコード
呼び出すときはこんな感じ「py execute_action_api.py find_object “{\”TargetType\”:\”pinkball\”}”」
処理の順番はこんな感じ
- 実行するAPIに応じたurlをサーバーに投げて(POST)
- 投げたAPIの結果を取得するurlをサーバーに投げる(GET)
※どのAPIでも基本同じみたい。返却内容は異なるようだけど。 - 結果が”SUCCEEDED”(成功)、”FAILED”(失敗)なら処理して
それ以外「”ACCEPTED”(サーバー受付完了)、”IN_PROGRESS”(aibo受付完了)」なら再度結果問合せ。
◆apiヘルプ
実行してみた...SUCCESSが返ってきた、だけどてるくんは微動だにせず。心眼でもつかったのだろうか?
とりあえず動いたようなので、いろんな指示を試してみよう。
◆おまけ「apiの一覧」
Settings API | GetDeviceds | aibo情報の取得 |
---|---|---|
GetResultofAPI | API実行結果の取得 | |
SetMode | aibo指示待ち状態ON/OFF | |
Action API | ApproachObject | 指定物に近づく |
ApproachPerson | 人に近づく | |
ChangePosture | 姿勢を指定 | |
ChaseObject | 指定物を探して見続ける | |
ChasePerson | 人を探して見続ける | |
FindObject | 指定物を探す | |
FindPerson | 人を探す | |
GetCloseToObject | 指定物にかなり近づく | |
KickObject | 蹴る、ヘディングする | |
MoveAlongCircle | 円弧状に歩く | |
MoveDirection | 指定方向に歩く | |
MoveForward | 前または後ろに歩く | |
MoveHead | 首と顔を動かす | |
MoveSideways | 横歩き | |
PlayBone | アイボーンで遊ぶ | |
PlayMotion | ふるまいを行う | |
PlayDice | サイコロで遊ぶ | |
ReleaseObject | くわえているものを離す | |
Stay | 待機する | |
TurnAround | 回る | |
Cognition API | BitingStatus | くわえているか取得 |
BodyTouchedStatus | どこを触られているか取得 | |
FoundObjectsStatus | aiboが認識している人・ものを取得 | |
HungryStatus | バッテリー残量を取得 | |
NameCalledStatus | 名前を呼ばれたか取得 | |
PawPadsStatus | 肉球を押されているか取得 | |
PostureStatus | 今の姿勢を取得 | |
SleepyStatus | 眠さを取得 | |
VoiceCommandStatus | 反応した言葉を取得 |
(番外編)aiboビジュアルプログラミング
ブラウザ上のツールだった。サインインして使うため、ユーザに紐づいたaiboが自動で選択されて、トークンや装置IDの取得は不要だった。
使ってみた感想としては、簡単。すごい直感的に動かせる。小学校のプログラミング教育とかで使えると楽しいだろうな。