1.はじめに
自律移動ロボット「カチャカ」に触る機会*1があったので、 カチャカと同じネットワークにあるLinux PC (Ubuntu 22.04) のPythonから、カチャカに指令を出す手順をまとめました。
2.プログラムの準備
実験環境は以下の通りです。
- PCの環境
$ uname -a Linux hogehoge 6.2.0-37-generic #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
カチャカに登録しておく移動先の設定
- 以下の3点を指定しておく
- S01・台車を置いてあるところ
- L01・移動先1
- L02・移動先2
(1)カチャカ本体の設定
カチャカアプリを入れたスマホから、APIの受付を有効化します。
(2)Linux PCの準備
#作業ディレクトリ $ mkdir ~/gitwork/kachaka $ cd !$ #クローン $ git clone https://github.com/pf-robotics/kachaka-api.git Cloning into 'kachaka-api'... remote: Enumerating objects: 720, done. remote: Counting objects: 100% (209/209), done. remote: Compressing objects: 100% (112/112), done. remote: Total 720 (delta 141), reused 107 (delta 96), pack-reused 511 Receiving objects: 100% (720/720), 5.72 MiB | 19.93 MiB/s, done. Resolving deltas: 100% (327/327), done.
仮想環境を作って有効化します。
$ mkdir ~/gitwork/kachaka/practice $ cd !$ $ python3 -m venv venv $ source venv/bin/activate
必要なライブラリをインストールします。
$ pushd ~/gitwork/kachaka/kachaka-api/python/demos/
$ pip install -r requirements.txt
$ popd
~/gitwork/kachaka/practice
3.プログラムの試行
(1)Pythonからカチャカに指令できること
Jupyter notebook形式で書かれた こちらの資料が参考になります。
基本的には、下記を宣言することで使用できます。
import kachaka_api
client = kachaka_api.KachakaApiClient(<引数>)
<引数>には、文字列で<カチャカのIPアドレス:26400>
を指定します。
(2)しゃべらせてみる
空のファイルを作ります。
$ pwd ~/gitwork/kachaka/practice $ touch ./01speak.py
ソースコードを書きます。
"""カチャカ運転サンプル・speak """ # KACHAKA API # https://github.com/pf-robotics/kachaka-api/ import kachaka_api # kachaka に割り振られたIPアドレスを指定 KACHAKA_IP: str = "192.168.1.10:26400" client = kachaka_api.KachakaApiClient(KACHAKA_IP) # 挨拶 client.speak("カチャカです")
実行します。
$ pwd
~/gitwork/kachaka/practice
$ python3 01speak.py
ここでカチャカがしゃべります。
(2)登録した場所に移動する
台車を持たない状態で、単純に指定した場所に移動させます。
"""カチャカ運転サンプル・指定の場所に行く """ import sys import time # KACHAKA API # https://github.com/pf-robotics/kachaka-api/ import kachaka_api # kachaka に割り振られたIPアドレスを指定 KACHAKA_IP: str = "192.168.1.10:26400" client = kachaka_api.KachakaApiClient(KACHAKA_IP) client.speak("はじめます") # 指定の場所L01に行く client.move_to_location("L01") client.speak("5秒後に次の場所に行きます") time.sleep(5) # 指定の場所L02に行く client.move_to_location("L02") client.speak("5秒後に充電ドックに帰ります") time.sleep(5) # 充電ドックに返る client.return_home() client.speak("終わりました") # このあと、放っておくと自動的に充電ドックに戻る
(3)家具を運んで片付ける
- 台車をもってから、指定した場所に移動させます。
- 移動先で短時間待機した後、台車をもとの位置に戻します。
"""カチャカ運転サンプル・家具を運んで片付けるまで """ import sys import time import kachaka_api # kachaka に割り振られたIPアドレスを指定 KACHAKA_IP: str = "192.168.1.10:26400" client = kachaka_api.KachakaApiClient(KACHAKA_IP) client.speak("はじめます") # 家具を背負って、指定の場所L01に持っていく client.move_shelf("S01", "L01") client.speak("持ってきました") client.speak("5秒後に片付けます") time.sleep(5) # 家具を初めの位置に片付け(もとにあった場所に戻す) client.return_shelf("S01") client.speak("終わりました") # このあと、放っておくと自動的に充電ドックに戻る