Детектор вхождения целей в зоны (Trace detector 1) — различия между версиями
Mikheeva (обсуждение | вклад) (→Алгоритм работы) |
Mikheeva (обсуждение | вклад) (→Алгоритм работы) |
||
Строка 126: | Строка 126: | ||
##по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа '''MoveableObject'''; | ##по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа '''MoveableObject'''; | ||
##обновляется параметр цели '''trace_zones''', т.е. список идентификаторов зон, в которых в данный момент находится цель; | ##обновляется параметр цели '''trace_zones''', т.е. список идентификаторов зон, в которых в данный момент находится цель; | ||
− | |||
Дальнейшее выполняется только для целей, приоритет которых отличен от '''ignore'''. | Дальнейшее выполняется только для целей, приоритет которых отличен от '''ignore'''. | ||
##в соответствии с параметрами '''trace_highest_types''', '''trace_high_types''', '''trace_normal_types''', '''trace_low_types''' и '''trace_lowest_types''' проставляется определенный приоритет цели в параметр '''trace_priority''', в том случае если приоритет еще не был проставлен, т.е. в данный момент равен '''DEFAULT'''. Автоматическое определение приоритета цели происходит в два этапа: сначала приоритет выбирается при условии точного соответствия типа, а затем с учетом наследования; | ##в соответствии с параметрами '''trace_highest_types''', '''trace_high_types''', '''trace_normal_types''', '''trace_low_types''' и '''trace_lowest_types''' проставляется определенный приоритет цели в параметр '''trace_priority''', в том случае если приоритет еще не был проставлен, т.е. в данный момент равен '''DEFAULT'''. Автоматическое определение приоритета цели происходит в два этапа: сначала приоритет выбирается при условии точного соответствия типа, а затем с учетом наследования; | ||
Строка 138: | Строка 137: | ||
###'''target_type''' - тип цели; | ###'''target_type''' - тип цели; | ||
###'''target_info''' - краткая информация о цели. | ###'''target_info''' - краткая информация о цели. | ||
− | |||
#На следующем этапе выбираются все цели с приоритетом отличным от '''ignore''' и '''DEFAULT'''. | #На следующем этапе выбираются все цели с приоритетом отличным от '''ignore''' и '''DEFAULT'''. | ||
##По приоритету цели выбирается соответствующий таймаут из параметров '''trace_highest_timeout''', '''trace_high_timeout''', '''trace_normal_timeout''', '''trace_low_timeout''' и '''trace_lowest_timeout'''. | ##По приоритету цели выбирается соответствующий таймаут из параметров '''trace_highest_timeout''', '''trace_high_timeout''', '''trace_normal_timeout''', '''trace_low_timeout''' и '''trace_lowest_timeout'''. | ||
##Если с момента последнего изменения параметра '''position''' прошло больше секунд, чем указано в выбранном таймауте, то приоритет этой цели сбрасывается в '''DEFAULT'''. | ##Если с момента последнего изменения параметра '''position''' прошло больше секунд, чем указано в выбранном таймауте, то приоритет этой цели сбрасывается в '''DEFAULT'''. | ||
− | |||
#На последнем этапе выбираются все цели входящие в какие-либо охраняемые зоны и имеющие приоритет отличный от '''ignore'''. | #На последнем этапе выбираются все цели входящие в какие-либо охраняемые зоны и имеющие приоритет отличный от '''ignore'''. | ||
##Если модуль скорости цели (параметр '''speed''') меньше, чем '''stop_threshold''' и цель находится в движении, то генерируется событие '''ZoneEvent''' (с параметром '''alarm = stop_alarm''') с параметром '''action''' равным '''stop'''. | ##Если модуль скорости цели (параметр '''speed''') меньше, чем '''stop_threshold''' и цель находится в движении, то генерируется событие '''ZoneEvent''' (с параметром '''alarm = stop_alarm''') с параметром '''action''' равным '''stop'''. |
Версия 17:27, 24 декабря 2018
Данный скрипт предназначен для:
- определения вхождения целей в охраняемые зоны;
- генерирования событий о входе цели в зону и выходе цели из зоны;
- расчета и сохранения списка зон, в которые входит цель, и приоритета слежения за целью;
- генерирования событий о резком изменении скорости и направления цели;
- генерирования событий об остановке и начале движения после остановки;
- генерирования событий об превышении скорости и возврате к нормальной скорости;
- генерирования событий об начале и окончании опасного сближения.
Обычно данный скрипт работает в паре с другим скриптом PTZ Tracer.
Содержание
Зависимости
Скрипт зависит от какого-либо другого модуля поставляющего географические координаты движущихся объектов базе трекинга, т.е. меняющего параметр position у объектов наследников типа MoveableObject.
Построение схемы
Для построения схемы требуется:
1. Добавить триггер EgsScheduled.
- Для этого необходимо:
- 1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsScheduled.
- 2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.
- 3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
- Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
2. Аналогично пункту 1 добавить элементы Egs Модуль EgsModule', менеджер устройств AcuarioManager, Компьютер, Зону и объект TraceDetectorSettings, содержащий настройки скрипта для данной зоны и указанных типов (либо идентификаторов) целей.
3. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме компьютер и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
4. Связать EgsScheduled и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduled и «Egs выход: EgsOutput» у Egs Модуля.
5. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Менеджер устройств: ManagingContainer" из Менеджера устройств.
6. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
7. Подключить пин "Логический вход: LogicInput" из Зоны с пином "Логический выход: LogicOutput" из TraceDetectorSettings.
8. Настроить следующие параметры триггера:
- текст скрипта (script)
http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%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;
- типы целей, для которых следует генерировать тревожное событие (spawn_alarm_types), например: UndefinedSeaTarget;
- типы целей с высшим приоритетом (trace_highest_types), например: ExtraLargeShip, UndefinedSeaTarget;
- типы целей с высоким приоритетом (trace_high_types), например: LargeShip;
- типы целей с нормальным приоритетом (trace_normal_types), например: SmallShip;
- типы целей с низким приоритетом (trace_low_types), например: TinyShip;
- типы целей с низшим приоритетом (trace_lowest_types), например: Boat;
- максимальное количество секунд с последнего обновления цели (trace_timeout), например: 500;
- таймаут на сброс приоритета для целей с наивысшим приоритетом (trace_highest_timeout), например: 300;
- таймаут на сброс приоритета для целей с высоким приоритетом (trace_high_timeout), например: 240;
- таймаут на сброс приоритета для целей с нормальным приоритетом (trace_normal_timeout), например: 180;
- таймаут на сброс приоритета для целей с низким приоритетом (trace_low_timeout), например: 60;
- таймаут на сброс приоритета для целей с наинизшим приоритетом (trace_lowest_timeout), например: 20.
Настройку параметров триггера можно выполнить, открыв свойства элемента.
9. У каждой охраняемой зоны настроить следующие параметры:
- географический полигон зоны (area), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532)). Первая и последняя точка в полигоне должны быть идентичными;
- высота области (area_heights), например: 121.9 121.6 121.5 121.4. Массив чисел должен быть разделен, используя клавишу Enter, а количество точек должно быть на 1 меньше, чем в полигоне;
- приоритет зоны (trace_priority), например: normal.
10. У каждого объекта TraceDetectorSettings настроить следующие параметры:
- список типов целей, на которые распространяются данные настройки (types), например: WarShip;
- список идентификаторов целей, на которые распространяются данные настройки (guids), например: 385352c9-e5b2-4c92-af47-c2679806a742;
- максимальная допустимая скорость (speed_limit), например: 7;
- генерировать тревожное или обычное событие по превышению скорости скорости (speed_limit_alarm), например: true;
- порог изменения скорости (speed_change_threshold), например: 20;
- генерировать тревожное или обычное событие по резкому изменению скорости (speed_change_alarm), например: true;
- порог изменения направления (heading_change_threshold), например: 40;
- генерировать тревожное или обычное событие по резкому изменению направления (heading_change_alarm), например: true;
- порог отсутствия движения (stop_threshold), например: 0.6;
- генерировать тревожное или обычное событие по началу или окончанию движения (stop_alarm), например: false;
- минимальное допустимое расстояние между целями (approach_threshold), например: 20;
- генерировать тревожное или обычное событие по опасному сближению (approach_alarm), например: false.
Если types и guids не содержат элементов, то считается, что данный объект хранит настройки по умолчанию.
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/hash/value
Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.
Алгоритм работы
- Типы из параметров триггера trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types объединяются в общий список отслеживаемых типов целей.
- Bсе типы целей должны быть унаследованы от MoveableObject.
- Выбираются все зоны из всех баз, подключенных к серверу.
- Перебирает все зоны, у которых параметр trace_priority, установлен в значение, отличное от ignore.
- Далее для каждой полученной зоны:
- в памяти создается список идентификаторов целей, находящихся в этой зоне в данный момент;
- выполняет запрос на сервер getObjectsByPoligon с параметром зоны area, списком отслеживаемых типов целей и параметром триггера trace_timeout;
- полученный список идентификаторов целей в зоне сравнивается с сохраненным;
- вычисляются цели, вошедшие в зону и вышедшие из нее;
- по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа MoveableObject;
- обновляется параметр цели trace_zones, т.е. список идентификаторов зон, в которых в данный момент находится цель;
Дальнейшее выполняется только для целей, приоритет которых отличен от ignore.
- в соответствии с параметрами trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types проставляется определенный приоритет цели в параметр trace_priority, в том случае если приоритет еще не был проставлен, т.е. в данный момент равен DEFAULT. Автоматическое определение приоритета цели происходит в два этапа: сначала приоритет выбирается при условии точного соответствия типа, а затем с учетом наследования;
- генерируются события ZoneEvent, содержащие следующие параметры:
- owner - идентификатор зоны;
- server - идентификатор сервера трекинга;
- position - географическая позиция цели;
- detector - идентификатор триггера;
- action - действие: enter или exit;
- target - идентификатор цели;
- target_type - тип цели;
- target_info - краткая информация о цели.
- На следующем этапе выбираются все цели с приоритетом отличным от ignore и DEFAULT.
- По приоритету цели выбирается соответствующий таймаут из параметров trace_highest_timeout, trace_high_timeout, trace_normal_timeout, trace_low_timeout и trace_lowest_timeout.
- Если с момента последнего изменения параметра position прошло больше секунд, чем указано в выбранном таймауте, то приоритет этой цели сбрасывается в DEFAULT.
- На последнем этапе выбираются все цели входящие в какие-либо охраняемые зоны и имеющие приоритет отличный от ignore.
- Если модуль скорости цели (параметр speed) меньше, чем stop_threshold и цель находится в движении, то генерируется событие ZoneEvent (с параметром alarm = stop_alarm) с параметром action равным stop.
- Если модуль скорости цели (параметр speed) больше, чем stop_threshold и цель не находится в движении, то генерируется событие ZoneEvent (с параметром alarm = stop_alarm) с параметром action равным start.
- Если скорость цели (параметр speed) больше чем speed_limit, то генерируется событие ZoneEvent (с параметром alarm = speed_limit_alarm) с параметром action равным too_fast. В случае прекращения превышения скорости генерируется событие с параметром action равным not_too_fast.
- Если разница между скоростью цели (параметр speed) и ее предыдущим значением больше, чем speed_change_threshold, то генерируется событие ZoneEvent (с параметром alarm = speed_change_alarm) с параметром action равным severe_speed_change.
- Если разница между направлением цели (параметр heading) и ее предыдущим значением больше, чем heading_change_threshold, то генерируется событие ZoneEvent (с параметром alarm = heading_change_alarm) с параметром action равным severe_heading_change.
- Если расстояние между выбранной целью и какой-либо другой целью в той же зоне меньше approach_threshold, то генерируется событие ZoneEvent (с параметром alarm = approach_alarm) с параметром action равным dangerous_approach и параметром participants, содержащим список идентификаторов, целей находящихся в опасной близости. В случае прекращения опасного сближения генерируется событие с параметром action равным no_dangerous_approach.
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Построение схемы).
2. Добавить элементы Зона и Мужчина.
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- единица измерения (period_unit): секунда;
- интервал в единицах измерения (period_count): 1;
- повторять через интервал или выполнить один раз в указанное время (repeat): 0;
- задействовать триггер (enabled): true;
- в настройках:
- типы целей, для которых следует генерировать тревожное событие ZoneAlarm (spawn_alarm_types): UndefinedSeaTarget;
- типы целей, для которых следует генерировать нормальное событие ZoneEvent (spawn_event_types): ExtraLargeShip;
- типы целей с высшим приоритетом (trace_highest_types): ExtraLargeShip;
- типы целей с высоким приоритетом (trace_high_types): LargeShip;
- типы целей с нормальным приоритетом (trace_normal_types): Human;
- типы целей с низким приоритетом (trace_low_types): TinyShip;
- типы целей с низшим приоритетом (trace_lowest_types): Boat;
- максимальное количество секунд с последнего обновления цели (trace_timeout): 500;
5. Настроить следующие параметры Зоны:
- область (area): POLYGON((50.22228403 53.2363014,50.2224350 53.23636588,50.2224236 53.2362976,50.22228403 53.2363014));
- приоритет зоны (trace_priority), например: normal.
Далее необходимо запустить скрипт "Симулятор движения (Position Simulator 1)", описание которого приведено на странице Симулятор движения (Position simulator 1), и настроить в свойствах триггера параметр: данные о движении объекта (settings.input): 50.22196217,53.23618268,0 50.22209225,53.23620757,0 50.22223978,53.23623004,0 50.22231622,53.23626456,0 50.22236718,53.23632315,0 50.22231085,53.23636007,0 50.22219015,53.23638496,0 50.22204666,53.23636007,0 50.22187902,53.23633359,0 50.22184013,53.23623807,0. Элемент в Position Simulator 1 и в Trace detector 1 должен быть одним и тем же.
Результат:
У объекта Мужчина в параметр зона слежения (trace_zones) будет установлена зона, в которой в данный момент находится цель.
Дополнения
1. В пункте 1 раздела Построение схемы добавление триггера EgsScheduledTraceDetector можно осуществить по ссылке.
Для этого необходимо:
- 1. Импортировать скрипт по следующей ссылке:
http://maps.integra-s.com:5434/resources/typedef2017/egs/Trace%20detector%202.put.
- 2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
- 3. В открывшемся окне выбрать импортированный скрипт "Trace detector 1.put".
- Элемент появится на рабочей области.
2. В пункте 7 раздела Построение схемы редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
- После этого откроется окно для редактирования параметров.