DoubleMotor クラス
ペアリングされた左右2つのモーターを同期走行させたり、車体の旋回、独立した車輪制御を行います。
movement_move_* などの高度なシャーシ駆動関数は、内部で独自のマルチ制御を行うため、バッチモード内(begin_batch〜end_batch)で呼び出すことはできません。左右を同時に別々の速度で動かしたい場合は、共通APIタブにある通り、継承した motor_run() 関数をバッチ処理してください。
1. DoubleMotor制御関数
1-1. movement_move()
指定した方向(前進/後退/左右旋回)に、シャーシ全体を連続駆動させます。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| direction | int (厳格) | 0 〜 3 (MovementDirection定数) | 0:前進, 1:後退, 2:左旋回, 3:右旋回 |
| speed | int/float / None | -100 〜 100、または None | None指定時は現在の設定速度を維持。 |
| blocking | bool | True または False | コマンド完了まで待機するかどうか。 |
1-2. movement_move_for_time()
指定した時間(ミリ秒)だけペアモーターを駆動して自動停止します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| time_ms | int / float (四捨五入) | UINT32幅: 0 〜 4294967295 | 走行駆動時間。 |
| direction | int (厳格) | 0 〜 3 (MovementDirection定数) | 0:前進, 1:後退, 2:左旋回, 3:右旋回 |
| speed | int/float / None | -100 〜 100、または None | None指定時は現在の設定速度を維持。 |
| blocking | bool | True または False | - |
1-3. movement_move_for_degrees()
車輪モーターの回転角度の累計を指定して前進・後退を行います。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| degrees | int / float (四捨五入) | INT32幅: -2147483648 〜 2147483647 | ターゲット回転度数。 |
| direction | int (厳格) | 0 (FORWARD) または 1 (BACKWARD) | MovementMoveDirectionに準拠。 |
| speed | int/float / None | -100 〜 100、または None | None指定時は現在の設定速度を維持。 |
| blocking | bool | True または False | - |
1-4. movement_move_tank()
左右の車輪速度比率を個別に設定してタンク走行を実行します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| speed_left | int / float (四捨五入) | -100 〜 100 (%) | 左モーターの独立速度。 |
| speed_right | int / float (四捨五入) | -100 〜 100 (%) | 右モーターの独立速度。 |
| blocking | bool | True または False | コマンド完了まで待機するかどうか。 |
1-5. movement_move_tank_for_degrees()
指定した個別の速度を適用し、いずれかの車輪が指定角度分まわるまでタンク走行します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| degrees | int / float (四捨五入) | INT32幅: -2147483648 〜 2147483647 | いずれかの車輪が到達すべき目標角度。 |
| speed_left | int / float (四捨五入) | -100 〜 100 (%) | 左モーターの回転速度(デフォルト 50)。 |
| speed_right | int / float (四捨五入) | -100 〜 100 (%) | 右モーターの回転速度(デフォルト 50)。 |
| blocking | bool | True または False | - |
1-6. movement_turn_for_degrees()
内蔵IMU(ジャイロセンサー)の角度変位を正確にフィードバックし、指定度数分だけ正確にスピン旋回します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| degrees | int / float (四捨五入) | INT32幅: -2147483648 〜 2147483647 | 旋回目標角度。 |
| direction | int (厳格) | 2 (LEFT) または 3 (RIGHT) | 指定外はValueError。 |
1-7. movement_stop()
実行中のすべての移動・走行複合コマンド(movement_move_*)を即時緊急停止させます。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| blocking | bool | True または False | 停止処理の完了を同期待機するか。不整合はTypeError。 |
1-8. movement_set_speed()
DoubleMotorモジュールによる移動走行時の標準巡航速度を設定します。現在移動中の場合は即座に速度が変わり、停止中の場合は次回以降の走行コマンドに適用されます。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| speed | int / float (四捨五入) | -100 〜 100 (%) | 負の値を設定すると、前進命令時にバックするようになります。 |
| blocking | bool | True または False | 設定反映のレスポンスを待機するか。 |
1-9. movement_set_end_state()
走行駆動命令を終えた、または停止した車輪モーターの終了保持状態(ランダウン状態)を規定します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| end_state | int (厳格) | -1, 0 〜 5 (MotorEndState定数) | -1:デフォルト, 0:コースト(完全惰性フリー), 1:ブレーキ, 2:ホールド(強力サーボ位置保持) |
| blocking | bool | True または False | - |
1-10. movement_set_acceleration()
走行開始時の加速レート、および走行停止コマンド時の減速レートを、滑らかな傾き(0〜100%)として事前に設定します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| acceleration | int / float (四捨五入) | 0 〜 100 (%) | 加速の度合い。0で即時最大速、100で極めて緩やかに加速。 |
| deceleration | int / float (四捨五入) | 0 〜 100 (%) | 減速の度合い。 |
| blocking | bool | True または False | - |
1-11. movement_set_turn_steering()
旋回走行コマンドを発行した際、インサイド(内輪)とアウトサイド(外輪)に配分する駆動力のバランス(ステアリングのシャープさ・旋回半径)を事前に規定します。
| 引数名 | 要求される型 | 数値の範囲 / 選択肢 | 備考 |
|---|---|---|---|
| steering | int / float (四捨五入) | 0 〜 100 | 数値が大きいほど、左右の車輪の回転差が大きくなり、シャープ(小回り)に旋回します。 |
| blocking | bool | True または False | - |
2. DoubleMotor内蔵IMUデータ構造
DoubleMotorには、姿勢制御や衝撃を検知するための高精度な6軸IMUが内蔵されており、接続確立後はリアルタイムに以下のプロパティが更新・配信されます。(※未接続時は float('nan'))
2-1. imu_device (ImuDeviceNotification)
| プロパティ名 | データ型 | 有効レンジ | 内容説明 |
|---|---|---|---|
| orientation | uint8 | 0 〜 5 | ハブ本体の現在の設置・傾き方向(DeviceFace定数に対応)。 |
| yawFace | uint8 | 0 〜 5 | 現在基準とされているヨー(Yaw)軸の向き(DeviceFace定数に対応)。 |
| yaw | int16 | -32768 〜 32767 (度) | 水平旋回方向の角度。 |
| pitch | int16 | -32768 〜 32767 (度) | 前後の傾き角度。 |
| roll | int16 | -32768 〜 32767 (度) | 左右の傾き角度。 |
| accelerometerX / Y / Z | int16 | 各軸の全範囲 | 内蔵3軸加速度センサーの未加工測定値。 |
| gyroscopeX / Y / Z | int16 | 各軸の全範囲 | 内蔵3軸ジャイロセンサーの未加工角速度測定値。 |
2-2. imu_gesture (ImuGestureNotification)
| プロパティ名 | データ型 | 有効レンジ / 選択肢 | 内容説明 |
|---|---|---|---|
| gesture | int8 | -1 〜 4 | ハブ本体が検知した特定のジェスチャー・衝撃イベント(MotionGesture定数に対応)。 (-1: ジェスチャーなし、0: タップ、1: ダブルタップ、2: 衝突、3: シェイク、4: 自由落下) |
3. 継承された個別モーター制御関数
以下の関数は、SingleMotorクラスから継承されており、DoubleMotorインスタンスでもそのまま完全に利用可能です。
DoubleMotorでこれらの関数を使用する際は、引数の motor= に le.MOTOR_LEFT (0), le.MOTOR_RIGHT (1), le.MOTOR_BOTH (2) を指定することで、左右どちらの車輪を動かすかを個別に制御できます。
注意(引数エラーとデフォルト値):
・0, 1, 2 以外の無効な数値を指定した場合は ValueError が発生します。
・引数 motor を省略した場合のデフォルト値は基本 0
ですが、done() メソッドのみデフォルトが None
(全モーター対象) となり、motor_reset_relative_position() メソッドのみデフォルトが le.MOTOR_BOTH (2) となります。
- done(motor=None)
- motor_set_speed(speed, *, motor=0, blocking=True)
- motor_run(*, direction=0, motor=0, speed=None, blocking=True)
- motor_run_for_time(time_ms, *, direction=0, motor=0, speed=None, blocking=True)
- motor_run_for_degrees(degrees, *, direction=0, motor=0, speed=None, blocking=True)
- motor_reset_relative_position(*, motor=2, position=0, blocking=True)
- motor_run_to_relative_position(position, *, motor=0, speed=None, blocking=True)
- motor_run_to_absolute_position(position, *, direction=2, motor=0, speed=None, blocking=True)
- motor_set_duty_cycle(duty_cycle, *, motor=0, blocking=True)
- motor_stop(*, motor=0, blocking=True)
- motor_set_end_state(end_state, *, motor=0, blocking=True)
- motor_set_acceleration(acceleration, deceleration, *, motor=0, blocking=True)