Files
clever-show/docs/ru/client.md
2019-12-26 02:41:17 +03:00

16 KiB
Raw Blame History

Клиент

Приложение для удаленного синхронизированного управления дронами в шоу.

Настройка клиента

Файл конфигурации

Конфигурация клиента задаётся в файле client_config.ini, имеющем следующий вид по умолчанию:

[SERVER]
port = 25000
broadcast_port = 8181
host = 192.168.1.101
buffer_size = 1024

[VISUAL_POSE_WATCHDOG]
timeout = 1.0
action = emergency_land
emergency_land_thrust = 0.45
emergency_land_decrease_thrust_after = 5.0
timeout_to_disarm_after_watchdog_action = 10.0

[TELEMETRY]
frequency = 1
transmit = True
land_if_pos_delta_bigger_than = 3.0
log_cpu_and_memory = True

[COPTERS]
frame_id = map
takeoff_height = 1.0
takeoff_time = 5.0
safe_takeoff = False
reach_first_point_time = 5.0
land_time = 1.0
x0_common = 0
y0_common = 0
z0_common = 0
yaw = 180
land_timeout = 10.0

[FLOOR FRAME]
parent = aruco_map
x = 2.4
y = 12.4
z = 6.4
roll = 180
pitch = 0
yaw = -90

[ANIMATION]
takeoff_animation_check = True
land_animation_check = True
frame_delay = 0.1
x_ratio = 1.0
y_ratio = 1.0
z_ratio = 1.0

[PRIVATE]
id = /hostname
restart_dhcpcd = True
use_leds = True
led_pin = 21
x0 = 0
y0 = 0
z0 = 0

[FILETRANSFER]
files_directory = animation
animation_file = animation.csv

[NTP]
use_ntp = False
host = ntp1.stratum2.ru
port = 123

Конфигурация по умолчанию является полностью работоспособной и не требует изменений для быстрого старта клиента.

Для централизованной загрузки конфигурации на все коптеры нужно использовать пункт меню Send configurations на сервере. Допускается загрузка неполного файла параметров конфигурации, с отсутствующими разделами или параметрами относительно конфигурации по умолчанию.

Раздел SERVER

В этом разделе задаются параметры сетевого взаимодействия клиента с сервером. Доступны следующие параметры:

  • port - TCP порт, на который будут приниматься входящие соединения от сервера. При использовании настройки use_broadcast на сервере, данный порт будет сконфигурирован у клиента автоматически. Рекомендуется изменить значение по умолчанию в целях безопасности (любое пятизначное и более число, если другое ПО не использует выбранный порт).
  • broadcast_port - UDP порт, на который по широковещательному каналу сервер передаёт свои настройки. С помощью данного механизма возможно автоматическое подключение клиента к серверу.
  • host - IP адрес сервера.
  • buffer_size - размер буфера при приёме и передаче данных. Не рекомендуется изменять. Рекомендуется использовать единое значение у сервера и клиентов.

Раздел VISUAL_POSE_WATCHDOG

В данном разделе настраивается программа экстренной защиты коптера от потери позиции или столкновения с объектом.

  • timeout - время срабатывания экстренной защиты после потери визуальной позиции, в секундах.
  • action - действие при срабатывании экстренной защиты. Доступные варианты: land - посадка коптера в режиме полётного контроллера AUTO.LAND, emergency_land - посадка коптера с постепенным уменьшением мощности моторов, disarm- выключение моторов.
  • emergency_land_thrust - начальная мощность, подаваемая на моторы в случае выбора действия emergency_land при срабатывании экстренной защиты, в процентах.
  • emergency_land_decrease_thrust_after - время, через которое мощность на моторах плавно начинает уменьшаться в случае выбора действия emergency_land при срабатывании экстренной защиты, в процентах.
  • timeout_to_disarm_after_watchdog_action - время, через которое коптер безусловно выключает моторы после срабатывания экстренной защиты, в секундах.

Раздел TELEMETRY

В данном разделе настраивается поток передачи телеметрии на сервер.

  • frequency - частота передачи данных на сервер, целочисленное значение, количество раз в секунду.
  • transmit - логическое значение, определяет, нужно ли передавать данные на сервер.
  • land_if_pos_delta_bigger_than - проверка на столкновение коптера с объектом. Работает в цикле телеметрии. Если расстояние между текущим положением коптера и положением, в котором он должен сейчас находиться, больше этого числа (в метрах), коптер очищает очередь задач и переходит в режим AUTO.LAND.
  • log_cpu_and_memory - логическое значение, которое определяет, будет ли записываться в лог сервиса клиента clever-show состояние процессора и памяти.

Раздел COPTERS

  • frame_id - название системы координат, в которой настроен коптер на удержание позиции. Если значение floor - клиент публикует статическую систему координат с названием floor и настройками из раздела FLOOR_FRAME.
  • takeoff_height - высота взлёта коптера, в метрах. Используется в начале анимации или при тестировании коптера с сервера.
  • takeoff_time - максимальное время взлёта коптера, в секундах.
  • safe_takeoff - логическое значение, определяет, нужно ли производить посадку в безопасном режиме.
  • reach_first_point_time - максимальное время полёта к первой точке анимации, в секундах.
  • land_time - время зависания в конечной точке анимации перед посадкой, в секундах.
  • x0_common - смещение по оси x, общее для всех коптеров, в метрах.
  • y0_common - смещение по оси y, общее для всех коптеров, в метрах.
  • z0_common - смещение по оси z, общее для всех коптеров, в метрах.
  • yaw - поворот коптера при полёте по точкам, в градусах. Если значение nan - коптер сохраняет изначальную ориентацию в полёте.
  • land_timeout - время таймаута посадки, после которого происходит выключение моторов коптера, в секундах.

Раздел FLOOR_FRAME

  • parent - название опорной системы координат, относительно которой будет располагаться система координат floor.
  • x - смещение системы координат floor по оси x относительно системы координат parent, в метрах.
  • y - смещение системы координат floor по оси y относительно системы координат parent, в метрах.
  • z - смещение системы координат floor по оси z относительно системы координат parent, в метрах.
  • roll - поворот системы координат floor вокруг оси x относительно системы координат parent, в градусах.
  • pitch - поворот системы координат floor вокруг оси y относительно системы координат parent, в градусах.
  • yaw - поворот системы координат floor вокруг оси z относительно системы координат parent, в градусах.

Внимание! Повороты roll, pitch, yaw производятся последовательно в указанном порядке.

Раздел ANIMATION

В данном разделе настраивается обработка анимации.

  • takeoff_animation_check - логическое значение, определяет, будет ли производиться автоматическая обработка старта анимации. Если значение True, при загрузке анимации проверяется взлёт коптеров. Если в файле анимации коптер взлетает с земли, при старте анимации будет применена логика немедленного воспроизведения: коптер сразу начинает следовать точкам, указанным в анимации. Если в файле анимации коптер начинает полёт в воздухе, при старте анимации будет применена логика полёта к первой точке: коптер в начале взлетает на высоту takeoff_height за время takeoff_time, затем перемещается к первой точке за время reach_first_point_time, и затем начинает следовать точкам, указанным в анимации. Если значение False, при загрузке анимации не проверяется взлёт коптеров, а при старте анимации действует логика полёта к первой точке.
  • land_animation_check - логическое значение, определяет, будет ли производиться автоматическая обработка завершения анимации. Если значение True, при загрузке анимации проверяется посадка коптеров. Если в файле анимации коптер садится на землю и стоит до завершения анимации, проверка удалит все точки в анимации после начала посадки коптера. Таким образом, коптер в конце анимации зависнет над точкой посадки на время land_time, сядет автоматически и выключит моторы. Если значение False, при загрузке анимации не проверяется посадка коптеров и точкой посадки считается последняя точка в анимации. Например, если анимация посадки нарисована полностью и коптер стоит после посадки на земле некоторое время, а значение данного параметра False, всё это время у коптера будут включены моторы и он будет пытаться удержать указанную позицию посадки вплоть до завершении файла анимации, затем через время land_time перейдёт в редим посадки.
  • frame_delay - время воспроизведения одного кадра в секундах.
  • x_ratio - масштаб анимации по оси x
  • y_ratio - масштаб анимации по оси y
  • z_ratio - масштаб анимации по оси z

Раздел PRIVATE

  • id - имя коптера, отображаемое в таблице. Если значение /hostname - имя определяется из файла /etc/hostname.
  • restart_dhcpcd - логический параметр, определяет, требуется ли перезагрузка коптера при переименовании его id удалённо с сервера.
  • use_leds - логический параметр, определяет, использует ли коптер светодиодную ленту.
  • led_pin - номер пина GPIO на Raspberry Pi, к которому подключена светодиодная лента.
  • x0 - смещение по оси x, только для данного коптера.
  • y0 - смещение по оси y, только для данного коптера.
  • z0 - смещение по оси z, только для данного коптера.

Раздел FILETRANSFER

В этом разделе задаются параметры передачи файлов.

  • files_directory - директория для хранения файлов анимации (сейчас не используется).
  • animation_file - название файла анимации, сохраняемое в клиенте.

Раздел NTP

Помимо синхронизации времени (с миллисекундной точностью) с помощью пакета chrony, предоставляется альтернатива - возможность использования внешних (при наличии соединения локальной сети с интернетом) или внутрисетевых NTP-серверов. Внимание! Для корректной работы системы, и сервер, и клиенты должны использовать единый способ синхронизации времени (набор параметров в этом разделе). Данный раздел полностью унифицирован и для сервера, и для клиентов.

  • use_ntp - определяет, будет ли использоваться синхронизация времени с помощью NTP. (при значении False будет использовано локальное время ОС (синхронизируется автоматически при использовании chrony). Рекомендуется использование chrony, а не NTP
  • host - имя хоста или IP адрес NTP сервера (локального или удаленного)
  • port - порт, используемый NTP сервером