Dronekit代码学习(五)基于Gps下的自动跟随
参考Dronkit-python:
https://github.com/dronekit/dronekit-python
实时更新PC端GPS位置,发送给无人机,完成PC的跟随
'''
---------------------------------------------------------------------------
基于GPS跟随模式
---------------------------------------------------------------------------
'''
from __future__ import print_function
from dronekit import connect, VehicleMode, LocationGlobalRelative
import gps
import socket
import time
import sys
connection_string = '127.0.0.1:14555'
print('Connecting to vehicle on: %s' % connection_string)
vehicle = connect(connection_string, wait_ready=True, timeout=300)
def arm_and_takeoff(aTargetAltitude):
print("Basic pre-arm checks")
while not vehicle.is_armable:
print(" Waiting for vehicle to initialise...")
time.sleep(1)
print("Arming motors")
vehicle.mode = VehicleMode("GUIDED")
vehicle.armed = True
while not vehicle.armed:
print(" Waiting for arming...")
time.sleep(1)
print("Taking off!")
vehicle.simple_takeoff(aTargetAltitude)
while True:
print(" Altitude: ", vehicle.location.global_relative_frame.alt)
if vehicle.location.global_relative_frame.alt>=aTargetAltitude*0.95:
print("Reached target altitude")
break
time.sleep(1)
try:
gpsd = gps.gps(mode=gps.WATCH_ENABLE)
arm_and_takeoff(5)
while True:
if vehicle.mode.name != "GUIDED":
print("User has changed flight modes - aborting follow-me")
break
next(gpsd)
if (gpsd.valid & gps.LATLON_SET) != 0:
altitude = 30
dest = LocationGlobalRelative(gpsd.fix.latitude, gpsd.fix.longitude, altitude)
print("Going to: %s" % dest)
vehicle.simple_goto(dest)
time.sleep(2)
except socket.error:
print("Error: gpsd service does not seem to be running, plug in USB GPS or run run-fake-gps.sh")
sys.exit(1)
print("Close vehicle object")
vehicle.close()
print("Completed")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)