hotch-potch, Note to self

いろいろ作業記録

ロボット「カチャカ」をリモートPCのPythonから操作

1.はじめに

 自律移動ロボット「カチャカ」に触る機会*1があったので、 カチャカと同じネットワークにあるLinux PC (Ubuntu 22.04) のPythonから、カチャカに指令を出す手順をまとめました。

kachaka.life

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("終わりました")
# このあと、放っておくと自動的に充電ドックに戻る

参考資料