外部PCからAKARIを制御しよう

ここでは、同一ネットワークに接続した外部PCからAKARIを制御する方法について説明します。

事前準備

まずは、AKARIをネットワークに接続し、 サービスを使ってみよう の手順に沿ってAkariRpcServerを起動します。
また、AKARIのネットワークのIPアドレスを確認しておきます。
その上で、AKARIを制御したい外部PCを同一のネットワークに接続します。

実行方法

以下はコードの例です。 下記を外部PCから実行することで、AKARIのAPIを遠隔で実行することができます。

 1#!/usr/bin/env python
 2# -*- coding: utf-8 -*-
 3import time
 4
 5from akari_client import AkariClient
 6from akari_client.config import (
 7   AkariClientConfig,
 8   JointManagerGrpcConfig,
 9   M5StackGrpcConfig,
10)
11
12
13def main() -> None:
14   """
15   メイン関数
16   """
17   # AKARI本体のIPアドレスを指定する。
18   # 実際のAKARIのIPアドレスに合わせて変更すること。
19   akari_ip = "192.168.100.1"
20   # portは初期設定のままであれば51001固定
21   akari_port = "51001"
22   akari_endpoint = f"{akari_ip}:{akari_port}"
23
24   joint_config: JointManagerGrpcConfig = JointManagerGrpcConfig(
25      type="grpc", endpoint=akari_endpoint
26   )
27   m5_config: M5StackGrpcConfig = M5StackGrpcConfig(
28      type="grpc", endpoint=akari_endpoint
29   )
30   akari_client_config = AkariClientConfig(
31      joint_manager=joint_config, m5stack=m5_config
32   )
33   # akari_client_configを引数にしてAkariClientを作成する。
34   akari = AkariClient(akari_client_config)
35
36   # 処理を記載。下記は例
37   joints = akari.joints
38   # サーボトルクをONする。
39   joints.enable_all_servo()
40   # 初期位置に移動する。
41   joints.move_joint_positions(sync=True, pan=0, tilt=0)
42
43
44if __name__ == "__main__":
45   main()
19行目の akari_ip は現在のAKARIのIPアドレスに書き換えてください。
また、21行目の akari_port は通常(設定ファイルに特に変更を加えない限りは) 51001 です。
この情報をもとに、24-29行目と同様にjoint_config, m5_configを作成し、30-32行目でこれを引数にしたAkariClientConfigを作成しています。
そして、34行目でこのAkariClientConfigを引数としたakariClientを作成することで、そのIPアドレスのAKARIに対してAPIを実行することができます。
以降はAKARIのローカル環境で実行するのと同様に各APIを使用することができます。

サンプルコード

akari_softwareのsamples/remote_client_sample 内に下記2つのサンプルコードがあります。
  • remote_motor_sample.py: 外部PCからAKARIのモーターを制御するサンプル

  • remote_m5_sample.py: 外部PCからAKARIのM5ディスプレイを制御するサンプル

これらも参考にしながら、外部PCでのアプリ作成を行ってください。

AKARIを使った開発 へ戻る