Автономный полет¶
В этом разделе описаны основные возможности фреймворка для программирования автономного полета квадрокоптера. Используйте эти функции при создании собственных программ и алгоритмов управления квадрокоптером.
Краткий обзор возможностей фреймворка.
Полёт¶
fcu.arm()/fcu.disarm()— запуск / остановка электродвигателейfcu.is_armed()/fcu.flight_mode()— состояние квадрокоптераoffboard.land()— посадкаoffboard.navigate_wait(frame_id, x, y, z, speed, yaw)— полет в заданную точку с ожиданием прибытияoffboard.navigate(...)— полет в заданную точку без ожидания завершения команды, возвращаетNavigationTasktask.status— состояние задачи:PENDING,ACTIVE,CANCELING,REJECTED,SUCCEEDED,CANCELEDилиABORTEDtask.wait(timeout=None)— дождаться результата; возвращаетTrueпри успешном прибытииtask.cancel()— штатно отменить текущую навигационную цель, без посадкиtask.result/task.message— результат action и сообщение bridgeNavigationTimeoutError— истекло время локального ожидания; полёт продолжаетсяNavigationRejectedError— bridge не принял новую цельNavigationCanceledError— цель была отмененаNavigationAbortedError— навигация прервана ошибкой либо action server недоступен
wait(timeout=...) ограничивает только ожидание результата и не отменяет полёт. Для штатной остановки текущей навигации вызовите task.cancel().
Камера¶
camera(name)— получение клиента камерыget_image(encoding)— получение изображения с камеры в виде массива NumPyget_image_msg()— получение исходного сообщения ROS Imageget_camera_info()— получение данных о калибровке камерыstream(callback)— устанавливливание callback, который вызывается для каждого нового изображения с камеры в виде массива NumPystream_msg(callback)— устанавливливание callback, который вызывается для каждого нового сообщения ROS Image
LED-лента¶
rainbow(period, brightness, duration)— запуск анимации с эффектом радугиblink(r, g, b, period, brightness, duration)— мигание светодиодамиsolid_color(r, g, b, brightness, duration)— включение одного цветаclear()— выключение LED-лентыfill(r, g, b)— заполнение ленты одним цветомsend_frame(colors, brightness)— управление каждым светодиодом отдельноled_count— количество светодиодов в ленте
Дисплей¶
display()— получить клиент дисплеяsend_image(image)— отправить ROS-сообщениеsensor_msgs.msg.Imagesend_cv_image(image, encoding)— отправить изображение OpenCV / numpy-массивwidth/height— требуемое разрешение кадраmax_fps— максимальная частота кадровsupported_encodings— поддерживаемые кодировки изображений