29 KiB
Настройка сервера
Файл конфигурации
Конфигурация сервера задаётся в файле Server/server_config.ini, имеющем вид (по умолчанию):
[SERVER]
port = 25000
buffer_size = 1024
remove_disconnected = False
[BROADCAST]
use_broadcast = True
broadcast_port = 8181
broadcast_delay = 5.0
[NTP]
use_ntp = False
host = ntp1.stratum2.ru
port = 123
[CHECKS]
battery_percentage_min = 50.0
start_pos_delta_max = 1.0
time_delta_max = 1.0
Конфигурация по умолчанию является полностью работоспособной и не требует изменений для быстрого начала работы системы.
Раздел 'Server'
В этом разделе задаются параметры сетевого взаимодействия сервера, доступны следующие параметры:
port- TCP порт, на котором будут приниматься входящие соединения от клиентов (коптеров). При использовании broadcast данный порт будет сконфигурирован у клиента автоматически. Рекомендуется изменить значение по умолчанию в целях безопасности (любое пятизначное и более число, если другое ПО не использует выбранный порт).buffer_size- размер буфера при приёме и передаче данных. Не рекомендуется изменять. Рекомендуется использовать единое значение у сервера и клиентов.remove_disconnected- Определяет поведение при разрыве связи с клиентом. При значенииTrueвся информация о клиенте будет удалена как из внутренней памяти, так и из таблицы. Это может привести к 'скачкам' таблицы при отключении клиентов. При значенииFalseотключённые клиенты не будут удалены из таблицы, но будут отображены с подсвечиванием ячейкиcopter IDкрасным цветом. Все данные будут сохранены. При переподключении клиента, он будет ассоциирован с той же строкой таблицы, а ячейка со значениемcopter IDвновь станет зелёного цвета.
Раздел 'Checks'
battery_percentage_min- Минимальный заряд батарии коптера в процентах (дробное значение от 0 до 100), допустимый для взлёта. Значение меньше указанного будет отмечено как неудовлетворительное (см. раздел таблицы).start_pos_delta_max- Максимальное расстояние в метрах (дробное значение от 0 до 'inf') от текущего положения коптера до его точки взлёта в файле анимации, допустимое для взлёта. Допустимо использование строки 'inf' для любого допустимого расстояния. Значение больше указанного будет отмечено как неудовлетворительное (см. раздел таблицы).time_delta_max- Максимальная разница (абсолютное значение) в секундах (дробное значение от 0 до 'inf') между временем сервера и клиента (включая сетевую задержку), допустимая для взлёта. Допустимо использование строки 'inf' для любой допустимой разницы. Значение больше указанного будет отмечено как неудовлетворительное (см. раздел таблицы).
Раздел 'Broadcast'
Сервер использует UDP broadcast (на адрес 255.255.255.255 с выбранным портом), чтобы передавать клиентам (коптерам) актуальную информацию о конфигурации сервера и собственном адресе сервера для подключения (IP адрес и порт сервера). Таким образом, обеспечивается автоматическое подключение клиентов к серверу без необходимости дополнительной ручной конфигурации. В данном разделе задаются параметры этого механизма.
use_broadcast- будут ли использованы broadcast'ы для передачи данных (при значенииFalsebroadcast'ы НЕ будут отправляться). ИспользуйтеFalseв случае повышенных требований безопасности, перегруженности сети или невозможности передачи по широковещательному каналу (из-за конфигурации брандмауэра или сети)broadcast_port- UDP порт, по которому будет осуществляться отправка сообщений. Рекомендуется изменить значение по умолчанию в целях безопасности. Внимание! При изменении этого параметра клиенты НЕ смогут принимать сообщения автоконфигурации до изменения (вручную) соответствующего параметра в конфигурации клиента на равное значение.broadcast_delay- периодичность (в секундах, целочисленное значение), с которой будет происходить отправка broadcast сообщений. Увеличьте задержку для уменьшения нагрузки на сеть. ИЛИ Уменьшите задержку для уменьшения времени отклика и подключения при первом запуске клиентов.
Раздел 'NTP'
Помимо синхронизации времени (с миллисекундной точностью) с помощью пакета chrony, предоставляется альтернатива - возможность использования внешних (при наличии соединения локальной сети с интернетом) или внутрисетевых NTP-серверов. Внимание! Для корректной работы системы, и сервер, и клиенты должны использовать единый способ синхронизации времени (набор параметров в этом разделе). Данный раздел полностью унифицирован и для сервера, и для клиентов.
use_ntp- Определяет, будет ли использоваться синхронизация времени с помощью NTP. (при значенииFalseбудет использовано локальное время ОС (синхронизируется автоматически при использовании chrony). Рекомендуется использование crhony, а не NTPhost- имя хоста или IP адрес NTP сервера (локального или удаленного)port- порт, используемый NTP сервером
Интерфейс сервера
Сервер имеет визуальный графический интерфейс для удобства взаимодействия.
Глоссарий
Некоторые термины, используемые для краткости записи:
- Готовый [к полёту] коптер:
Прошедший предполётную проверку (
Preflight check) и имеющий удовлетворительные результаты по всем необходимым столбцам (зелёные ячейки в таблице). Учитываются проверки аккумулятора и сообщения selfcheck. - Не готовый [к полёту] коптер:
НЕ прошедший предполётную проверку (
Preflight check) (не имеющий её результатов в таблице - жёлтые ячейки) или же имеющий НЕудовлетворительные результаты (красные ячейки в таблице). Учитываются проверки аккумулятора и сообщения selfcheck.
Меню
Раздел '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 (отступ) каждого из выбранных клиентов на значение, равное текущему положению по координате ZReset Z offfset- Устанавливает собственный offset (отступ) каждого из выбранных клиентов на значение0Restart 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- Полностью перезагружает систему выбранных клиентов. Во время перезапуска клиенты будет отключены.
Боковая панель инструментов (команд)
Управление
Данный раздел команд предназначен для выскоуровневого управления роем дронов.
- Кнопка
Preflight check- Все выбранные клиенты выполняют самодиагностику и предполётную проверку. Результаты, вместе с другими параметрами клиента, будут отображены в таблице по мере поступления данных. - Спинбокс
Start after N seconds- Задаёт время задержки до синхронного запуска выполнения анимаций коптерами. Не рекомендуется использовать0(нулевую задержку). Для загруженных\подверженных помехам\имеющих большой пинг сетей рекомендуется использовать бо́льшие значения (>5 секунд). - Кнопка
Start animation- По истечению заданного вStart afterвремени, все выбранные коптеры совершат взлётные процедуры, перелетают на стартовые точки своих анимаций и синхронно выполнят полётное задание (анимацию). По окончанию анимации все коптеры выполнят посадку на месте окончания своей анимации. Кнопка деактивирована по умолчанию и если среди выбранных коптеров есть не готовые коптеры (все выбранные коптеры должны быть готовыми). При нажатии запрашивается дополнительное предупреждение! - Кнопка
Pause- Ставит на 'паузу' все выбранные коптеры (их очередь заданий): приостанавливается выполнение любого полётного задания. Используйте в чрезвычайных случаях. Внимание! Данная команда НЕ прерывает полёт коптера в уже указанную точку (например: элементы взлёта, посадки; следование до начальной точки анимации и т.д.) - Кнопка
Resume- Все выбранные коптеры синхронизированно продолжат выполнение своих очередей заданий (например: исполнение анимации) - Кнопка
Stop- Прерывает выполнение полётных заданий ВСЕХ подключенных коптеров. Сбрасывает очередь заданий - действие необратимо. Используйте в экстренных случаях как одно из средств перехвата. Внимание! Данная команда НЕ прерывает полёт коптера в уже указанную точку (например: элементы взлёта, посадки; следование до начальной точки анимации и т.д.) - Кнопка
Emergency land- Открывает диалоговое окно дополнительного модуля быстрого выбора коптера и его последующей экстренной посадки \ дизарма. Смотреть далее.
Полётные функции (команды)
В данном разделе находятся команды, позволяющие напрямую управлять коптером(ами).
- Кнопка
Test leds- Все выбранные коптеры выполняют двухсекундную анимацию (бегущие точки) светодиодной лентой (белым цветом). Команда безопасна и может быть использована для проверки работы светодиодных лент \ качества и задержки подключения к серверу \ определения соответствия коптера и егоCopter IDв таблице. - Кнопка
Takeoff- Все выбранные коптеры совершают взлёт, после чего зависают над точкой взлёта. АналогичноStart animation, кнопка активна, только если все выбранные коптеры готовы. Внимание! Используйте осторожно, соблюдайте технику безопасности. Не применяйте во время выполнения других полётных функций! - Кнопка
Flip- Все выбранные коптеры совершают флип (flip) - переворот на 360 градусов вокруг одной из горизонтальных осей. Внимание! Используйте осторожно, соблюдайте технику безопасности. Для исполнения флипа коптер должен иметь минимальную высоту >2м. Не применяйте во время выполнения других полётных функций! - Кнопка
Land- ВСЕ коптеры прекращают выполнение своих полётных заданий, очищают очередь заданий и немедленно переходят в режим посадки. Используйте в экстренных случаях как одно из средств перехвата. - Кнопка
Diarm- ВСЕ коптеры прекращают выполнение своих полётных заданий, очищают очередь заданий и немедленно отключают моторы (disarm). ==Это может привести к падению и повреждению коптеров== Используйте в крайних случаях как последнее из средств перехвата.
Таблица состояния коптеров (клиентов)
При первом подключении клиента к серверу в таблицу добавляется строка для отображения состояния клиента, содержащая начальные данные, переданные клиентом при подключении (Copter ID). Строки НЕ удаляются после зарегистрированного отключения клиента. Строки можно сортировать по возрастанию \ убыванию значений любого из столбцов (кликнув по заголовку столбца).
Ячейки таблицы подсвечиваются:
- жёлтым, если необходимое значение отсутствует
- красным, если значение (состояние) ячейки неудовлетворительно (согласно внутренним проверкам)
- зелёным, если значение (состояние) ячейки удовлетворительно (согласно внутренним проверкам)
Столбцы таблицы
copter ID- имя (идентификатор) клиента. Может быт сконфигурирован на стороне клиента. Отображается сразу при подключении клиента. Рядом с каждым ID коптера расположен чекбокс - коптеры, чей ID отмечен чекбоксом положительно (галочка), считаются выбранными.animation ID- внутреннее название файла анимации, подгруженного клиентом. Отображается после выполненияselfcheck. Проверьте соответствие названий файлов анимаций у коптеровbattery V- абсолютное значение напряжения на аккумуляторе коптера (в Вольтах, по данным полётного контроллера). Убедитесь, что напряжение не ниже порогового для вашего аккумулятора. При критически низком значении коптер считается не готовым - блокируется возможность взлёта и старта анимации.battery %- относительное значение напряжения на аккумуляторе коптера. Значение рассчитывается по среднему напряжению (по данным полётного контроллера) на ячейку аккумулятора (банку). Убедитесь, что уровень заряда перед вылетом не менее 30% При критически низком значении коптер считается не готовым - блокируется возможность взлёта и старта анимации.selfcheck- Все дополнительные сообщения и ошибки при самодиагностике (Смотреть далее.). При успешном прохождении самодиагностики без ошибок выводится значениеOK, ячейка подсвечивается зелёным цветом. При наличии ошибок коптер считается не готовым - блокируется возможность взлёта и старта анимации.time delta- Разница между временем на сервере и клиенте (в секундах). При слишком больших значениях сигнализирует об отсутствии синхронизации времени между коптером и клиентом! В это значение так же входит сетевая задержка.
Дополнительные операции
Selfcheck
..
Emergency land
Модуль экстренной посадки/дизарма, предназначенный для быстрого поиска оператором визуально неисправного коптера методом бинарного поиска
Интерфейс
- Зелёная кнопка
1- ... - Красная кнопка
2- ... - Кнопка
Land- все коптеры в выбранной ('зелёной') группе совершат процедуру экстренной посадки (аналогично кнопкеLandв панели инструментов). - Кнопка
Disarm- все коптеры в выбранной ('зелёной') группе немедленно отключают моторы (disarm). (аналогично кнопкеDisarmв панели инструментов) ==Это может привести к падению и повреждению коптеров==.
Алгоритм использования
- ...

