Advertisement
fuccpuff

flight

Nov 17th, 2024 (edited)
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import rospy
  3. from clover import srv
  4. from std_srvs.srv import Trigger
  5. from math import sqrt
  6.  
  7. # Инициализация ROS-узла
  8. rospy.init_node('flight_mission')
  9.  
  10. # Подключение к сервисам Clover
  11. get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
  12. navigate = rospy.ServiceProxy('navigate', srv.Navigate)
  13. navigate_wait = rospy.ServiceProxy('navigate_wait', Trigger)
  14. land = rospy.ServiceProxy('land', Trigger)
  15.  
  16. def wait_arrival():
  17. """Ожидает, пока дрон не достигнет заданной позиции."""
  18. rospy.wait_for_service('navigate_wait')
  19. try:
  20. res = navigate_wait()
  21. if not res.success:
  22. rospy.logerr("Navigation failed!")
  23. except rospy.ServiceException as e:
  24. rospy.logerr(f"Service call failed: {e}")
  25.  
  26. # Получение стартовой позиции
  27. rospy.loginfo("Getting start position...")
  28. telemetry_start = get_telemetry(frame_id='map')
  29. start_x = telemetry_start.x
  30. start_y = telemetry_start.y
  31. start_z = telemetry_start.z
  32. rospy.loginfo(f"Start position recorded: x={start_x}, y={start_y}, z={start_z}")
  33.  
  34. # [1] Взлет на высоту 1 метр
  35. rospy.loginfo("Taking off to 1 meter...")
  36. navigate(x=0, y=0, z=1, yaw=float('nan'), frame_id='body', auto_arm=True)
  37. wait_arrival()
  38.  
  39. # [2] Полет в точку (5, 5, 5)
  40. rospy.loginfo("Flying to point (5, 5, 5)...")
  41. navigate(x=5, y=5, z=5, yaw=float('nan'), frame_id='map')
  42. wait_arrival()
  43.  
  44. # [3] Полет в точку (3, 3, 3)
  45. rospy.loginfo("Flying to point (3, 3, 3)...")
  46. navigate(x=3, y=3, z=3, yaw=float('nan'), frame_id='map')
  47. wait_arrival()
  48.  
  49. # [4] Возврат к стартовой точке
  50. rospy.loginfo("Returning to start position...")
  51. navigate(x=start_x, y=start_y, z=1, yaw=float('nan'), frame_id='map')
  52. wait_arrival()
  53.  
  54. # Посадка
  55. rospy.loginfo("Landing...")
  56. land()
  57. rospy.loginfo("Mission completed successfully.")
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement