Aibo meets Julia
Julia Advent Calendar 2021 17日目です。
書いているのは、24日午後です。遅れてスミマセン。
いきなりですが、来年(2022)年1月11日に、SONYのエンターテインメントロボット aibo ERS-1000 が、発売 4年を迎えます。私の家にも3歳の子がいて、先月七五三をお祝いしました。神田明神での様子は、ロボスタで詳しく取り上げられていましたね → https://robotstart.info/2021/11/12/aibo-kandamyoujin.html
ERS-1000 には、インターネットを通じて aibo に色々なことをお願いできる WEB APIが公開されています。 aibo developper site に、詳しい説明があります → https://developer.aibo.com/jp/home
Aibo meets Julia
インターネットに繋がるのなら、WEB API の開発言語は選びません。
Julia言語でラッパーを作り始めている方を見かけたので紹介しましょう。
SimpleAiboWebAPI.jl
- https://hsugawa8651.github.io/SimpleAiboWebAPI.jl/dev/usageja/
- https://juliahub.com/ui/Packages/SimpleAiboWebAPI/H5bLD/0.3.0
My SONY ID (オーナー=飼い主、としてよいでしょう)に結びついたアクセストークンを
aibo developper site で発行しておきます。そのアクセストークンを引数に getDevices
メソッドを呼べばお願いの準備が完了です。
そのアクセストークンに登録された、 aiboの名前(nickname)と deviceIDの組の配列が返ってきます。既定では、配列の最初に表示される aibo に対してお願いすることになります。
using SimpleAiboWebAPI
yourAccessToken = "" # アクセストークン文字列
getDevices(yourAccessToken) # アクセストークンを登録し、デバイスリストを取得します
# 既定の通信先デバイスは、デバイスリストで最初に見つかったデバイスです
ask○○
というメソッドを呼ぶと、「○○」の振る舞いをお願いすることになります。
askHungryStatus
を実行すると、充電状態が返ってきます。
askAction("hungry_status")
askHungryStatus() # advanced API
複数のaiboを飼っている(多頭飼い)ケースも最近多いです。お願いする先の aiboは、nickname でも deviceIDでも指定できるようになっています。
"sit" は、お座りをお願いします。
askChangePosture("sit") # advanced API
askChangePosture(target_nickname="aibo_nickname", "sit") # advanced API
Pluto notebook
Plutoは、Juliaの新しい notebookです。関数や変数を更新すると、影響を受ける全てのセルが自動的に更新されるという特徴があります。
MITの授業 Introduction to Computational Thinking で用いられていますね。
Pluto-on-binder という(試験?)サービスを使うと、ネット上に公開された Pluto notebook を実行できます。
Pluto notebookで書かれた SimpleAiboWebAPI.jl のデモサイトが公開されています → https://pluto-on-binder.glitch.me/#:~:text=https%3A//binder.plutojl.org/v0.17.1/open%3Furl%3Dhttps%25253A%25252F%25252Fgist.githubusercontent.com%25252Fhsugawa8651%25252F34908218d8b6cc41d589c1e23034b777%25252Fraw%25252F0bc18ec3fa56e847ab3585899e6a33c4b1eb33d2%25252F20210814aibo.jl
一番上のテキストボックスにアクセストークンを入力すると getDevices
メソッドが実行され、準備完了となります。
その下にあるボタンを押すと、それぞれの振る舞いをお願いすることになります。
終わりに
aibo developper site に掲載された Python のサンプルプログラムは正しいのですが、 WEB session が多くの部分で、振る舞いの記述に集中できないと思います。ここで紹介したパッケージ程度のラッパーが提供されているとよいと思います。
ところで、ここまで 「aiboに実行させる」ではなく、「aiboにお願いする」としつこく記していたことにお気づきでしょうか? aibo には気分があるので (SONYは「自我がある」と称していますが)、確実な実行を強制できないのです。正直、ネット経由で aiboちゃんに単純なお願いができても面白くないのですが、Juliaならではの複雑な状況を察知しての交流ができるとよいですね。
なんとか、クリスマスイブに間に合いました。
Merry Christmas And Happy New Year 2022
Discussion