Cozmoをゲットした。
Cozmoは「やんちゃでかしこいあいぼう」という成長型のペットみたいなロボット。
http://www.takaratomy.co.jp/products/cozmo/
AndroidやiPhoneなど(※)のスマートフォンと連携させて動かす。
専用アプリがあり、そのアプリが起動していないとCozmoは動かない。
※一応Fire OSにも対応しているみたい
専用アプリ上でブロックベースでプログラミングして、Cozmoを操作することができる。
また、CozmoSDKを使うと、Pythonでプログラミングして、Cozmoを操作することができる。
CozmoSDKならIFTTT連携もできるみたい。
今回は、CozmoSDKを使ってCozmoを操作する方法を説明する。
スマートフォンはAndroidを使っている。
環境
環境はいつも通り。
Win10を使っているが、Bash on Ubuntu on Windowsを使っている。
対象 | OS、バージョン等 |
---|---|
PC | Ubuntu 16.04.3 LTS(Win10のBoW使用) |
Android | Nexus6P(Android8) |
概要
基本的には以下の通り。
http://cozmosdk.anki.com/docs/index.html
CozmoSDKはスマートフォン経由で実行される。
こんなイメージ。
[PC] <-> [Android] <-> [Cozmo]
PCとAndroid端末はUSBケーブルで接続し、adb経由で通信する。
Android端末とCozmoはCozmoアプリのCozmoSDKを有効にして通信する。
環境構築
Android端末にはCozmoアプリ、PCにはAndroidSDKとPython 3.5.1以上が必要になる。
Android端末(Cozmoアプリ)
Android端末にCozmoアプリを入れておく。
Cozmoのセットアップが終わっていないならセットアップしておく。
ついでにCozmoと遊んでおくといいと思う。
AndroidSDK(adb)
AndroidSDKでコマンドラインツールのみの場合、sdkmanager(sdk-tools-linux/tools/bin以下)でplatform-toolsを取得しておく。
sdkmanagerのパスを通した状態で、下記コマンドを実行する。
sdkmanager "platform-tools" "platforms;android-26"
adb(sdk-tools-linux/platform-tools以下)のパスを通しておく。
Android端末をPCに接続し、下記コマンドを実行する。
※Android端末では予め開発者モードを有効にし、adbデバッグも有効にしておくこと。
adb devices
以下のように「device」が表示されていればOK。
List of devices attached
XXXXXXXXXX device
Python3
下記コマンドでPython3をインストールする。
sudo apt-get update
sudo apt-get install python3
pip3をインストールする。
sudo apt install python3-pip
Tkinter(PythonのGUIツールキット)もいるらしいのでインストールする。
sudo apt-get install python3-pil.imagetk
CozmoSDK
下記コマンドでPCにCozmoSDKをインストールする。
[camera]はオプションみたい。
pip3 install --user 'cozmo[camera]'
CozmoSDKをアップグレードする必要がある場合は、下記コマンドを実行すればいいみたい。
pip3 install --user --upgrade cozmo
チュートリアルの実行
CozmoSDK Examplesを取得する。
下記からLinux版を取得できる。
http://cozmosdk.anki.com/1.0.1/cozmo_sdk_examples_1.0.1.tar.gz
格納したディレクトリに移動し、解凍する。
tar -zxvf cozmo_sdk_examples_1.0.1.tar.gz
Cozmoアプリを起動し、Cozmoに接続する。
アプリの設定(上部右側のアイコン)の中にある「SDKを有効にする」ボタンを押下する。
PC側で下記コマンドを実行する。
cd cozmo_sdk_examples_1.0.1/tutorials/01_basics
./01_hello_world.py
Cozmoが「hello world」と言ってくれる。
Cozmoの発話処理
01_hello_world.pyの中身はこんな感じになっている。
import cozmo
def cozmo_program(robot: cozmo.robot.Robot):
robot.say_text("Hello World").wait_for_completed()
cozmo.run_program(cozmo_program)
cozmo.robot.Robotクラスのsay_textメソッドで発話処理をする。
wait_for_completedメソッドでは発話処理の完了待ちをしている。
デフォルトで最大5秒待つようになっている。それ以上かかる場合は引数に秒単位で指定する。
cozmo.run_programメソッドで実行する。
発話内容は日本語でも大丈夫だった。
以下のようにsay_textメソッドに「オヤスミ」を渡すと発話してくれた。
def cozmo_program(robot: cozmo.robot.Robot):
robot.say_text("オヤスミ").wait_for_completed()
カタカナでなくても「おやすみ」「お休み」でも発話していた。
Twitterとかメールとか、日本語の文章を読み上げさせることができるみたい。
IFTTT連携のサンプル(if_this_then_thatディレクトリ以下)もあるので、色々連携させるのも面白そう。