低レイヤー実装

gRPC クライアント

class akari_client.grpc.m5stack.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
class akari_client.grpc.joints_controller.GrpcJointController(joint_name, client)[ソース]
パラメータ
  • joint_name (str) --

  • client (_GrpcJointsController) --

get_position_limit()[ソース]

Positionの上限値と下限値を取得する。

戻り値

現在角度の下限値、上限値 [rad]

戻り値の型

PositionLimit

get_servo_enabled()[ソース]

サーボの有効無効状態を取得する。

戻り値

サーボ有効なら``True``、無効なら``False``

戻り値の型

bool

set_servo_enabled(enabled)[ソース]

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

パラメータ

enabled (bool) -- True であればサーボを有効にする

戻り値の型

None

set_profile_acceleration(rad_per_sec2)[ソース]

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

パラメータ

rad_per_sec2 (float) -- 加速度 [rad/s^2]

戻り値の型

None

get_profile_acceleration()[ソース]

Profile Acceleration を取得する。

戻り値

加速度 [rad/s^2]

戻り値の型

float

set_profile_velocity(rad_per_sec)[ソース]

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

パラメータ

rad_per_sec (float) -- 速度 [rad/s]

戻り値の型

None

get_profile_velocity()[ソース]

Profile Velocity を設定する

パラメータ

rad_per_sec -- 速度 [rad/s]

戻り値の型

float

set_goal_position(rad)[ソース]

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

パラメータ

rad (float) -- 目標角度 [rad]

戻り値の型

None

get_present_position()[ソース]

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

戻り値

現在角度 [rad]

戻り値の型

float

get_moving_state()[ソース]

モーターが動作中かどうか判定する。

戻り値

現在のモーター状態。

戻り値の型

bool

Serial クライアント

class akari_client.serial.dynamixel.DynamixelController(joint_name, dynamixel_id, communicator)[ソース]
パラメータ
set_position_limit(lower_rad, upper_rad)[ソース]

Positionの上限値と下限値を設定する。

パラメータ
  • lower_rad (float) -- 下限値 [rad]

  • upper_rad (float) -- 上限値 [rad]

戻り値の型

None

get_position_limit()[ソース]

Positionの上限値と下限値を取得する。

戻り値

現在角度の下限値、上限値 [rad]

戻り値の型

PositionLimit

property joint_name: str

関節名を取得する。

戻り値

関節名

get_servo_enabled()[ソース]

サーボの有効無効状態を取得する。

戻り値の型

bool

set_servo_enabled(enabled)[ソース]

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

パラメータ

enabled (bool) -- Trueであればサーボを有効にする

戻り値の型

None

set_profile_acceleration(rad_per_sec2)[ソース]

Profile Acceleration を設定する。

パラメータ

rad_per_sec2 (float) -- 加速度 [rad/s^2]

戻り値の型

None

get_profile_acceleration()[ソース]

Profile Acceleration を取得する。

戻り値

加速度 [rad/s^2]

戻り値の型

float

set_profile_velocity(rad_per_sec)[ソース]

Profile Velocity を設定する。

パラメータ

rad_per_sec (float) -- 速度 [rad/s]

戻り値の型

None

get_profile_velocity()[ソース]

Profile Velocity を取得する。

戻り値

加速度 [rad/s^2]

戻り値の型

float

set_goal_position(rad)[ソース]

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

パラメータ

rad (float) -- 目標角度 [rad]

戻り値の型

None

get_present_position()[ソース]

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

戻り値

現在角度 [rad]

戻り値の型

float

get_moving_state()[ソース]

サーボが動作中かどうか判定する。

戻り値

現在のサーボ状態

戻り値の型

bool

class akari_client.serial.dynamixel.DynamixelControlTable[ソース]
class akari_client.serial.dynamixel_communicator.DynamixelCommunicator(port_handler, packet_handler)[ソース]
パラメータ
  • port_handler (PortHandler) --

  • packet_handler (PacketHandler) --

classmethod open(serial_port=PosixPath('/dev/ttyUSB_dynamixel'), baudrate=1000000, protocol_version=2.0)[ソース]

dynamixelと通信を行うクラスを初期化する

パラメータ
  • serial_port (Path) --

  • baudrate (int) --

  • protocol_version (float) --

戻り値の型

Iterator[DynamixelCommunicator]

read(device_id, address, length)[ソース]

dynamixelからデータを読み込む。

パラメータ
  • device_id (int) -- DynamixelのID

  • address (int) -- データアドレス

  • length (int) -- データ長

戻り値

データ値

戻り値の型

int

write(device_id, address, length, value)[ソース]

dynamixelにデータを書き込む。

パラメータ
  • device_id (int) -- DynamixelのID

  • address (int) -- データアドレス

  • length (int) -- データ長

  • value (int) -- データ値

戻り値の型

None

class akari_client.serial.m5stack.M5StackSerialClient(communicator)[ソース]
パラメータ

communicator (M5SerialCommunicator) --

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になる。
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になる。
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になる。
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になる。
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値になる。
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」と表示される。
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"の画像が表示される。
reset_m5()[ソース]

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

サンプル

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

None

get()[ソース]

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

戻り値

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

戻り値の型

M5ComDict

サンプル

>>> from akari_client import AkariClient
>>> with AkariClient() as akari:
>>>    data = m5.get()
>>>    print(data["temperature"])
31.675
class akari_client.serial.m5stack_communicator.M5SerialCommunicator(baudrate=500000, port=PosixPath('/dev/ttyUSB_M5Stack'), timeout=0.2)[ソース]
パラメータ
  • baudrate (int) --

  • port (pathlib.Path) --

  • timeout (float) --