ソフトウェアAPI

AKARIのソフトウェアAPIを記載します。

サーボの制御

class akari_client.joint_manager.JointManager(joint_controllers)[ソース]
パラメータ

joint_controllers (Sequence[RevoluteJointController]) --

get_joint_names()[ソース]

関節名を取得する。

戻り値

AKARIの全関節名のlist

戻り値の型

List[str]

get_joint_limits()[ソース]

サーボの位置リミットを取得する。

戻り値

関節名と位置リミット(min,max)[rad]のDict

戻り値の型

Dict[str, PositionLimit]

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> print(joints.get_joint_limits())
# 各軸のリミット値が出力される
set_joint_accelerations(*, pan=None, tilt=None, **kwargs)[ソース]

サーボの目標加速度を設定する。

パラメータ
  • pan (Optional[float]) -- pan軸の加速度 [rad/s^2]

  • tilt (Optional[float]) -- tilt軸の加速度 [rad/s^2]

  • kwargs (float) --

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> joints.set_joint_accelerations(pan=10, tilt=8)
# pan軸の目標加速度が10rad/s^2, tilt軸の目標加速度が8rad/s^2
get_joint_accelerations()[ソース]

サーボの目標加速度を取得する。

戻り値

関節名と目標加速度[rad/s^2]のDict

戻り値の型

Dict[str, float]

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> print(joints.get_joint_accelerations())
# 各軸の目標加速度値が出力される
set_joint_velocities(*, pan=None, tilt=None, **kwargs)[ソース]

サーボの目標速度を設定する。

パラメータ
  • pan (Optional[float]) -- pan軸の速度 [rad/s]

  • tilt (Optional[float]) -- tilt軸の速度 [rad/s]

  • kwargs (float) --

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> joints.set_joint_velocities(pan=10, tilt=8)
# pan軸の目標加速度が10rad/s, tilt軸の目標加速度が8rad/s
get_joint_velocities()[ソース]

サーボの目標速度を取得する。

戻り値

関節名と目標速度[rad/s]のDict

戻り値の型

Dict[str, float]

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> print(joints.get_joint_velocities())
# 各軸の目標速度値が出力される
move_joint_positions(*, sync=False, pan=None, tilt=None, **kwargs)[ソース]

サーボの目標角度を設定する。 ここで設定した値まで移動する。

パラメータ
  • sync (bool) -- Trueにすると、サーボの移動が完了するまで関数の終了を待機する。デフォルト値はFalse。

  • pan (Optional[float]) -- pan軸の目標角度 [rad]

  • tilt (Optional[float]) -- tilt軸の目標角度 [rad]

  • kwargs (float) --

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> joints.move_joint_positions(pan=0.4,tilt=-0.2)
# pan軸が0.4rad, tilt軸の目標加速度が-0.2radの位置へ移動
get_joint_positions()[ソース]

サーボの現在角度を取得する。

戻り値

サーボ名と現在角度[rad]のdict

戻り値の型

Dict[str, float]

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> print(joints.get_joint_positions())
# 各軸の現在角度[rad]が出力される
set_servo_enabled(*, pan=None, tilt=None, **kwargs)[ソース]

サーボの有効無効状態を設定する。

パラメータ
  • pan (Optional[bool]) -- pan軸のサーボ有効無効の設定。True であればサーボを有効にする。

  • tilt (Optional[bool]) -- tilt軸のサーボ有効無効の設定。True であればサーボを有効にする。

  • kwargs (bool) --

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> joints.set_servo_enabled(pan=True,tilt=False)
# panのサーボを有効、tiltのサーボを無効に設定
enable_all_servo()[ソース]

全サーボを有効状態に設定する。

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> joints.enable_all_servo()
# pan、tiltのサーボ両方を有効に設定
戻り値の型

None

disable_all_servo()[ソース]

全サーボを無効状態に設定する。

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> joints.disable_all_servo()
# pan、tiltのサーボ両方を無効に設定
戻り値の型

None

get_moving_state()[ソース]
サーボが現在移動中かを取得する。

停止中ならTrue、移動中ならFalseを返す。

戻り値

サーボ名と現在状態のdict

戻り値の型

Dict[str, bool]

サンプル

>>> from akari_client import AkariClient
>>> akari = AkariClient()
>>> joints = akari.joints
>>> print(joints.get_moving_state())
# 各軸の現在状態が出力される

M5の制御

class akari_client.m5stack_client.M5StackClient[ソース]
abstract set_dout(pin_id, value, sync=True)[ソース]

ヘッド部GPIOピンのデジタル出力を設定する。

パラメータ
  • pin_id (int) -- pin番号。0でdout0、1でdout1を指定する。

  • value (bool) -- デジタル出力の値。Falseで0V,Trueで3.3V出力。

  • sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>     m5 = akari.m5stack
>>>     m5.set_dout(0, True)
# dout0がTrueになる。
abstract set_pwmout(pin_id, value, sync=True)[ソース]

ヘッド部GPIOピンのPWM出力を設定する。

パラメータ
  • pin_id (int) -- pin番号。デフォルトではpwmout0しかないため、0を指定すること。

  • value (int) -- PWM出力の値。 0-255で指定し、0で0V、255で3.3Vを出力する。

  • sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>     m5 = akari.m5stack
>>>     m5.set_pwmout(0, 200)
# pwmout0が200になる。
abstract set_allout(*, dout0=None, dout1=None, pwmout0=None, sync=True)[ソース]

ヘッド部GPIOピンの出力をまとめて設定する。

パラメータ
  • dout0 (Optional[bool]) -- dout0の出力値。Falseで0V,Trueで3.3V出力。

  • dout1 (Optional[bool]) -- dout1の出力値。Falseで0V,Trueで3.3V出力。

  • pwmout0 (Optional[int]) -- pwmout0の出力値。0-255で指定し、0で0V、255で3.3Vを出力する。

  • sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>     m5 = akari.m5stack
>>>     m5.set_allout(dout0=False, dout1=True, pwmout0=100)
# dout0がFalse, dout1がTrue, pwmout0が100になる。
abstract reset_allout(sync=True)[ソース]

ヘッド部GPIOピンの出力を初期値にリセットする。 dout0、dout1はFalse、pwmout0は0となる。

パラメータ

sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>     m5 = akari.m5stack
>>>     m5.reset_allout()
# dout0がFalse, dout1がFalse, pwmout0が0になる。
abstract set_display_color(color, sync=True)[ソース]

ボディー部M5のディスプレイ背景色を変更する。

パラメータ
  • color (Color) -- 背景色を指定。色は color.Colors から色名を引用する、もしくはRGBの数値指定も可能。

  • sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>     m5 = akari.m5stack
>>>     color = Colors.WHITE
>>>     m5.set_display_color(color)
# 画面色が白になる。
>>>     color = Color(red=0, green=100, blue=200)
>>>     m5.set_display_color(color)
# 画面色が指定したRGB値になる。
abstract set_display_text(text, pos_x=Positions.CENTER, pos_y=Positions.CENTER, size=5, text_color=None, back_color=None, refresh=True, sync=True)[ソース]

ボディー部M5のディスプレイに文字を表示する。

パラメータ
  • text (str) -- 表示する文字列。

  • pos_x (int) -- x方向の描画位置ピクセルを0-320で指定。左端が0。 position.Positions を用いた位置指定も可能。デフォルト値は中央揃え。

  • pos_y (int) -- y方向の描画位置ピクセルを0-240で指定。上端が0。 position.Positions を用いた位置指定も可能。デフォルト値は中央揃え。

  • size (int) -- 文字サイズを1-11の11段階で指定。デフォルト値は5。

  • text_color (Optional[Color]) -- 文字色を指定。色は color.Colors から色名を引用する、もしくはRGBの数値指定も可能。値を指定しない場合、前回値を引き継ぐ。

  • back_color (Optional[Color]) -- 背景色を指定。色は color.Colors から色名を引用する、もしくはRGBの数値指定も可能。値を指定しない場合、画面全体の背景色に合わせる。

  • refresh (bool) -- trueの場合画面全体を現在の背景色で更新する。falseの場合は現在の表示を維持しつつ、文字を描画する範囲のみ更新する。デフォルト値は背景更新あり。

  • sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> from akari_client.color import Colors
>>> from akari_client.position import Positions
>>> with AkariClient() as akari:
>>>    text = "AKARI"
>>>    pos_x = Positions.LEFT
>>>    pos_y = Positions.TOP
>>>    size = 7
>>>    text_color = Colors.WHITE
>>>    back_color = Colors.BLACK
>>>    refresh = True
>>>    m5.set_display_text(
...        text, pos_x, pos_y, size, text_color, back_color, refresh
...    )
# 画面に「AKARI」と表示される。
abstract set_display_image(filepath, pos_x=Positions.CENTER, pos_y=Positions.CENTER, scale=-1.0, sync=True)[ソース]

ボディー部M5のディスプレイにM5のSDカード内の画像を表示する。

パラメータ
  • filepath (str) -- M5のSDカード内のファイルパス。(例;"image/hoge.jpg")

  • pos_x (int) -- x方向の描画位置ピクセルを0-320で指定。左端が0。 position.Positions を用いた位置指定も可能。デフォルト値は中央揃え。

  • pos_y (int) -- y方向の描画位置ピクセルを0-240で指定。上端が0。 position.Positions を用いた位置指定も可能。デフォルト値は中央揃え。

  • scale (float) -- 画像の拡大縮小倍率を指定。1.0で等倍表示。マイナスの値を入れた場合、画面サイズに合わせて自動でサイズ調整される。 デフォルト値は自動サイズ調整となっている。

  • sync (bool) -- 同期実行の指定。Trueの場合M5側で実行完了するまで関数の終了待ちを行う。

戻り値の型

None

サンプル

>>> from akari_client import AkariClient
>>> from akari_client.position import Positions
>>> with AkariClient() as akari:
>>>    filepath = "/jpg/logo320.jpg"
>>>    pos_x = Positions.LEFT
>>>    pos_y = Positions.TOP
>>>    scale = 0.75
>>>    m5.set_display_image(filepath, pos_x, pos_y, scale)
# 画面に"/jpg/logo320.jpg"の画像が表示される。
abstract reset_m5()[ソース]

M5をリセットして再起動する。

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>    m5.reset_m5()
# M5が再起動する。
戻り値の型

None

abstract get()[ソース]

M5から環境センサ、ヘッドGPIOの入力値、M5のボタンの状態を取得する。

戻り値

M5から取得した各データを格納したDict。

戻り値の型

M5ComDict

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>    data = m5.get()
>>>    print(data["temperature"])
31.675

M5の制御に使用するクラス

class akari_client.m5stack_client.M5ComDict(*args, **kwargs)[ソース]

M5から取得する情報を格納するDict。

パラメータ
  • din0 -- ヘッドのdin0ピンのデジタル入力。HiがTrue、LoがFalse。デフォルトHi。

  • din1 -- ヘッドのdin1ピンのデジタル入力。HiがTrue、LoがFalse。デフォルトHi。

  • ain0 -- ヘッドのain0ピンのアナログ入力。0-3.3Vを0-4095の4096段階にする。

  • dout0 -- ヘッドのdout0ピンのデジタル出力。TrueでHi(3.3V)、FalseでLo(0V)。

  • dout1 -- ヘッドのdout1ピンのデジタル出力。TrueでHi(3.3V)、FalseでLo(0V)。

  • pwmout0 -- ヘッドのpwmout0ピンのPWM出力。0-255の256段階で0-3.3Vを出力可能。

  • general0 -- 任意値を入力可能なエリア。通常時は使用しない。M5のソフトを書き換えることで自由に使用可能。

  • general1 -- 任意値を入力可能なエリア。通常時は使用しない。M5のソフトを書き換えることで自由に使用可能。

  • button_a -- M5の前面のボタンAの入力。ボタンを押すとTrue、押していないとFalse。

  • button_b -- M5の前面のボタンBの入力。ボタンを押すとTrue、押していないとFalse。

  • button_c -- M5の前面のボタンCの入力。ボタンを押すとTrue、押していないとFalse。

  • temperature -- AKARI側面の環境センサモジュールの温度計測値。単位は℃。

  • pressure -- AKARI側面の環境センサモジュールの観測絶対圧力。単位はPa。

  • brightness -- AKARI側面の光センサユニットの観測明るさを4096段階で出力。0が最も明るい。

  • time -- データ取得した時間。M5のソフト起動時からの経過秒数を用いている。

  • is_responce -- akari_client()の各コマンド実行完了時のレスポンス。実行完了するとTrueを返す。

class akari_client.color.Color(red, green, blue)[ソース]

M5のディスプレイの表示色を指定するクラス。

パラメータ
  • red (int) -- RGBのR要素。0~255で指定。

  • green (int) -- RGBのG要素。0~255で指定。

  • blue (int) -- RGBのB要素。0~255で指定。

class akari_client.color.Colors(value)[ソース]
M5のディスプレイの表示色のenum。
下記の色を指定可能。
BLACK
NAVY
DARKGREEN
DARKCYAN
MAROON
PURPLE
OLIVE
LIGHTGREY
DARKGREY
BLUE
GREEN
CYAN
RED
MAGENTA
YELLOW
WHITE
ORANGE
GREENYELLOW
PINK
class akari_client.position.Positions(value)[ソース]
M5のディスプレイの表示位置のenum。
下記が利用可能。
CENTER: 中央
LEFT: 左揃え
TOP: 上揃え
RIGHT: 右揃え
BOTTOM: 下揃え