Слежение поворотной камерой за целями в зоне (PTZ Tracer 1)
Позиционирование и фокусировка камеры на отслеживаемой цели. Создание и сохранение фотоизображения цели.
Содержание
Зависимости
Скрипт зависит от задачи определения вхождения целей в охраняемые зоны Детектор вхождения целей в зоны (Trace detector 1).
Построение схемы
Для построения схемы требуется:
1. Добавить триггер EgsScheduled.
- Для этого необходимо:
- 1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsScheduled.
- 2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.
- 3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
- Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
2. Аналогично пункту 1 добавить элементы EgsModule, менеджер AcuarioManager и компьютер Computer.
3. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме элемент Computer и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
4. Связать EgsScheduled и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduled и «Egs выход: EgsOutput» у Egs Модуля.
5. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Менеджер устройств: ManagingContainer" из Менеджера устройств.
6. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
7. Настроить следующие параметры триггера:
- текст скрипта (script)
http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/PTZ%20Tracer%202.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;
- в настройках:
- адрес веб-сервиса ИнтеграВидео7 (url), например: http://localhost:1986/axis2/services/Iv7Server;
- дистанция до цели, начиная с которой приближение камеры будет всегда максимальным (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;
- включает режим слежения всеми доступными камерами за самой приоритетной целью (в обычном режиме за каждой целью следит не более одной камеры одновременно) (multi_trace_enabled).
Настройку параметров триггера можно выполнить, открыв свойства элемента.
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. Числа в массиве должны быть разделены, используя клавишу Enter, а количество точек должно быть на 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.
Аутентификация
Если на сервере Интегра-Видео включена аутентификация, тогда необходима настройка логина и пароля доступа к видео-серверу одним из следующих способов:
- Параметр urls поворотной камеры должен содержать iv7 адрес включающий логин и пароль, например: iv7://admin:fulladmin@/?udp_id=211&key2=211.
- Модуль IntegraVideo7, с которым при помощи MediaLink соединена данная поворотная камера, должен иметь настроенные параметры login и password.
Алгоритм построения схемы "Интегра Видео 7" приведен на странице Схема "Интегра Видео 7"
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/PTZ%20Tracer%202.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.
Замечание
- Для целей и зон с приоритетом DEFAULT, get_priority_factor всегда возвращает ноль.
- Так же приоритет цели получится нулевым, если соответствующий ее приоритету числовой коэффициент в настройках равен нулю.
- Слежение за целями с нулевым приоритетом не осуществляется.
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму.
2. Добавить и связать элементы Зона и IP поворотная камера.
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- единица измерения (period_unit): секунда;
- интервал в единицах измерения (period_count): 1;
- повторять через интервал или выполнить один раз в указанное время (repeat): 0;
- задействовать триггер (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;
- включает режим слежения всеми доступными камерами за самой приоритетной целью (в обычном режиме за каждой целью следит не более одной камеры одновременно) (multi_trace_enabled.
5. Настроить следующие параметры Зоны:
- географический полигон зоны (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. Числа в массиве должны быть разделены, используя клавишу Enter, а количество точек должно быть на 1 меньше, чем в полигоне;
- приоритет зоны (trace_priority), например: normal.
6. Настроить следующие параметры камеры:
- географические координаты поворотного устройства (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;
7. Для каждой отслеживаемой цели задачи должны своевременно поставлять значения следующих параметров:
- позиция цели (position), например: POINT(48.03591156 46.35991287);
- список зон, в которые в данный момент входит цель (trace_zones), например: 6baa9825-a375-4ae3-b7cd-f4e1209a878b;
- приоритет отслеживания цели (trace_priority), например: highest.
Также необходимо настроить скрипт Детектор вхождения целей в зоны (Trace detector 1).
Далее если цель не движется, можно запустить скрипт Симулятор движения (Position simulator 1), и настроить в свойствах триггера параметр: данные о движении объекта (settings.input): 40.72402111,-73.99108148,0. Элемент в Position Simulator и в Trace detector должен быть одним и тем же.
Результат:
В параметр зона слежения (trace_zones) будет установлена зона, в которой в данный момент находится цель.
Дополнения
1. В пункте 1 раздела Построение схемы добавление триггера EgsScheduledTraceDetector можно осуществить по ссылке.
Для этого необходимо:
- 1. Импортировать скрипт по следующей ссылке:
http://maps.integra-s.com:5434/resources/typedef2017/egs/PTZ%20Tracer%202.put.
- 2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
- 3. В открывшемся окне выбрать импортированный скрипт "Trace detector 1.put".
- Элемент появится на рабочей области.
2. В пункте 7 раздела Построение схемы редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
- После этого откроется окно для редактирования параметров.