Advertisement
fuccpuff

Untitled

Nov 19th, 2024 (edited)
8
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import rospy
  2. from clover import srv
  3. from std_srvs.srv import Trigger
  4. import math
  5.  
  6. rospy.init_node('flight')
  7.  
  8. get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
  9. navigate = rospy.ServiceProxy('navigate', srv.Navigate)
  10. land = rospy.ServiceProxy('land', Trigger)
  11.  
  12. def wait_arrival(tolerance=0.2):
  13. while not rospy.is_shutdown():
  14. telem = get_telemetry(frame_id='navigate_target')
  15. if math.sqrt(telem.x ** 2 + telem.y ** 2 + telem.z ** 2) < tolerance:
  16. break
  17. rospy.sleep(0.2)
  18. rospy.sleep(2)
  19.  
  20. # Взлетаем на высоту 2 метра
  21. navigate(x=0, y=0, z=2, frame_id='body', auto_arm=True)
  22. wait_arrival()
  23.  
  24. # Пролет по квадрату (5 метров на сторону)
  25. navigate(x=5, y=0, z=0, frame_id='body')
  26. wait_arrival()
  27.  
  28. navigate(x=0, y=5, z=0, frame_id='body')
  29. wait_arrival()
  30.  
  31. navigate(x=-5, y=0, z=0, frame_id='body')
  32. wait_arrival()
  33.  
  34. navigate(x=0, y=-5, z=0, frame_id='body')
  35. wait_arrival()
  36.  
  37. # Возвращение в исходную точку (центральную метку)
  38. navigate(x=0, y=0, z=0, frame_id='body')
  39. wait_arrival()
  40.  
  41. # Получаем телеметрию и выводим её в консоль
  42. telemetry = get_telemetry()
  43. print(f"Telemetry: x={telemetry.x}, y={telemetry.y}, z={telemetry.z}, yaw={telemetry.yaw}, vx={telemetry.vx}, vy={telemetry.vy}, vz={telemetry.vz}")
  44.  
  45. # Посадка
  46. land()
  47.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement