Загрузка данных


import rospy
from clover import srv
from std_srvs.srv import Trigger
from clover.srv import SetLEDEffect

rospy.init_node('flight_mission')

get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
navigate = rospy.ServiceProxy('navigate', srv.Navigate)
land = rospy.ServiceProxy('land', Trigger)
set_effect = rospy.ServiceProxy('led/set_effect', SetLEDEffect)

def wait_arrival():
    while not rospy.is_shutdown():
        telem = get_telemetry(frame_id='navigate_target')
        if (telem.x ** 2 + telem.y ** 2 + telem.z ** 2) ** 0.5 < 0.2:
            break
        rospy.sleep(0.2)

navigate(x=0, y=0, z=1, frame_id='body', auto_arm=True)
rospy.sleep(5)
set_effect(effect='fill', r=255, g=255, b=255)
rospy.sleep(1)

navigate(x=2, y=0, z=1, speed=0.5, frame_id='map')
wait_arrival()

navigate(x=3, y=1, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=255, g=0, b=255)

navigate(x=4.5, y=1.5, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=255, g=165, b=0)

navigate(x=5.5, y=2.5, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=0, g=255, b=255)

navigate(x=5, y=5, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=128, g=0, b=128)

navigate(x=4, y=5, z=1, speed=0.5, frame_id='map')
wait_arrival()

navigate(x=3, y=4, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=255, g=0, b=0)

navigate(x=2, y=5, z=1, speed=0.5, frame_id='map')
wait_arrival()

navigate(x=1, y=5, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=255, g=255, b=0)

navigate(x=0.5, y=2.5, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=0, g=255, b=0)

navigate(x=1.5, y=1.5, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=0, g=0, b=255)

navigate(x=3, y=1, z=1, speed=0.5, frame_id='map')
wait_arrival()
set_effect(effect='fill', r=255, g=0, b=255)

navigate(x=0, y=0, z=1, speed=0.5, frame_id='map')
wait_arrival()

land()
rospy.sleep(5)
set_effect(effect='fill', r=0, g=0, b=0)