-
-
Save dbaldwin/9185b702091148580fa836c1911f8735 to your computer and use it in GitHub Desktop.
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() |
I am using raspberry pi 3 and PX4, possible reasons for 'Waiting for vehicle to initialise':
- Safety switch off
- No GPS
- No RC signal
if you follow https://www.youtube.com/watch?v=DGAB34fJQFc&t=10s and successed, change 127.0.0.1:14550 from the code with /dev/serial0, it works well for me
I used sitl, but can't get it to takeoff again after landing.
What I did was:
first takeoff to 1.5m
then land
then takeoff to 1.5 again but it gets stuck here. Do you know anything about it?
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~
See my github repo wiki for details. I successfully tested this code last year.
In my repo wiki i wrote all the steps which worked for me.
https://github.com/pkrana0005/Controlling-Pixhawk-with-RaspberryPi3
Watch the real time execution on drone.
Hey! I am stuck at " Waiting for vehicle to initialise...". What could be the reason?
Make sure that GPS is locked. Without GPS getting locked, it will not work for this code
Is the transmitter being used when you run the code?
No, telemetry is not required for this operation. However using it will be beneficial to check for errors.
Link timeout, no heartbeat in last 5 seconds
No heartbeat in 30 seconds, aborting.
Traceback (most recent call last):
File "takeoff_and_land.py", line 12, in
vehicle = connect(args.connect, baud=921600, wait_ready=True)
File "/usr/local/lib/python2.7/dist-packages/dronekit/init.py", line 2845, in connect
vehicle.initialize(rate=rate, heartbeat_timeout=heartbeat_timeout)
File "/usr/local/lib/python2.7/dist-packages/dronekit/init.py", line 2117, in initialize
raise APIException('Timeout in initializing connection.')
dronekit.APIException: Timeout in initializing connection.
Check the connections between Flight controller and Rpi. See my wiki
Hey! I am stuck at " Waiting for vehicle to initialise...". What could be the reason?
GPS should get locked. Try in open
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.
@pkrana0005 Thanks for your reply.
I found that the biggest difference is baudrate.
Your baudrate is 921600. A lot of website say 57600.
How do you calculate 921600?
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?
Its been a year now since I worked on that, I don't exactly remember why I used that baudrate but generally whatever baudrate is used, it should be same in RPi code and Flight controller, then also communication is possible. The greater the supported baudrate, greater is the speed of communication. So check with all the baudrates.
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.
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.
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?
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.
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?
Hey! I am stuck at " Waiting for vehicle to initialise...". What could be the reason?