Files
clever-show/docs/ru/server.md
2019-12-24 19:45:25 +03:00

32 KiB
Raw Blame History

Настройка сервера

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

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

[SERVER]  
port = 25000  
buffer_size = 1024
remove_disconnected = False

[CHECKS]
battery_percentage_min = 50.0
start_pos_delta_max = 1.0
time_delta_max = 1.0
  
[BROADCAST]  
use_broadcast = True  
broadcast_port = 8181  
broadcast_delay = 5.0
  
[NTP]  
use_ntp = False  
host = ntp1.stratum2.ru  
port = 123

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

Раздел [SERVER]

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

  • port - TCP порт, на котором будут приниматься входящие соединения от клиентов (коптеров). При использовании broadcast данный порт будет сконфигурирован у клиента автоматически. Рекомендуется изменить значение по умолчанию в целях безопасности (любое пятизначное и более число, если другое ПО не использует выбранный порт).
  • buffer_size - размер буфера при приёме и передаче данных. Не рекомендуется изменять. Рекомендуется использовать единое значение у сервера и клиентов.
  • remove_disconnected - Определяет поведение при разрыве связи с клиентом. При значении True вся информация о клиенте будет удалена как из внутренней памяти, так и из таблицы. Это может привести к 'скачкам' таблицы при отключении клиентов. При значении False отключённые клиенты не будут удалены из таблицы, но будут отображены с подсвечиванием ячейки в столбце copter ID красным цветом. Все данные будут сохранены. При переподключении клиента, он будет ассоциирован с той же строкой таблицы, а ячейка со значением copter ID вновь станет зелёного цвета.

Раздел [CHECKS]

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

  • battery_percentage_min - Минимальный заряд батарии коптера, допустимый для взлёта. Указывается в процентах (дробное значение от 0 до 100). Значение меньше указанного будет отмечено в столбце battery как неудовлетворительное.
  • start_pos_delta_max - Максимальное расстояние от текущего положения коптера до его точки взлёта в файле анимации, допустимое для взлёта. Указывается в метрах (дробное значение от 0 до 'inf'). Значение больше указанного будет отмечено в столбце start x y z как неудовлетворительное. Допустимо использование строки 'inf' для любого допустимого расстояния.
  • time_delta_max - Максимальная разница (абсолютное значение) между временем сервера и клиента (включая сетевую задержку), допустимая для взлёта. Указывается в секундах (дробное значение от 0 до 'inf'). Значение больше указанного будет отмечено в столбце dt как неудовлетворительное.

Раздел [BROADCAST]

Сервер может использовать UDP broadcast, чтобы передавать клиентам актуальную информацию о конфигурации сервера. Таким образом становится возможным автоматическое подключение клиентов к серверу без необходимости дополнительной ручной конфигурации. В данном разделе задаются параметры этого механизма:

  • use_broadcast - будут ли использованы broadcast'ы для передачи данных (при значении False broadcast'ы НЕ будут отправляться). Используйте False в случае повышенных требований безопасности, перегруженности сети или невозможности передачи по широковещательному каналу (из-за конфигурации брандмауэра или сети)
  • broadcast_port - UDP порт, по которому будет осуществляться отправка сообщений. Рекомендуется изменить значение по умолчанию в целях безопасности. Внимание! При изменении этого параметра клиенты НЕ смогут принимать сообщения автоконфигурации до изменения (вручную) соответствующего параметра в конфигурации клиента на равное значение.
  • broadcast_delay - периодичность (в секундах, целочисленное значение), с которой будет происходить отправка broadcast сообщений. Увеличьте задержку для уменьшения нагрузки на сеть. Уменьшите задержку для уменьшения времени отклика и подключения при первом запуске клиентов.

Раздел [NTP]

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

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

Интерфейс сервера

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

Интерфейс сервера

Глоссарий

Некоторые термины, используемые для краткости записи:

  • Удовлетворительный - прошедший проверку определённых условий. В таблице отмечается зелёным цветом.
  • Готовый к полёту: прошедший предполётную проверку и имеющий удовлетворительные результаты по всем столбцам, кроме animation ID и dt.
  • Готовый к воспроизведению анимации: прошедший предполётную проверку и имеющий удовлетворительные результаты по всем столбцам.
  • FCU - Flight Controller Unit, полётный контроллер.

Меню

Раздел 'Server'

Скриншот меню

Данный раздел содержит несколько утилит по отправке различных данных на выбранные клиенты. Внимание! Не пытайтесь использовать данные команды во время полёта коптеров!

  • Send Animations - отправка файлов анимации (экспортированных аддоном к Blender) на выбранные клиенты (коптеры). В диалоговом окне необходимо выбрать папку, содержащую файлы анимации (автоматически создается аддоном). Каждый файл анимации будет отправлен на клиент с именем (copter ID), соответствующим имени файла без расширения.
  • Send Configurations - отправка единого файла конфигурации клиента на все выбранные клиенты. В диалоговом окне необходимо выбрать один файл конфигурации в установленном формате. Файл конфигурации может быть неполным, в таком случае будут перезаписаны лишь указанные в файле параметры. Не рекомендуется использовать данное действие для массовой перезаписи Copter ID , кроме значения /hostname. Внимание! НЕ отправляйте на клиенты файл конфигурации сервера.
  • Send Launch files - отправка launch-файлов конфигурации сервиса clever. В диалоговом окне необходимо выбрать папку, содержащую файлы конфигурации с сширением .launch. Все файлы с таким расширением будут отправлены на каждый из клиентов. Внимание! Существующие файлы конфигурации на коптерах будут перезаписаны, однако файлы, не отправленные сервером, не будут удалены или модифицированы.
  • Send Aruco map - отправка единого файла карты aruco маркеров на все выбранные клиенты. В диалоговом окне необходимо выбрать один файл карты в установленном формате. Файл на клиенте будет перезаписан. После получения и записи файла клиент автоматически перезапустит сервис clever. Для возобновления работоспособности полётных функций и получения некоторых значений телеметрии необходимо подождать некоторое время до полного запуска сервиса.
  • Send Camera Calibrations - отправка yaml-файлов калибровки камеры для сервиса clever. В диалоговом окне необходимо выбрать папку, содержащую файлы конфигурации с расширением .yaml. Каждый файл калибровки будет отправлен на клиент с именем (copter ID), соответствующим имени файла без расширения. Внимание! Существующий файл калибровки на коптере будет перезаписан.
  • Send FCU parameters - отправка и запись единого файла конфигураций полётного контроллера (FCU) на все выбранные клиенты. В диалоговом окне необходимо выбрать один файл параметров в установленном формате. Параметры на полётном контроллере будут перезаписаны.
  • Developer mode: Внимание! Используйте данные действия с большой осторожностью.
    • Send any file - отправка одного любого файла на все выбранные клиенты. В диалоговом окне необходимо выбрать один файл. Далее, необходимо указать путь, по которому данный файл будет записан на клиенты (не включая имя файла).
    • Send any command - отправка и выполнение любой команды терминала на все выбранные клиенты. В диалоговом окне необходимо ввести требуемую команду. Команды могут использовать sudo-права.
  • Select all drones (Ctrl+A) Выделяет все коптеры в таблице. При следующем вызове команды, выделение всех коптеров будет отменено.

Раздел 'Drone'

Скриншот раздела

  • Set Z offfset to ground - Устанавливает собственный offset (отступ) каждого из выбранных клиентов на значение, равное текущему положению по координате Z
  • Reset Z offfset - Устанавливает собственный offset (отступ) каждого из выбранных клиентов на значение 0
  • Restart chrony - Перезапускает сервис синхронизации времени chrony на выбранных клиентах.
  • Remove from table - Удаляет выбранные коптеры из таблицы. Внимание! В случае, если клиент был подключен, будет произведено отключение. В случае если удалённый таким образом клиент исправно функционировал, он переподключится в кратчайшие сроки.
  • Developer mode: Внимание! Используйте данные действия с большой осторожностью
    • Restart clever service - Перезапускает сервис clever на выбранных клиентах. Для возобновления работоспособности полётных функций и получения некоторых значений телеметрии необходимо подождать некоторое время до полного запуска сервиса.
    • Restart clever-show service - Перезапускает сервис шоу коптеров (клиента) clever-show на выбранных клиентах. Во время перезапуска клиенты будет отключены.
    • Update clever-show git - Обновляет папку репозитория clever-show на выбранных клиентах. Файлы конфигурации клиента не будут перезаписаны. Внимание! Для того, чтобы изменения вступили в силу, необходимо перезапустить сервис clever-show.
    • Reboot all - Полностью перезагружает систему выбранных клиентов. Во время перезапуска клиенты будет отключены.

Раздел 'Animation'

Скриншот раздела

  • Set start X Y to current position - Устанавливает точку старта анимации у выбранных клиентов на значения текущей позиции по X Y.
  • Reset start position - Устанавливает точку старта анимации у выбранных клиентов на значения 0.0, 0.0.

Раздел 'Music'

Скриншот раздела

  • Select music file - Загружает выбранный музыкальный файл (поддерживаемые расширения: .mp3, .wav) для дальнейшего воспроизведения вручную или через определённое время после старта анимации.

  • Play music - Воспроизводит загруженную музыку.

  • Stop music - Останавливает воспроизведение проигрываемой музыки.

Боковая панель инструментов (команд)

Управление

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

  • Спинбокс Start after - Задаёт время задержки синхронного запуска выполнения анимаций коптерами после нажатия на кнопку Start animation. Для загруженных\подверженных помехам\имеющих большой пинг сетей рекомендуется использовать значения больше нуля.
  • Спинбокс Music after - Задаёт время задержки запуска музыки после нажатия на кнопку Start animation.
  • Чекбокс Play music - Определяет, будет ли воспроизведена музыка при запуске анимации.
  • Кнопка Preflight check - Все выбранные клиенты выполняют самодиагностику и предполётную проверку. Результаты, вместе с другими параметрами клиента, будут отображены в таблице по мере поступления данных. Необходима в том случае, если на клиенте не настроена автоматическая передача телеметрии.
  • Кнопка Start animation - По истечению заданного в спинбоксе Start after времени, все выбранные коптеры начинают синхронное воспроизведение анимации. По окончанию анимации все коптеры выполнят посадку на месте окончания своей анимации. Кнопка активна только в том случае, если все коптеры готовы к воспроизведению анимации. При нажатии запрашивается дополнительное предупреждение.
  • Pause/Resume - Позволяет ставить на паузу и возобновлять выполнение полётных задач. После каждого нажатия кнопка меняет состояние на обратное.
    • СостояниеPause - Ставит на паузу очередь заданий всех выбранных коптеров: приостанавливается выполнение любого полётного задания. Рекомендуется использовать в чрезвычайных ситуациях для определения неисправного коптера. Внимание! Данная команда НЕ прерывает полёт коптера в уже указанную точку (например: элементы взлёта, посадки; следование до начальной точки анимации и т.д.)
    • Состояние Resume - Все выбранные коптеры синхронизированно продолжат выполнение своих очередей заданий (например исполнение анимации)
  • Кнопка Stop and land all - Прерывает выполнение полётных заданий ВСЕХ подключенных коптеров. Сбрасывает очередь заданий - действие необратимо. Выполняет полную остановку и немедленную посадку коптеров. Используйте в экстренных случаях как одно из средств перехвата.
  • Кнопка Emergency land - Открывает диалоговое окно дополнительного модуля быстрого выбора коптера и его последующей экстренной посадки \ дизарма. Полное описание в конце статьи.
  • Кнопка Disarm selected - все выбранные коптеры прекращают выполнение своих полётных заданий, очищают очередь заданий и немедленно отключают моторы (disarm). Это может привести к падению и повреждению коптеров.
  • Кнопка Disarm ALL - ВСЕ коптеры прекращают выполнение своих полётных заданий, очищают очередь заданий и немедленно отключают моторы (disarm). Это может привести к падению и повреждению коптеров Используйте в крайних случаях как последнее из средств перехвата.

Полётные функции (команды)

В данном разделе находятся команды, позволяющие напрямую управлять коптером(ами).

  • Кнопка Test leds - Все выбранные коптеры выполняют двухсекундную анимацию (бегущие точки) светодиодной лентой (белым цветом). Команда безопасна и может быть использована для проверки работы светодиодных лент \ качества и задержки подключения к серверу \ определения соответствия коптера и его Copter ID в таблице.
  • Кнопка Takeoff - Все выбранные коптеры совершают вертикальный взлёт, после чего зависают над точкой взлёта. Кнопка активна, только если все выбранные коптеры готовы к полёту. Внимание! Используйте осторожно, соблюдайте технику безопасности. Не применяйте во время выполнения других полётных функций!
    • Чекбокс Z - Если чекбокс активен, коптер взлетит в указанное значение по z. Иначе коптерами будут использоваться значения по умолчанию, указанные в их конфигурациях, а взлёт будет производиться относительно текущей высоты.
    • СпинбоксZ - Задаёт значение координаты z взлёта коптеров в метрах.
  • Кнопка Flip - Все выбранные коптеры совершают флип (flip) - переворот на 360 градусов вокруг одной из горизонтальных осей. Внимание! Используйте осторожно, соблюдайте технику безопасности. Для исполнения флипа коптер должен иметь минимальную высоту >2м. Не применяйте во время выполнения других полётных функций!
  • Кнопка Land - Все выбранные коптеры прекращают выполнение своих полётных заданий, очищают очередь заданий и немедленно переходят в режим посадки. Используйте в экстренных случаях как одно из средств перехвата.

Системные команды

  • Кнопка Reboot FCU - перезагружает полётные контроллеры всех выбранных коптеров. Для возобновления работоспособности полётных функций и получения некоторых значений телеметрии необходимо подождать некоторое время до перезагрузки полётного контроллера.
  • Кнопка Calibrate gyro - переводит полётные контроллеры всех выбранных коптеров в режим калибровки гироскопа. Коптеры должны быть неподвижны в течение калибровки.
  • Кнопка Calibrate level - переводит полётные контроллеры всех выбранных коптеров в режим калибровки уровня горизонта. Коптеры должны быть неподвижны в течение калибровки.

Таблица состояния коптеров (клиентов)

При первом подключении клиента к серверу в таблицу добавляется строка для отображения состояния клиента, содержащая начальные данные, переданные клиентом при подключении (Copter ID). Строки можно сортировать по возрастанию \ убыванию значений любого из столбцов (кликнув по заголовку столбца).

Ячейки таблицы подсвечиваются:

  • жёлтым, если необходимое значение отсутствует
  • красным, если значение (состояние) ячейки неудовлетворительно (согласно внутренним проверкам)
  • зелёным, если значение (состояние) ячейки удовлетворительно (согласно внутренним проверкам)

Столбцы таблицы

  • copter ID - идентификатор клиента. Может быть сконфигурирован на стороне клиента. Отображается сразу при подключении клиента. Рядом с каждым ID коптера расположен чекбокс - коптеры, чей ID отмечен чекбоксом положительно (галочка), считаются выбранными.
  • version - хеш-код текущей git версии клиента.
  • animation ID - внутреннее название файла анимации, подгруженного клиентом. Отображается после выполнения selfcheck. Проверьте соответствие названий файлов анимаций у коптеров перед запуском.
  • battery V - абсолютное значение напряжения на аккумуляторе коптера в вольтах по данным полётного контроллера. Убедитесь, что напряжение не ниже порогового для вашего аккумулятора. При критически низком значении коптер считается не готовым - блокируется возможность взлёта и старта анимации.
  • battery % - относительное значение напряжения на аккумуляторе коптера. Значение рассчитывается по среднему напряжению (по данным полётного контроллера) на ячейку аккумулятора (банку). Убедитесь, что уровень заряда перед вылетом не менее установленного в настройках сервера. При критически низком значении коптер считается не готовым - блокируется возможность взлёта и старта анимации.
  • checks - Все дополнительные сообщения и ошибки при самодиагностике (Смотреть далее.). При успешном прохождении самодиагностики без ошибок выводится значение OK, ячейка подсвечивается зелёным цветом. При наличии ошибок коптер считается не готовым - блокируется возможность взлёта и старта анимации.
  • time delta - Разница между временем на сервере и клиенте (в секундах). При слишком больших значениях сигнализирует об отсутствии синхронизации времени между коптером и клиентом! В это значение так же входит сетевая задержка.

Дополнительные операции [TODO]

Selfcheck

..

Emergency land {: #emergency-land }

Модуль экстренной посадки/дизарма, предназначенный для быстрого поиска оператором визуально неисправного коптера методом бинарного поиска

Интерфейс

  • Зелёная кнопка 1 - ...
  • Красная кнопка 2 - ...
  • Кнопка Land - все коптеры в выбранной ('зелёной') группе совершат процедуру экстренной посадки (аналогично кнопке Land в панели инструментов).
  • Кнопка Disarm - все коптеры в выбранной ('зелёной') группе немедленно отключают моторы (disarm). (аналогично кнопке Disarm в панели инструментов) ==Это может привести к падению и повреждению коптеров==.

Алгоритм использования

  • ...