はじめに
この記事は次のスマートファニチャープラットフォーム「カチャカ」APIマニュアルの「Playground」を自分のPC(Ubuntu22.04)で実行するために必要な作業を補足して、簡単な自作サンプルプログラムをsshでカチャカにログインして動かすまでを説明した記事です。この記事のUbuntu22.04版です。
Playgroundとは?
Playgroundはコンテキストによって幾つかの意味があります。
1. 子供たちが遊ぶための遊具が設置されている「遊び場」
2. エンジニアが新しいプログラミング言語やフレームワーク、ライブラリ等を試すための「実験的な環境」
3. 創造的な活動やアイディアを「探求する場」
カチャカAPIマニュアルによるとPlaygroundは「カチャカ本体内で動くコンテナ環境。ユーザが自由にログインして自作のソフトウェアを実行できる。」と定義されています。カチャカAPI公開により外部開発者が自由で安全にカチャカをプログラミングできるようになったので、外部開発者の遊び場といったところでしょうか?遊び心があっていいですね。
Playgroundのリソース制限
次のようにリソースが限られているので、ロボカップにカチャカ本体だけで参加するのは難しいです。特にメモリが少ないですね。ノートPCやラズパイをサーバにして、カチャカをクライアントとして使うのが良さそうです。
- ストレージ:3GB
- メモリー:512MB
Playgroundへのログイン
- OpenSSHのインストール
- sshでログインするためにOpenSSHのサーバとクライアントをインストールする。端末を起動して次のコマンドを実行する。
sudo apt update
sudo apt install openssh-server
sudo apt install openssh-client
- sshでログインするためにOpenSSHのサーバとクライアントをインストールする。端末を起動して次のコマンドを実行する。
- 公開鍵の作成
- Playgroundへsshでログインするためにssh-keygenコマンドで公開鍵と秘密鍵を生成する。
- 端末を起動して次のコマンドを実行する。
ssh-keygen -t ed25519
- キーを保存するパスを聞かれるがデフォルトで問題なければEnterキーを押す。
- パスフレーズの使用するよう聞かれるので必要に応じて入力する。この例では簡単のために何も入力せずにEnterキーを押している(入力推奨)。
- 実際にキーが作成されたか調べてみましょう!次のディレクトリを移動するcdコマンド、ファイルを表示するlsコマンドを実行する。
cd .ssh
ls
- 下図にあるようにid_ed255519が秘密鍵、id_ed25519.pubが公開鍵。
- 公開鍵の設定
- Playgroundへsshでログインするために上の作業で作成した公開鍵を設定する。この作業は一度だけで良い。
- ブラウザを起動して、アドレスバーに以下のURLを入力してJupyterLabに入る。
- http://<カチャカのIPアドレス>:26501/
- utils/set_authorized_keys.ipynbによる設定方法
- カチャカにsshでログイン
- 端末で次のコマンドを実行する。この記事の例では、<登録した公開鍵に対する秘密鍵>は
/home/ユーザ名/.ssh/id_ed25119
になるが、長いのでcdコマンドでディレクトリを移動する。この例では、<登録した公開鍵に対する秘密鍵>はid_ed25119
になる。cd ~/.ssh
ssh -p 26500 -i <登録した公開鍵に対応する秘密鍵> kachaka@<kachakaのIPアドレス>
- sshコマンドを実行する初回は”Are you sure you want to continue connecting (yes/no/[fingerprint])? “を聞かれるので”yes”を入力する。下図のようにプロンプトが”kachaka@kachaka”になっていればsshでログイン成功。
- 端末で次のコマンドを実行する。この記事の例では、<登録した公開鍵に対する秘密鍵>は
- Playgroundでサンプルプログラムtime_signal.pyの実行
- Kachaka APIで説明している「カチャカが時報を1分間隔で発話する」サンプルプログラム/home/kachaka/kachaka-api/python/demos/time_signal.pyは指定ディレクトリ(/home/kachaka/kachaka-api/python/demos)にないので、次のURLからダウンロードして、カチャカの指定ディレクトリの中にコピーする。
- カチャカにログインしているPowerShellで次のコマンドを実行すると、カチャカが1分毎に時報を読み上げます。
cd ~
python3 /home/kachaka/kachaka-api/python/demos/time_signal.py 100.94.1.1:26400
- 次にカチャカがダイニングに行って、充電ドックに戻るまでの簡単な自作プログラムを紹介します。
- ソースコード
#!/usr/bin/env python # coding: utf-8 import kachaka_api client = kachaka_api.KachakaApiClient() client.speak("ミッションを始めます。") loc = client.get_locations() print(loc) client.update_resolver() result1 = client.move_to_location("L03") # LO3がダイニングのID。IDは10行目の出力でわかる。 if result1.success == True: client.speak("成功しました。") else: client.speak("失敗しました。") result2 = client.return_home() if result2.success == True: client.speak("成功しました。") else: client.speak("失敗しました。") client.speak("ミッションを終わります")
-
- 実行
- 上のソースコードmove.pyを/home/kachaka/kachaka-api/python/demosの中にコピーして、次のコマンドを実行します。
python3 /home/kachaka/kachaka-api/python/demos/move.py
- 上のソースコードmove.pyを/home/kachaka/kachaka-api/python/demosの中にコピーして、次のコマンドを実行します。
- 実行
これで、sshでカチャカにログインして自作プログラムを下の動画のように動かすことができました。たった25行のコードでここまでできるとはカチャカはお利口さんですね。ナビゲーションはカチャカにやらせると幸せになれそうです。
コメント