HolyC0w

lab5_pt2_simulateMission_usingWaypoints

Apr 12th, 2023
982
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.87 KB | None | 0 0
  1. ######### Program to simulate a mission using series of waypoints
  2. from dronekit import connect, VehicleMode, LocationGlobalRelative
  3. import time
  4.  
  5. # Connect to the vehicle
  6. vehicle = connect('udp:127.0.0.1:14550')
  7.  
  8. # Arm and take off
  9. vehicle.mode = VehicleMode("GUIDED")
  10. vehicle.armed = True
  11. vehicle.simple_takeoff(10)
  12.  
  13. # Wait for the drone to reach a certain altitude
  14. while True:
  15.     altitude = vehicle.location.global_relative_frame.alt
  16.     if altitude >= 9.5:  # target altitude - 0.5 meters
  17.         break
  18.     time.sleep(1)
  19.  
  20. # Define the mission waypoints
  21. waypoints = [
  22.     LocationGlobalRelative(37.793105, -122.398768, 20),
  23.     LocationGlobalRelative(37.793109, -122.398824, 20),
  24.     LocationGlobalRelative(37.793095, -122.398857, 20),
  25.     LocationGlobalRelative(37.793057, -122.398843, 20),
  26.     LocationGlobalRelative(37.793042, -122.398797, 20),
  27.     LocationGlobalRelative(37.793050, -122.398751, 20),
  28.     LocationGlobalRelative(37.793084, -122.398722, 20),
  29.     LocationGlobalRelative(37.793119, -122.398724, 20)
  30. ]
  31.  
  32. # Fly the mission
  33. for wp in waypoints:
  34.     vehicle.simple_goto(wp)
  35.     while True:
  36.         distance = vehicle.location.global_relative_frame.distance_to(wp)
  37.         if distance <= 1:  # target radius in meters
  38.             break
  39.         time.sleep(1)
  40.  
  41. # Land the drone
  42. vehicle.mode = VehicleMode("LAND")
  43.  
  44. # Close the connection
  45. vehicle.close()
  46. #####################################################################
  47. #####################################################################
  48. from dronekit import connect, VehicleMode, LocationGlobalRelative
  49. import time, math
  50.  
  51. vehicle = connect('udp:127.0.0.1:14550')
  52.  
  53. # prep for liftoff
  54. vehicle.mode = VehicleMode("GUIDED")
  55. vehicle.armed = True
  56. vehicle.simple_takeoff(10)
  57.  
  58. # let the drone cook
  59. while True:
  60.     altitude = vehicle.location.global_relative_frame.alt
  61.     if altitude >= 9.5:  # target altitude - 0.5 meters
  62.         break
  63.     time.sleep(1)
  64.  
  65. # points to be crossed during flight
  66. waypoints = [
  67.     LocationGlobalRelative(37.6210, -122.3880, 20),
  68.     LocationGlobalRelative(37.6225, -122.3860, 20),
  69.     LocationGlobalRelative(37.6235, -122.3840, 20),
  70.     LocationGlobalRelative(37.6245, -122.3820, 20),
  71.     LocationGlobalRelative(37.6255, -122.3800, 20),
  72.     LocationGlobalRelative(37.6265, -122.3780, 20),
  73.     LocationGlobalRelative(37.6275, -122.3760, 20),
  74.     LocationGlobalRelative(37.6285, -122.3740, 20)
  75. ]
  76.  
  77. def distance_to(self, other):
  78.     dlat = other.lat - self.lat
  79.     dlong = other.lon - self.lon
  80.     return math.sqrt((dlat*dlat) + (dlong*dlong)) * 1.113195e5
  81.  
  82.  
  83. # LETSGOOO
  84. for wp in waypoints:
  85.     vehicle.simple_goto(wp)
  86.     while True:
  87.         if distance_to(vehicle.location.global_relative_frame, wp) <= 1.0:
  88.             print("Reached target location")
  89.             break
  90.         time.sleep(1)
  91.  
  92. # land
  93. vehicle.mode = VehicleMode("LAND")
  94.  
  95. vehicle.close()
  96.  
Advertisement
Add Comment
Please, Sign In to add comment