Слежение поворотной камерой за целями в зоне (PTZ Tracer 1)
Позиционирование и фокусировка камеры на отслеживаемой цели. Создание и сохранение фотоизображения цели.
Содержание
Зависимости
Скрипт зависит от задачи определения вхождения целей в охраняемые зоны Детектор вхождения целей в зоны (Trace detector 1).
Настройка
Добавления триггера EgsScheduledPTZTracer
Триггер EgsScheduledPTZTracer можно добавить двумя способами:
Добавление триггера EgsScheduledPTZTracer по ссылке
Для добавления скрипта необходимо:
1. Импортировать скрипт по следующей ссылке: http://maps.integra-s.com/resources/typedef2017/egs/PTZ%20Tracer%201.put.
2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
3. В открывшемся окне выбрать импортированный скрипт "PTZ Tracer 1.put".
Элемент появится на рабочей области.
Добавление триггера вручную
Для того чтобы добавить триггер вручную, необходимо:
1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsScheduledPTZTracer.
2. Дважды нажать на выбранный элемент.
После этого появится окно для добавления элемента.
3. Нажать кнопку "Добавить".
Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
Построение схемы
Для дальнейшего построения схемы необходимо:
1. Добавить элемент EgsModule, менеджер AcuarioManager и компьютер Computer.
2. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме элемент Computer и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
3. Связать EgsScheduledPTZTracer и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduledPTZTracer и «Egs выход: EgsOutput» у Egs Модуля.
4. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Привязка к менеджеру: ManagingContainer" из Менеджера устройств.
5. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
Замечание:
Если скрипт не был импортирован, то для триггера необходимо настроить параметры:
- текст скрипта (script)
http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/PTZ%20Tracer%201.put&path=0/params/script/value;
- единица измерения (period_unit), например: секунда;
- интервал в единицах измерения (period_count), например: 1;
- точное время внутри интервала (period_time), например: 00:00:00, 14:30:00;
- повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
- задействовать триггер (enabled), например: true;
- дистанция до цели, начиная с которой приближение камеры будет всегда максимальным (max_zoom_distance), например: 1500;
- коэффициент, ограничивающий максимальный приближение камеры, от 0.0 (0%) до 1.0 (100%) (max_zoom_limit_factor), например: 1;
- ширина снимка отслеживаемой цели (snapshot_width), например: 320;
- высота снимка отслеживаемой цели (snapshot_height), например: 240;
- числовой коэффициент наивысшего приоритета отслеживания (trace_highest_factor), например: 10.0;
- числовой коэффициент высокого приоритета отслеживания (trace_high_factor), например: 2.0;
- числовой коэффициент нормального приоритета отслеживания (trace_normal_factor), например: 1.0;
- числовой коэффициент низкого приоритета отслеживания (trace_low_factor), например: 0.5;
- числовой коэффициент наинизшего приоритета отслеживания (trace_lowest_factor), например: 0.2;
- время в секундах с момента выключения слежения камерой, по прошествии которого оно автоматически включается (trace_disable_timeout), например: 60.
Настройку параметров триггера также можно выполнить, нажав правой кнопкой мыши по элементу EgsScheduled и в контекстном меню выбрав пункт "Редактировать параметры".
После этого откроется окно для редактирования параметров.
Также это можно выполнить, открыв свойства элемента.
6. У каждой охраняемой зоны Zone настроить следующие параметры:
- географический полигон зоны (area), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532));
- высоты точек из полигона area (area_heights), вида: -25.1,-25.1, -25.1, -25.1, -25.1;
- приоритет зоны (trace_priority), например: normal.
7. C зоной должна быть связана хотя бы одна поворотная камера, т.е. устройство типа PTZDevice, VideoCamera и SpatialObject одновременно, подключив пины "Привязка к зоне:ZoneInputPin" у поворотной камеры и "Зона:ZoneOutputPin" у зоны. Для камеры должны быть настроены следующие параметры:
- географические координаты поворотного устройства (geo_position), например: 40.72408616 -74.00867677;
- географическая высота поворотного устройства (geo_height), например: 0.
- калибровочная матрица поворотного устройства (calibrationMatrix), вида: -0.02104252 0.02104352... 0.9995127 (9 чисел с плавающей точкой);
- примерное время на фокусировку в секундах (focus_time), например: 5;
- адреса видео-потоков (urls), например: iv7://admin:fulladmin/?udp_id=2801&key2=2801_Поворотная ПН1@;
- включить слежение данной камерой (trace_enabled), например: true;
8. Для каждой отслеживаемой цели задачи должны своевременно поставлять значения следующих параметров:
- позиция цели (position), например: POINT(48.03591156 46.35991287);
- список зон, в которые в данный момент входит цель (trace_zones), например: 6baa9825-a375-4ae3-b7cd-f4e1209a878b;
- приоритет отслеживания цели (trace_priority), например: highest.
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/PTZ%20Tracer%201.put&path=0/params/hash/value
Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.
Алгоритм работы
- 1. Выбираются все поворотные устройства PTZDevice, у которых включен параметр trace_enabled и заполнен параметр calibrationMatrix.
- 2. Выбираются все зоны Zone, связанные с полученными поворотными устройствами.
- 3. Выбираются все цели MoveableObject с непустым списком зон trace_zones и приоритетом слежения trace_priority отличным от DEFAULT.
- 4. Из списка удаляются все цели, не входящие в ранее полученный список отслеживаемых зон.
- 5. Цели сортируются по убыванию величины, рассчитываемой по следующей формуле:
seconds_passed(target.trace_snapshot) * get_priority_factor(target.trace_priority) * get_priority_factor(zone.trace_priority),
где:
target - отслеживаемая цель;
zone - зона с наивысшим приоритетом, в которую в данный момент входит цель;
trace_priority - приоритет отслеживания цели или зоны;
seconds_passed - функция, возвращающая время в секундах с момента последнего изменения параметра, переданного ей;
get_priority_factor - функция, превращающая приоритет в числовой коэффициент, см. параметры триггера.
- 6. Следующие действия выполняются до тех пор, пока список поворотных устройств не пуст:
- 1. Из начала списка берется цель с наивысшим рассчитанным коэффициентом.
- 2. Из списка поворотных устройств удаляется то, которое связано с зоной данной цели.
- 3. Для полученной пары MoveableObject и PTZDevice выполняется асинхронная функция слежения:
- 1. Рассчитываются параметры поворота pan, tilt и zoom.
- 2. Осуществляется поворот устройства в нужную точку.
- 3. Выдерживается пауза в секундах, равная параметру поворотного устройства focus_time.
- 4. Осуществляется снимок камеры, для чего из параметра поворотного устройства urls извлекаются параметры udp_id и key2.
- 5. Снимок экрана конвертируется в JPEG и сохраняется в параметре цели trace_snapshot.
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму.
2. Добавить и связать элементы Зона и IP поворотная камера.
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- единица измерения (period_unit): секунда;
- интервал в единицах измерения (period_count): 1;
- повторять через интервал или выполнить один раз в указанное время (repeat): 0;
- задействовать триггер (enabled): true;
- в настройках:
- список масок имен типов (settings.types): BOLID_*;
- флаг включения алгоритма для тех. осмотров (settings.maintenance): true;
- флаг включения алгоритма для проверок (settings.verification): false;
- типы целей, для которых следует генерировать тревожное событие ZoneAlarm (spawn_alarm_types): UndefinedSeaTarget;
- типы целей, для которых следует генерировать нормальное событие ZoneEvent (spawn_event_types): LargeShip;
- типы целей с высшим приоритетом (trace_highest_types): ExtraLargeShip;
- типы целей с высоким приоритетом (trace_high_types): LargeShip;
- типы целей с нормальным приоритетом (trace_normal_types): SmallShip;
- типы целей с низким приоритетом (trace_low_types): TinyShip;
- типы целей с низшим приоритетом (trace_lowest_types): Boat;
- максимальное количество секунд с последнего обновления цели (trace_timeout): 500;
5. Настроить следующие параметры Зоны:
- географический полигон зоны (area): POLYGON((40.72408616 -74.00867677,40.72994019 -73.99022317,40.72564728 -73.97709107,40.71764613 -73.97880769,40.72408616 -74.00867677));
- приоритет зоны (trace_priority), например: normal.
Далее необходимо запустить скрипт "Симулятор движения (Position Simulator 1)", описание которого приведено на странице Симулятор движения (Position simulator 1), и настроить в свойствах триггера параметр: данные о движении объекта (settings.input): 40.72402111,-73.99108148,0. Элемент в Position Simulator 1 и в Trace detector 1 должен быть одним и тем же.
В результате в параметр зона слежения (trace_zones) будет установлена зона, в которой в данный момент находится цель.