Скрипт Manual_speed¶
Скрипт Manual_speed служит для управления Пионером мини по векторам.
from pioneer_sdk import Pioneer import time if __name__ == '__main__': print('start') pioneer_mini = Pioneer() pioneer_mini.arm() pioneer_mini.takeoff() t = time.time() # время старта while True: # 20 раз в сек отправляем команду полёта pioneer_mini.set_manual_speed(vx=0, vy=0, vz=1, yaw_rate=0) time.sleep(0.05) if time.time() - t > 1: # если прошло больше 1 секунды, выходим из цикла break time.sleep(4) # 4 секунды ничего не делаем (дрон в этот момент не должен никуда лететь) t = time.time() # обновляем время старта while True: # 20 раз в сек отправляем команду полёта pioneer_mini.set_manual_speed(vx=1, vy=0, vz=0, yaw_rate=0) time.sleep(0.05) if time.time() - t > 2: # если прошло больше 2 секунд, выходим из цикла break time.sleep(4) # 4 секунды ничего не делаем pioneer_mini.land()
Разбор скрипта¶
- Импортируем необходимые библиотеки и определяем их назначение:
Pioneer_sdk – библиотека для управления квадрокоптером; time – библиотека для работы со временем;from pioneer_sdk import Pioneer import time
- Далее используем конструкцию if __name__ == „__main__“:, которая является точкой входа в программу. Всё, что идёт до этого условия, выполнятся всегда: и при вызове в качестве модуля и при вызове, как исполняемый файл.
Подробное описание данной конструкции: https://docs.python.org/3/library/__main__.htmlif __name__ == '__main__':
- Выводим строку’start“. Создаём экземпляр класса Pioneer, чтобы начать работать с квадрокоптером.
print('start') pioneer_mini = Pioneer()
- Вызываем функцию pioneer_mini.arm() для запуска моторов. Вызываем функцию pioneer_mini.takeoff() для взлёта. Объявляем переменную „t“ и присваиваем ей значение возвращаемое функцией time.time().
pioneer_mini.arm() pioneer_mini.takeoff() t = time.time() # время старта
- Запускаем цикл отправляющий 20 раз в секунду команду полёта.
while True: # 20 раз в сек отправляем команду полёта pioneer_mini.set_manual_speed(vx=0, vy=0, vz=1, yaw_rate=0) time.sleep(0.05) if time.time() - t > 1: # если прошло больше 1 секунды, выходим из цикла break
- Выставляем паузу в 4 секнды и обновляем время старта.
time.sleep(4) # 4 секунды ничего не делаем (дрон в этот момент не должен никуда лететь) t = time.time() # обновляем время старта
- Запускаем цикл отправляющий 20 раз в секунду команду полёта.
while True: # 20 раз в сек отправляем команду полёта pioneer_mini.set_manual_speed(vx=1, vy=0, vz=0, yaw_rate=0) time.sleep(0.05) if time.time() - t > 2: # если прошло больше 2 секунд, выходим из цикла break
- Выставляем паузу в 4 секунды и вызываем функцию посадки pioneer_mini.land().
time.sleep(4) # 4 секунды ничего не делаем pioneer_mini.land()