外部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を使った開発 へ戻る