Пакет gs_flight

Описание

Данный пакет предоставляет инструменты для взаимодействия с автопилотом.

Состав пакета

Классы

  • FlightController

  • CallbackEvent

Описание классов

FlightController

Класс взаимодействия с автопилотом

Создание объекта класса

class FlightController
fc = FlightController(callback)
Аргументы:

callback-функция

Результат:

объект класса FlightController

Cоздаёт объект класса FlightController.

Доступные поля класса

  • __alive - rospy.ServiceProxy: gs_interfaces.srv.Live

  • __event_service - rospy.ServiceProxy: gs_interfaces.srv.Event

  • __yaw_service - rospy.ServiceProxy: gs_interfaces.srv.Yaw

  • __local_position_service- rospy.ServiceProxy: gs_interfaces.srv.Position

  • __global_position_service - rospy.ServiceProxy: gs_interfaces.srv.PositionGPS

  • __callback_event - rospy.Subscriber: std_msgs.msg.Int32

Описание методов

classmethod goToLocalPoint()
Аргументы:

x,y,z,time - координаты в локальной системе позиционирования, время полёта в точку

Результат:

bool

Приказывает автопилоту лететь в локальные координаты, x - координата точки по оси x, в метрах , y - координата точки по оси y, в метрах, z- координата точки по оси z, в метрах, time - время, за которое коптер перейдет в следующую точку, в секундах. Если значение не указано, коптер стремится к точке с максимальной скоростью

classmethod goToPoint()
Аргументы:

latitude,longitude,altitude

Результат:

bool

Приказывает автопилоту лететь в GPS координаты, latitude – задается широта в градусах, умноженных на 10^(-7), longitude – задается долгота в градусах, умноженных на 10^(−7), altitude – задается высота в метрах

classmethod updateYaw()
Аргументы:

angle - угол поворота в радианах

Результат:

bool

Устанавливает рыскание

classmethod preflight()
Аргументы:

нет

Результат:

bool

Приказывает автопилоту выполнить предвзлётную подготовку

classmethod takeoff()
Аргументы:

нет

Результат:

bool

Приказывает автопилоту выполнить взлёт

classmethod landing()
Аргументы:

нет

Результат:

bool

Приказывает автопилоту произвести посадку

classmethod disarm()
Аргументы:

нет

Результат:

bool

Приказывает автопилоту заглушить двигатели

Используемые сервисы ROS

  • geoscan/alive (gs_interfaces/Live)

  • geoscan/flight/set_event (gs_interfaces/Event)

  • geoscan/flight/set_yaw (gs_interfaces/Yaw)

  • geoscan/flight/set_local_position (gs_interfaces/Position)

  • geoscan/flight/set_global_position (gs_interfaces/PositionGPS)

Используемые топики ROS

  • geoscan/flight/callback_event (std_msgs/Int32)

CallbackEvent

Энумератор событий автопилота

Доступные значения

  • ALL - пустое событие

  • COPTER_LANDED - приземлился

  • LOW_VOLTAGE1 - низкий заряд АКБ, но заряда хватит, чтобы вернуться домой

  • LOW_VOLTAGE2 - низкий заряд АКБ, начата экстренная посадка

  • POINT_REACHED - точка достигнута

  • POINT_DECELERATION - близко к заданной точке

  • TAKEOFF_COMPLETE - взлет выполнен

  • ENGINES_STARTED - двигатели запущены

  • SHOCK - сильный удар, возможна потеря управления

Необходимые пакеты

Python:

  • gs_board

  • gs_flight

  • gs_module

  • gs_logger

  • gs_sensors

  • gs_navigation

ROS:

  • gs_interfaces

  • gs_core

  • std_msgs

  • geometry_msgs

Примечание

Все классы в данном пакете могут быть использованы только при запущеной ноде ros_plaz_node.py из пакета gs_core