-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathmission_upload.py
More file actions
77 lines (65 loc) · 2.69 KB
/
Copy pathmission_upload.py
File metadata and controls
77 lines (65 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from pymavlink import mavutil
from pymavlink import mavwp
import time
# Create the connection
# From topside computer
master = mavutil.mavlink_connection('tcp:127.0.0.1:5762')
master.wait_heartbeat()
wp = mavwp.MAVWPLoader()
def cmd_set_home(home_location, altitude):
print('--- ', master.target_system, ',', master.target_component)
master.mav.command_long_send(
master.target_system, master.target_component,
mavutil.mavlink.MAV_CMD_DO_SET_HOME,
1, # set position
0, # param1
0, # param2
0, # param3
0, # param4
home_location[0], # lat
home_location[1], # lon
altitude)
def uploadmission(aFileName):
home_location = None
home_altitude = None
with open(aFileName) as f:
for i, line in enumerate(f):
if i==0:
if not line.startswith('QGC WPL 110'):
raise Exception('File is not supported WP version')
else:
linearray=line.split('\t')
ln_seq = int(linearray[0])
ln_current = int(linearray[1])
ln_frame = int(linearray[2])
ln_command = int(linearray[3])
ln_param1=float(linearray[4])
ln_param2=float(linearray[5])
ln_param3=float(linearray[6])
ln_param4=float(linearray[7])
ln_x=(float(linearray[8]))
ln_y=(float(linearray[9]))
ln_z=float(linearray[10])
ln_autocontinue = int(float(linearray[11].strip()))
if(i == 1):
home_location = (ln_x,ln_y)
home_altitude = ln_z
p = mavutil.mavlink.MAVLink_mission_item_message(master.target_system, master.target_component, ln_seq, ln_frame,
ln_command,
ln_current, ln_autocontinue, ln_param1, ln_param2, ln_param3, ln_param4, ln_x, ln_y, ln_z)
wp.add(p)
cmd_set_home(home_location,home_altitude)
msg = master.recv_match(type = ['COMMAND_ACK'],blocking = True)
print(msg)
print('Set home location: {0} {1}'.format(home_location[0],home_location[1]))
time.sleep(1)
#send waypoint to airframe
master.waypoint_clear_all_send()
master.waypoint_count_send(wp.count())
for i in range(wp.count()):
msg = master.recv_match(type=['MISSION_REQUEST'],blocking=True)
print(msg)
master.mav.send(wp.wp(msg.seq))
#print(wp.wp(msg.seq))
print('Sending waypoint {0}'.format(msg.seq))
uploadmission('mission.txt')