etrobo_python package¶
Submodules¶
etrobo_python.device module¶
- 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)。
- 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 – 音を鳴らす時間(単位は秒)。
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:
このオブジェクト
etrobo_python.log module¶
- class etrobo_python.log.LogReader(path: str | Path)[source]¶
Bases:
object
ログデータをファイルから読み込むためのクラス。 LogWriterで作成されたログファイルを読み込み、デバイスごとに分割したデータを取得する。
ログファイルのフォーマットについては、LogWriterの説明を参照。
- Parameters:
path – ログファイルのパス
- 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 – ログファイルに記録するデバイスのリスト。 デバイスは(変数名, デバイスオブジェクト)のタプルで指定する。