etrobo_python package

Submodules

etrobo_python.device module

class etrobo_python.device.ColorSensor[source]

Bases: Device

光センサの観測データを取得するためのクラス。

get_ambient() int[source]

環境光の測定値を返す。

Returns:

環境光の測定値。

get_brightness() int[source]

反射光の測定値を返す。

Returns:

反射光の測定値。

get_raw_color() Tuple[int, int, int][source]

RGBの測定値を返す。

Returns:

測定された(Red, Green, Blue)の値。

class etrobo_python.device.Device[source]

Bases: object

get_log() bytes[source]
class etrobo_python.device.GyroSensor[source]

Bases: Device

get_angle() int[source]

ジャイロセンサで測定された現在の角度を返す。

Returns:

測定された現在の角度(単位はdeg)。

get_angler_velocity() int[source]

ジャイロセンサで測定された角速度を返す。

Returns:

測定された角速度(単位はdeg)。

reset() None[source]

ジャイロセンサの角速度を0度にセットする。

class etrobo_python.device.Hub[source]

Bases: Device

Hubの状態を取得し、LEDやスピーカーなどのデバイスを制御するためのクラス。

get_battery_current() int[source]

バッテリーの出力電流を返す。 シミュレータ環境の場合は常に200mAを返す。

Returns:

バッテリーの出力電流(単位はmA)。

get_battery_voltage() int[source]

バッテリーの出力電圧を返す。 シミュレータ環境の場合は常に8000mVを返す。

Returns:

バッテリーの出力電圧(単位はmV)。

get_time() float[source]

現在時刻を返す。 シミュレータ環境の場合は、シミュレータ上での時刻を返す。

Returns:

現在時刻(単位は秒)。

is_down_button_pressed() bool[source]

下ボタンの状態を返す。 下ボタンが押されていればTrueを返し、押されていなければFalseを返す。

Returns:

下ボタンの状態。

is_left_button_pressed() bool[source]

左ボタンの状態を返す。 左ボタンが押されていればTrueを返し、押されていなければFalseを返す。

Returns:

左ボタンの状態。

is_right_button_pressed() bool[source]

右ボタンの状態を返す。 右ボタンが押されていればTrueを返し、押されていなければFalseを返す。

Returns:

右ボタンの状態。

is_up_button_pressed() bool[source]

上ボタンの状態を返す。 上ボタンが押されていればTrueを返し、押されていなければFalseを返す。

Returns:

上ボタンの状態。

play_speaker_tone(frequency: int, duration: float) None[source]

スピーカーからビープ音を鳴らす。 シミュレータ環境の場合は何もしない。

Parameters:
  • frequency – ビープ音の周波数。

  • duration – 音を鳴らす時間(単位は秒)。

set_led(color: str) None[source]

LEDの発光色を設定する。 発光色の名前は black, red, green, orange のいずれか。

Parameters:

color – LEDの発光色の名前。

set_speaker_volume(volume: int) None[source]

スピーカーの音量を設定する。 シミュレータ環境の場合は何もしない。

Parameters:

volume – スピーカーの音量(単位は%)。

class etrobo_python.device.Motor[source]

Bases: Device

モータを制御するためのクラス。

get_count() int[source]

モーターの回転角度を返す。

Returns:

モーターの回転角度(単位はdeg)。

reset_count() None[source]

モータの回転角度の値を0に設定する。

set_brake(brake: bool) None[source]

ブレーキモードを設定する。

Parameters:

brake – Trueを指定した場合はブレーキモードとなる。

set_power(power: int) None[source]

モーターの回転力を設定する。

Parameters:

power – モーターの回転力。

class etrobo_python.device.ReversedMotor[source]

Bases: Motor

モータを制御するためのクラス。 ただし、モーターの回転方向が逆になる。

class etrobo_python.device.SonarSensor[source]

Bases: Device

超音波センサの観測データを取得するためのクラス。

get_distance() int[source]

超音波信号によって測定された物体までの距離を返す。

Returns:

超音波信号によって測定された物体までの距離(単位はmm)。

listen() bool[source]

超音波信号の受信状況を返す。

Returns:

超音波信号を受信できていればTrue。

class etrobo_python.device.TouchSensor[source]

Bases: Device

タッチセンサの状態を取得するためのクラス。

is_pressed() bool[source]

タッチセンサの測定値を返す。

Returns:

タッチセンサが押されていればTrue。

etrobo_python.etrobo module

class etrobo_python.etrobo.ETRobo(backend: str)[source]

Bases: object

ロボットを制御するためのオブジェクトを作成する。 実行環境に適したバックエンドプログラムを指定すること。

以下のバックエンドプログラムを指定できる。

  • simulator: Unityのシミュレータ環境でのロボット制御

  • pybricks: micropythonを使ったEV3ロボットの制御

  • raspike: pythonを使ったRasPikeロボットの制御(公式のmain.pyを使用する場合)

  • raspyke: pythonを使ったRasPikeロボットの制御(非公式のmain.pyを使用する場合)

プログラム例

制御対象としてHUBタイプのデバイス「body」とmotorタイプのデバイス「motor1」を登録した場合、 制御ハンドラには Hubオブジェクトが引数「body」として、Motorオブジェクトが引数「motor1」として渡される。 シミュレータ上でHUBとモータを制御する場合は以下なプログラムとなる。

from etrobo_python import ETRobo, Hub, Motor

def motor_handler(
    body: Hub,
    motor1: Motor,
) -> None:
    ...

etrobo = ETRobo(backend='simulator')
etrobo.add_hub('body')
etrobo.add_device('motor1', device_type=Motor, port='A')
etrobo.add_handler(motor_handler)
etrobo.dispatch()
Parameters:

backend – バックエンドプログラムの名前

add_device(name: str, device_type: str | Type[Device], port: str) ETRobo[source]

制御対象となるデバイスを登録する。 ここで登録されたデバイスオブジェクトは制御ハンドラに引数として渡される。

引数 device_type には以下のいずれかを指定する。

  • Motor: モータを追加する

  • ReversedMotor: 逆回転するモータを追加する

  • ColorSensor: カラーセンサを追加する。

  • TouchSensor: タッチセンサを追加する。

  • SonarSensor: 超音波センサを追加する。

  • GyroSensor: ジャイロセンサを追加する。

Parameters:
  • name – 制御オブジェクトの名前(handlerに渡される引数名)。

  • device_type – 制御デバイスの種類

  • port – 制御デバイスを接続しているポート

Returns:

このオブジェクト

add_handler(handler: Callable[[...], None]) ETRobo[source]

制御ハンドラを登録する。 ここで登録された制御ハンドラは、制御プログラムの実行開始後に指定された間隔で実行される。

Parameters:

handler – 制御ハンドラ

Returns:

このオブジェクト

add_hub(name: str) ETRobo[source]

制御対象としてHubを登録する。 このメソッドが実行された場合、Hubオブジェクトが制御ハンドラに引数として渡される。

Parameters:

name – 制御オブジェクトの名前(handlerに渡される引数名)。

Returns:

このオブジェクト

dispatch(interval: float = 0.01, logfile: str | None = None, **kwargs: Any) ETRobo[source]

制御プログラムを実行する。 :param interval: 制御ハンドラの実行間隔 :param logfile: ログデータを保存するファイルのパス :param kwargs: バックエンドプログラムに渡される引数

Returns:

このオブジェクト

etrobo_python.log module

class etrobo_python.log.LogReader(path: str | Path)[source]

Bases: object

ログデータをファイルから読み込むためのクラス。 LogWriterで作成されたログファイルを読み込み、デバイスごとに分割したデータを取得する。

ログファイルのフォーマットについては、LogWriterの説明を参照。

Parameters:

path – ログファイルのパス

close() None[source]

ログファイルを閉じる。

get_devices() List[Tuple[str, str]][source]

ログファイルに記録されているデバイスのリストを取得する。

Returns:

デバイスのリスト。 デバイスは(変数名, デバイスタイプ)のタプルで表現される。

read() List[bytes] | None[source]

ログファイルからデバイスごとに分割したデータを取得する。

Returns:

デバイスごとに分割したデータのリスト。 デバイスのリストの順番はget_devices()で取得したものと同じ。 ログデータが壊れている(と思われる)場合はNoneを返す。

class etrobo_python.log.LogWriter(path: str | Path, devices: List[Tuple[str, Device]])[source]

Bases: object

ログデータをファイルに書き込むためのクラス。 モータやセンサから取得したデータをログファイルに書き込む。

ログファイルのフォーマット

デバイスのリストの文字列のバイト数(2バイト)
デバイスのリストのUTF-8文字列(変数名1:デバイスタイプ1,変数名2:デバイスタイプ2,...)
以下、それぞれのデバイスから取得されたデータを時刻順に並べたもの
  - Hub: 時刻(4バイト), ボタンの状態(1バイト)
    ボタンの状態: 左ボタン=0x01, 右ボタン=0x02, 上ボタン=0x04, 下ボタン=0x08
  - Motor: モーターの回転角度(4バイト)
  - ColorSensor: brightness(1バイト), ambient(1バイト), raw_color(1バイト * 3)
  - TouchSensor: タッチセンサの状態(1バイト)
  - SonarSensor: 距離(2バイト)
  - GyroSensor: 角度(2バイト), 角速度(2バイト)

ログデータの例

ログデータの取得対象となるデバイスがleft_motor:motor・right_motor:motor・color_sensor:color_sensorの場合、 以下のログデータが作成される。

0x003c (デバイスリストの文字列のバイト数)
"left_motor:motor,right_motor:motor,color_sensor:color_sensor" (UTF-8文字列)
(left_motorの回転角度, right_motorの回転角度, color_sensorのbrightness, ambient, raw_color)
(left_motorの回転角度, right_motorの回転角度, color_sensorのbrightness, ambient, raw_color)
(left_motorの回転角度, right_motorの回転角度, color_sensorのbrightness, ambient, raw_color)
...
Parameters:
  • path – ログファイルのパス

  • devices – ログファイルに記録するデバイスのリスト。 デバイスは(変数名, デバイスオブジェクト)のタプルで指定する。

close() None[source]

ログファイルを閉じる。

flush() None[source]

ログファイルに書き込みバッファの内容を書き込む。

write(devices: List[Device]) None[source]

デバイスから取得したデータをログファイルに書き込む。

Parameters:

devices – ログファイルに記録するデバイスのリスト。

Module contents