Skip to content

Instantly share code, notes, and snippets.

@dbaldwin
Created August 5, 2016 21:46
Show Gist options
  • Save dbaldwin/9185b702091148580fa836c1911f8735 to your computer and use it in GitHub Desktop.
Save dbaldwin/9185b702091148580fa836c1911f8735 to your computer and use it in GitHub Desktop.
Basic takeoff to 20m and land with DroneKit, Raspberry Pi and Pixhawk
from dronekit import connect, VehicleMode, LocationGlobalRelative
from pymavlink import mavutil
import time
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--connect', default='127.0.0.1:14550')
args = parser.parse_args()
# Connect to the Vehicle
print 'Connecting to vehicle on: %s' % args.connect
vehicle = connect(args.connect, baud=57600, wait_ready=True)
# Function to arm and then takeoff to a user specified altitude
def arm_and_takeoff(aTargetAltitude):
print "Basic pre-arm checks"
# Don't let the user try to arm until autopilot is ready
while not vehicle.is_armable:
print " Waiting for vehicle to initialise..."
time.sleep(1)
print "Arming motors"
# Copter should arm in GUIDED mode
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) # Take off to target altitude
# Check that vehicle has reached takeoff altitude
while True:
print " Altitude: ", vehicle.location.global_relative_frame.alt
#Break and return from function just below target altitude.
if vehicle.location.global_relative_frame.alt>=aTargetAltitude*0.95:
print "Reached target altitude"
break
time.sleep(1)
# Initialize the takeoff sequence to 20m
arm_and_takeoff(20)
print("Take off complete")
# Hover for 10 seconds
time.sleep(10)
print("Now let's land")
vehicle.mode = VehicleMode("LAND")
# Close vehicle object
vehicle.close()
@Maarginean
Copy link

Maarginean commented Jun 21, 2021

Hello, I used this code but my quadcopter don`t enter in hover mode, only take off and after reached the altitude land
Can somone help me with this problem?

@angela804
Copy link

This script can arm my quadrotor, but cannot make it take off. Does anyone know why?
My pixhawk is 2.4.6. Firmware is ardu v4.0.4 .
Thanks~

possibility that code may have been edited and resulted in error. Try with code in my repo, it is fully tested.
What do you mean the code have been edited and resulted in error?

I mean to say that any change in code may also result in some error or may result in non-working.

I see. I delete vehicle.is_armable in my code. So this change may cause error. Thanks I will keep trying.

even if you delete that part of the code, i think you won't get through vehicle.armed=True because gps lock is still a requirement.

@angela804
Copy link

Hello, I used this code but my quadcopter don`t enter in hover mode, only take off and after reached the altitude land Can somone help me with this problem?

have u tried increasing the time.sleep part of the code after the take off is completed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment