-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwaypoint_mission.py
51 lines (39 loc) · 1.61 KB
/
waypoint_mission.py
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
from mavsdk import System
from mavsdk.mission import MissionItem, MissionPlan
import asyncio
async def run():
drone = System()
await drone.connect(system_address="serial:///dev/ttyTHS1:57600")
print("Waiting for drone to connect...")
async for state in drone.core.connection_state():
if state.is_connected:
print("Drone connected!")
break
# Define waypoints
mission_items = [
MissionItem(47.397750, 8.545607, 20, 10, True, float('nan'),
float('nan'), MissionItem.CameraAction.NONE, float('nan'), float('nan')),
MissionItem(47.398000, 8.546000, 20, 10, True, float('nan'),
float('nan'), MissionItem.CameraAction.NONE, float('nan'), float('nan')),
MissionItem(47.398250, 8.546500, 20, 10, True, float('nan'),
float('nan'), MissionItem.CameraAction.NONE, float('nan'), float('nan'))
]
mission_plan = MissionPlan(mission_items)
# Upload mission
print("-- Uploading mission")
await drone.mission.upload_mission(mission_plan)
# Arm and start mission
print("-- Arming")
await drone.action.arm()
print("-- Starting mission")
await drone.mission.start_mission()
# Monitor mission progress
async for mission_progress in drone.mission.mission_progress():
print(f"Mission progress: {mission_progress.current}/{mission_progress.total}")
if mission_progress.current == mission_progress.total:
print("-- Mission complete")
break
# Return and land
print("-- Landing")
await drone.action.land()
asyncio.run(run())