私は、私のhexacopterを自動操縦し、thisチュートリアルの後にAPMを使用しています。 thisの利用可能なコマンドを見ると、ドローンに左/右/前進/後進を命令する方法がわかりません。python dronekitを使って«左/右/前進/後進»する方法は?
誰でも私を助けることができますか?
私は、私のhexacopterを自動操縦し、thisチュートリアルの後にAPMを使用しています。 thisの利用可能なコマンドを見ると、ドローンに左/右/前進/後進を命令する方法がわかりません。python dronekitを使って«左/右/前進/後進»する方法は?
誰でも私を助けることができますか?
vehicle.message_factory.set_position_target_local_ned_encodeを作成する必要があります。 mavutil.mavlink.MAV_FRAME_BODY_NEDのフレームが必要です。 必要なx、y、z速度(m/s)をメッセージに追加します。
from pymavlink import mavutil
from dronekit import connect, VehicleMode, LocationGlobalRelative
import time
def send_body_ned_velocity(velocity_x, velocity_y, velocity_z, duration=0):
msg = vehicle.message_factory.set_position_target_local_ned_encode(
0, # time_boot_ms (not used)
0, 0, # target system, target component
mavutil.mavlink.MAV_FRAME_BODY_NED, # frame Needs to be MAV_FRAME_BODY_NED for forward/back left/right control.
0b0000111111000111, # type_mask
0, 0, 0, # x, y, z positions (not used)
velocity_x, velocity_y, velocity_z, # m/s
0, 0, 0, # x, y, z acceleration
0, 0)
for x in range(0,duration):
vehicle.send_mavlink(msg)
time.sleep(1)
connection_string = 'tcp:192.168.1.2:5760' # Edit to suit your needs.
takeoff_alt = 10
vehicle = connect(connection_string, wait_ready=True)
while not vehicle.is_armable:
time.sleep(1)
vehicle.mode = VehicleMode("GUIDED")
vehicle.armed = True
while not vehicle.armed:
print('Waiting for arming...')
time.sleep(1)
vehicle.simple_takeoff(takeoff_alt) # Take off to target altitude
while True:
print('Altitude: %d' % self.vehicle.location.global_relative_frame.alt)
if vehicle.location.global_relative_frame.alt >= takeoff_alt * 0.95:
print('REACHED TARGET ALTITUDE')
break
time.sleep(1)
# This is the command to move the copter 5 m/s forward for 10 sec.
velocity_x = 0
velocity_y = 5
velocity_z = 0
duration = 10
send_body_ned_velocity(velocity_x, velocity_y, velocity_z, duration)
# backwards at 5 m/s for 10 sec.
velocity_x = 0
velocity_y = -5
velocity_z = 0
duration = 10
send_body_ned_velocity(velocity_x, velocity_y, velocity_z, duration)
vehicle.mode = VehicleMode("LAND")
UAVをプログラミングして飛行しているときは、楽しく、もちろん厳重な安全ガードを守ってください。手動モードのオーバーライドは必須です!
Dronekit-pythonには、ローカルフレームの無人機にコマンドするための簡単なAPIはありません。私の個人的な経験から、これらのコマンドを使用して私の周りを頭に浮かべるのは難しかった私の無人機は、ローカルに、四角形や円などの形状に従ってください。 代替方法としてFlytOS drone APIsを使用しています。このサンプルpython code on githubが表示されたら、ドローンを左にxメートル、次にyメーターなどに移動するのが簡単に分かります.Jonの答えは、あなたがやろうとしていることを達成するためにどのようにドローンキットを使用できるかを正しく示していますが、複雑なコードに脅かされるかもしれない初心者。