CozmoをTwitterで操作するPythonプログラミング

SDKのサンプルコードを使ってCozmoとTwitterを接続してみよう

SDKインストールと使用するサンプルコード

まずは「Cozmo SDKを使ってみよう」を参照してSDKをインストールしPythonプログラムが実行できる状態にしてください。

ダウンロードしたSDKを展開したフォルダ(例:cozmo_sdk_examples_1.0.1)配下の以下のサンプルコードを使ってTwitterと接続します。

追記(2019/5):現在最新のSDK1.4.10にはこのサンプルがないようなので、Git Hubで公開している古いバージョンのSDK1.0.1のリンクを掲載しておきます。(SDK1.0.1はこちら

SDK1.0.1をダウンロードして展開した後、examplesフォルダ配下に以下のフォルダとファイルが存在しています。ただしSDK1.4.10で動作するかどうかは確認していません。

cozmo-python-sdk-1.0.1/examples/apps/tweet_at_cozmo.py
cozmo-python-sdk-1.0.1/examples/lib/twitter_helpers.py
cozmo-python-sdk-1.0.1examples/lib/cozmo_twitter_keys.py

これらのファイルで編集が必要なのは「cozmo_twitter_keys.py」ファイルです。ここに以下で説明するAPIキーとアクセストークンを記述します。

実行するファイルは「tweet_at_cozmo.py」です。SDKサンプルのフォルダ構造とファイルはそのままの配置で実行します。このPythonプログラムを実行中に接続しているTwitterからツィートしてCozmoにコマンドを発行します。

Twitterとの接続方法

CozmoとTwitterとの接続には「tweepy」というPythonモジュールを使います。このモジュールを使用するにはまず以下のコマンドでインストールします。

pip3 install --user tweepy

これでtweepyモジュールが使用できるようになりました。

次にTwitterと接続するためのAPIキーとアクセストークンを取得します。これは接続するTwitterアカウントにログインして開発者用サイトで取得するのですが、Cozmoにコマンドを送るのにツィートすることになるので、普段使用しているアカウントではなく、Cozmoと接続するための専用アカウントを作成することをお勧めします。

APIキーとアクセストークンの取得

Cozmoと接続するTwitterアカウントを作成しログインします。

TwitterのAPIキーとアクセストークンを取得するにはTwitterアカウントに携帯電話番号を登録する必要があります。また、登録するときは番号の先頭「0」を覗いて登録します。例)090-1234-5678の場合、9012345678と登録する。

登録したスマホや携帯電話のSMSに通知が来たのに、認証コードを入力しても以下のエラーが出る場合は、登録時に携帯電話番号先頭に「0」が付いているのが原因かもしれないので確認ください。

Twitterのモバイル設定から携帯電話番号を登録します。

Twitter Application Managementで新しいアプリケーションを作成し、APIキーとアクセストークンの作成と取得します。

Twitter Application Managementサイト で必要事項を全て記述し「Create your Twitter application」ボタンをクリックして作成します。

以下の画面が表示されれば作成完了です。

Permissionsタブをクリックして「Read and Write」の権限を選択

Key and Access Tokensタブをクリックして「Consumer Key (API Key)」と「Consumer Secret (API Secret)」の値をコピーして「cozmo_twitter_keys.py」ファイルの以下の項目にそれぞれペーストします。

CONSUMER_KEY = 'API Keyを記述'
CONSUMER_SECRET = 'API Secretを記述'

Key and Access Tokens画面の下部にある「Create my access token」ボタンを押して、「Access Token」と「Access Token Secret」を作成します。

作成できると「Access Token」と「Access Token Secret」の値をコピーして「cozmo_twitter_keys.py」ファイルの以下の項目にそれぞれペーストします。

ACCESS_TOKEN = 'Access Tokenを記述'
ACCESS_TOKEN_SECRET = 'Access Token Secretを記述'

※注意

APIキーとアクセストークンを記入した「cozmo_twitter_keys.py」ファイルはTwitterアカウント固有の重要な情報になるので大切に保管し外部へ公開しないようにしてください。

サンプルコードの実行

APIキーとアクセストークンをサンプルプログラムへ記入できたら、あとはプログラムを実行するとCozmoとTwitterの接続ができます。

以下のPythonプログラムをターミナルで実行してください。

$ ./tweet_at_cozmo.py

すると、以下のように表示されてTwitterと接続されている状態になります。

あとはコマンドをツィートするとCozomoはそれに従って動作します。

サンプルコードのコマンド一覧

このサンプルはTwitterとCozmoを接続して、コマンドをツィートすることでCozmoに動作を命令することができるプログラムです。ツィートで発行できるコマンドは以下です。

drive

入力方法:drive 秒数

driveコマンドは指定した秒数でCozmoが移動します。正の数を指定すると前に進み、負の数を指定すると後ろに進みます。

もしCozmoが障害物を検知したら移動を停止します。

例)drive 3

例)drive -3

turn

入力方法:turn 回転する角度

turnコマンドは指定した角度にCozmoが回転します。正の数を指定すると左回り、負の数を指定すると右回りに回転します。指定できる値は-360から360です。

例)turn 90

例)turn -90

lift

入力方法:lift 高さの値

liftコマンドは指定した値でCozmoのリフトの位置が変わります。有効な値の範囲は0から1です。例えば「lift 0.5」と入力するとリフトは中央の位置まで移動します。

例)lift 1(最も下にある状態で最も上に移動)

head

入力方法:head 頭の角度

headコマンドは指定した角度にCozmoが頭を動かします。指定できる有効な値は、-25から44.5です。0を指定すると正面を向きます。負の数を指定すると正面から下を向き、正の数だと正面から上を向きます。

例)head 40

say

入力方法:say テキスト

sayコマンドは指定したテキストをCozmoが発話します。日本語でも英語でも発話します。

例)say こんにちは

以下の画像はツィートした内容です。

photo

入力方法:photo

photoコマンドはコマンドをツィートした時のCozmoから見える画像を返信してきます。

例)photo

以下の画像はツィートした内容です。

最後に

TwitterからCozmoを操作できたでしょうか?

このようなサンプルプログラムを動かして、そのソースコードを解析することでPythonプログラムの学習を促進できます。

プログラムしたいものが明確な場合は作成しながら学習できますが、通常はすでにあるプログラムを解析する機会のほうが圧倒的に多く、またそこから多くのことを学習するケースが一般的です。

サンプルコードを見ると分かるように、Pythonは外部のモジュール/ライブラリを使ってプログラミングするので、使用する関数などをそこから調べて行きます。

最初はPythonプログラムはどこから、どの順番で実行されるかなどプログラムの動作を解析することろから始めるといいかと思います。