コントロール#
導入#
Pythonによる制御では、ロボットに待機するタイミング、動作を繰り返すタイミング、意思決定の方法、プロジェクトを終了するタイミングなどを指示できます。
以下は、メソッドや主要なPythonキーワードを含む、利用可能なコントロールの一覧です。
wait– 指定された時間だけプロジェクトを一時停止します。for– シーケンス内の各項目に対してコードを繰り返します。if– 条件が真の場合にコードを実行します。if/else– 条件に応じて異なるコードを実行します。if/elif/else– 複数の条件を順番にチェックします。while– 条件が真である間、コードを繰り返します。break– ループを即座に終了します。quit– 実行中のプロジェクトを終了します。pass– アクションが必要ない場合に使用されるプレースホルダー。
wait#
wait は、次のコード行に進む前に、指定された時間だけ一時停止します。
Usage:
wait(time, units)
パラメータ |
説明 |
|---|---|
|
待機時間。正の整数または小数で指定します。 |
|
待ち時間を表す単位: |
# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
for#
for repeats a set of actions a specific number of times. for can be used to loop through items in lists, tuples, dictionaries, sets, strings, or for a specified amount of loops with range.
使用例:
for value in expression_list:
pass
コンポーネント |
説明 |
|---|---|
|
イテレーションにおける現在の要素を格納する一時変数。 |
|
ループ処理される要素の集合(例:リスト、文字列、範囲)。 |
# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
drone.move_for(direction=0, distance=500, velocity=50, units=MM)
wait(1, SECONDS)
drone.move_for(direction=180, distance=500, velocity=50, units=MM)
wait(1, SECONDS)
drone.land()
# Print each item in a list.
colors = ["Red", "Green", "Blue"]
for color in colors:
controller.screen.print(color)
controller.screen.next_row()
if#
if runs the indented block of code if the condition is True.
使用法:
if condition:
pass
コンポーネント |
説明 |
|---|---|
|
ステートメント 実行時にチェックされる式または変数。これが |
# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Move with controller
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
if controller.button5.pressing():
drone.camera.capture_image(FORWARD_CAMERA)
wait(5, MSEC)
if/else#
if かつ else 条件が True または Falseであるかどうかに基づいて、どのインデントされたコードブロックが実行されるかを決定します。
使用法:
if condition:
pass
else:
pass
コンポーネント |
説明 |
|---|---|
|
ステートメントの実行時にチェックされる式または変数。これが |
# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
if controller.axis1.position() > 0:
drone.climb(direction=UP, velocity=50)
else:
drone.hover()
wait(5, MSEC)
if/elif/else#
if/elif/else 構造は、条件に基づいてどのインデントされたコードブロックを実行するかを選択します。
ifruns its block if the condition isTrue.elif、以前の条件がすべてFalseの場合にのみ追加の条件をチェックします。複数のelifステートメントを使用できます。else、前の条件のいずれも真でない場合にのみブロックを実行しますTrue。
使用法:
if condition:
pass
elif condition:
pass
else:
pass
コンポーネント |
説明 |
|---|---|
|
ステートメントの実行時にチェックされる式または変数。最初に |
# Move the drone up or down based on the position of the joystick.
drone.take_off(climb_to=500)
while True:
position = controller.axis1.position()
if position > 0:
drone.climb(direction=UP, velocity=50)
elif position < 0:
drone.climb(direction=DOWN, velocity=50)
else:
drone.hover()
wait(5, MSEC)
while#
while 、条件が Trueである限りコードを繰り返し実行します。また、条件として True 使用することで「永久」のように使用したり、条件に not を追加することで「待機」のように使用することもできます。以下の例を参照してください。
使用法:
while condition:
pass
コンポーネント |
説明 |
|---|---|
|
各反復処理の前にチェックされる式または変数。0 が |
# Hover at 200 mm.
drone.take_off(climb_to=500)
while drone.range.get_distance(DOWNWARD_RANGE, MM) > 200:
drone.climb(direction=DOWN, velocity=10)
drone.hover()
wait(3, SECONDS)
drone.land()
break#
break はループを即座に終了します。2 break 無限ループになる可能性のあるループを終了させるために使用できます。
# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Move with controller
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
if controller.button5.pressing():
break
wait(5, MSEC)
drone.land()
quit#
quit 実行中のプロジェクトを終了します。
Usage:
quit()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Move with controller
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
if controller.button5.pressing():
quit()
wait(5, MSEC)
drone.land()
pass#
pass は将来のコードのためのプレースホルダーであり、空のループ、条件分岐、関数におけるエラーを回避するために使用できます。
if condition:
pass
def function():
pass