空中でモードを変更しようとすると、ドローン キットの Python スクリプトが引き続きヘリコプターを GUIDED モードのままにします。pythonスクリプトで、ドローンが特定の場所を飛行し、そのモードを空中でLOITERに切り替えて、一定時間空中に留まることができるようにする必要があります。ここに私のスクリプトの小さな部分があります:
print "Going towards location"
goto(5,3)
vehicle.mode = VehicleMode("LOITER")
print vehicle.mode
time.sleep(70)
スクリプトを実行するたびに、車両モードが LOITER ではなく GUIDED として出力されます。理由がわかりません。
goto python関数の定義は次のとおりです
def goto(dNorth, dEast, gotoFunction=vehicle.simple_goto):
currentLocation=vehicle.location.global_relative_frame
targetLocation=get_location_metres(currentLocation, dNorth, dEast)
targetDistance=get_distance_metres(currentLocation, targetLocation)
gotoFunction(targetLocation)
while (vehicle.mode.name=="GUIDED") and (get_distance_metres(vehicle.home_location,vehicle.location.global_frame)<radius) and (vehicle.location.global_relative_frame.alt<alt_limit):
#Stop action if we are no longer in guided mode or outside radius.
remainingDistance=get_distance_metres(vehicle.location.global_frame, targetLocation)
print "Distance to target: ", remainingDistance
if remainingDistance<=targetDistance*0.1: #Just below target, in case of undershoot.
print "Reached target"
break
time.sleep(2)
ヘリコプターが GUIDED モードでない場合、simple_goto を実行できないことを理解しています。しかし、目的地に到達した後、関数は中断するように指示し、simple_goto で実行されなくなったと思います。自分のコードの何が問題なのか理解できないので、なぜこれが起こっているのかを説明してくれる人がいれば。
(リクエストに応じてコード全体を掲載できます)