Расположение датчика: Расположение датчиков температуры и влажности в серверной комнате по ГОСТ

Содержание

Расположение датчиков температуры и влажности в серверной комнате по ГОСТ

FAQ 25 июня 2017

Расположение датчиков влажности и температуры не регламентируется текущими ГОСТ.

Единственная рекомендация касательно датчиков встречается в СН512-78. Она звучит следующим образом: «Рекомендуется предусмотреть как минимум два датчика температуры, которые позволят обеспечить дополнительный контроль за соблюдением температурного режима в серверной. Один датчик выводится на пульт диспетчера инженерных систем здания, а второй датчик должен быть установлен на пульте администраторов ИВС».

Между тем, правильное расположение температурных датчиков крайне важно для правильной работы систем кондиционирования.

К примеру, на приложенном слайде мы видим, что из-за некорректно расположенного датчика кондиционер не охлаждает воздух и выдает 26,5 градусов.

Так регламентирует расположение датчиков международный стандарт построения серверных помещений EIA/TIA569: «Средние значения температуры и влажности должны измеряться во время работы всего активного оборудования на высоте 1,5 метра над уровнем пола в любой центральной точке прохода между рядами активного оборудования».

Вот что говорит по этому поводу ASHRAE TC9.9 Mission Critical Facilities от 2004 года: «на каждый холодный коридор должен быть отдельный датчик влажности, расположенный спереди в середине ряда серверных шкафов. Датчики температуры должны быть установлены на каждый третий шкаф внизу, середине и в верху шкафа. В случае турбулентных воздушных потоков рекомендация меняется — один датчик на 1000 квадратных футов».

Uptime Institute предлагает измерять температуру на средней высоте (1,5 метра?) в конце каждого ряда стеллажей и в верхней части стойки в центре каждого ряда.

Еще одна точка зрения изложена специалистами OPENXTRA Ltd., занимающимися кондиционированием: «Вы должны размещать датчики на расстоянии от 10 до 25 метров между ними для исключения влияния турбулентных потоков. Размещайте датчики на высоте 0,6 метра и 1,5 метра от уровня пола для измерения разности температур».

Немного другой подход демонстрирует компания Cisco: «Измеряйте температуру вверху шкафа, сзади шкафа, внизу у фальш-пола и на входе в охлаждающие модули».

Как вы видите, единых рекомендаций никто не дает. Схема с установкой трех температурных датчиков на каждый (или каждый третий) серверный шкаф кажется мне избыточной.

Я бы рекомендовал воспользоваться рекомендациями от Uptime Institute и OpenXtra, наложенными на рекомендации TIA569:

  • разместить в серверном шкафу два температурных датчика на высоте 0,6 метра и 1,5 метра;
  • выбрать шкафы в конце каждого ряда стеллажей и в центре каждого ряда, но не ближе 10 метров между шкафами;
  • совместить температурный датчик и датчик влажности при его установке в верхней позиции в центре ряда.

Использованные материалы:

1) СН512-78. Технические требования к зданиям и помещениям для установки средств вычислительной техники (отсюда).

2) EIA/TIA569 (отсюда).

3) ASHRAE TC9.9 Mission Critical Facilities, Thermal Guidelines for Data Processing Environments, 2004 (отсюда).

4) Статья с сайта компании OPENXTRA Ltd (отсюда).

5) Uptime Institute. Implementing data center cooling best practices (отсюда).

6) Cisco Unified Computing System Site Planning Guide: Data Center Power and Cooling Guide (отсюда).

К списку новостей

Поделиться

Обзор платформы датчиков и расположений Windows — Win32 apps

  • Статья
  • Чтение занимает 3 мин

Операционная система Windows 7 обеспечивает встроенную поддержку устройств с датчиками. Сюда входит поддержка датчиков расположения, таких как GPS-устройства. В рамках этой поддержки платформа Windows Sensor and Location предоставляет стандартный способ предоставления производителям устройств устройств доступа к устройствам для разработчиков программного обеспечения и потребителей. В то же время платформа предоставляет разработчикам стандартизированный api и интерфейс драйвера устройств (DDI) для работы с датчиками и данными датчиков.

Сведения об устройствах датчиков

Датчики доступны во многих конфигурациях и, с определенной точки зрения, почти все, что предоставляет данные о физических явлениях, можно назвать датчиком. Хотя обычно датчики считаются аппаратными устройствами, логические датчики также могут предоставлять информацию с помощью эмуляции функций датчиков в программном обеспечении или встроенном ПО. Кроме того, одно аппаратное устройство может содержать несколько датчиков.

Платформа Windows датчика и расположения упорядочивает датчики по категориям, которые представляют широкие классы устройств датчиков и типов, представляющих определенные виды датчиков. Например, датчик в контроллере видеоигр, который определяет положение и движение руки игрока (возможно, для видео боулинг игры) будет классифицирован как датчик ориентации, но его тип будет 3-D Accelerometer. В коде Windows представляет категории и типы с помощью глобальных уникальных идентификаторов (GUID), многие из которых предопределяются. Производители устройств могут создавать новые категории и типы, определяя и публикуя новые guid, когда это необходимо.

Устройства расположения составляют одну особенно интересную категорию. К настоящему моменту большинство людей знакомы с глобальными системами позиционирования (GPS). В Windows датчик GPS входит в категорию «Расположение». Категория «Расположение» может включать другие типы датчиков. Некоторые из этих типов датчиков основаны на программном обеспечении, например сопоставитель IP-адресов, который предоставляет сведения о расположении на основе интернет-адреса, триангулятор мобильной телефонной башни, который определяет расположение на основе близлежащих башен, или поставщик сетевых расположений Wi-Fi, который считывает сведения о расположении из подключенного беспроводного сетевого концентратора.

Сведения о платформе

Платформа Windows Sensor and Location состоит из следующих компонентов разработчика и пользователя:

  • DDI позволяет Windows обеспечить стандартный способ подключения устройств датчиков к компьютеру и предоставления данных другим подсистемам.
  • API датчика Windows предоставляет набор методов, свойств и событий для работы с подключенными датчиками и данными датчиков.
  • API расположения Windows, основанный на API датчика Windows, предоставляет набор программных объектов, включая объекты скриптов, для работы с сведениями о расположении.
  • Расположение и другие датчики панель управления позволяют администраторам компьютеров устанавливать датчики, включая датчики расположения, для каждого пользователя.

В следующих разделах описывается каждый из этих компонентов.

Схема архитектуры

На следующей схеме показана связь между компонентами.

Интерфейс драйвера устройства

Производители датчиков могут создавать драйверы устройств для подключения датчиков с помощью Windows 7. Драйверы устройств датчиков реализуются с помощью модели драйвера Windows переносимых устройств (WPD), основанной на платформе драйвера Windows пользовательского режима (UMDF). Многие драйверы устройств написаны с помощью этих платформ. Поскольку эти технологии установлены, опытные программисты драйверов устройств найдут написание драйвера датчика, чтобы быть знакомой задачей. DDI датчика использует определенные типы данных и интерфейсы UMDF и WPD, а также определяет команды и параметры WPD, относящиеся к датчику, где это необходимо. Дополнительные сведения о создании драйверов устройств датчика см. в Windows комплекте драйверов.

API датчика

API датчика позволяет разработчикам C++ создавать программы на основе датчиков с помощью набора COM-интерфейсов. API определяет интерфейсы для выполнения распространенных задач программирования датчиков, включая управление датчиками по категориям, типу или идентификатору, управлению событиями датчиков, работе с отдельными датчиками и коллекциями датчиков, а также работе с данными датчиков. Пакет SDK Windows включает файлы заголовков, документацию, примеры и средства, помогающие разработчикам программного обеспечения использовать датчики в программах Windows. В этой документации описывается API датчика.

API расположения

На основе API датчика API расположения api расположений предоставляет простой способ получения данных о географическом расположении при защите конфиденциальности пользователей. API расположения предоставляет свои функциональные возможности с помощью набора COM-интерфейсов, представляющих объекты. Эти объекты могут использоваться программистами, которые понимают, как использовать COM с помощью языка программирования C++ или на языках сценариев, таких как JScript. Поддержка сценариев обеспечивает простой доступ к данным о расположении для проектов, работающих в зоне локального компьютера, таких как гаджеты. Пакет SDK для Windows включает файлы заголовков, документацию (включая справочную документацию по сценариям), примеры и средства, помогающие разработчикам веб-приложений использовать сведения о расположении в своих программах.

Расположение и другие датчики панель управления

Windows 7 включает панель управления, которая позволяет администраторам компьютеров включать или отключать датчики на уровне системы или для каждого пользователя. Так как некоторые датчики могут предоставлять конфиденциальные данные, этот пользовательский интерфейс позволяет администраторам контролировать, имеют ли все программы доступ к каждому датчику для каждого пользователя. Пользователи также могут просматривать свойства датчика и изменять описание датчика, отображаемое в пользовательском интерфейсе.

Панель управления также предоставляет страницу «Расположение по умолчанию», чтобы пользователи могли предоставлять свое расположение. Если датчик недоступен, платформа будет использовать предоставленное пользователем расположение. Пользователи могут предоставлять поля гражданских адресов, в том числе адрес улицы, город, штат или провинция, а также страну или регион.

Сведения об API датчика

Веб-сайт центра разработчика оборудования Windows

Центр разработчиков для Windows

Исследование с помощью датчика местоположения

Компонент LocationSensor представляет собой простой элемент управления, который сложно использовать без знания некоторых основных концепций геолокации. LocationSensor используется для связи со спутниковым приемником глобального позиционирования (GPS) в вашем телефоне/планшете. Когда LocationSensor обменивается данными со встроенным приемником GPS, GPS определяет местоположение вашего устройства. Датчик также может работать с сервисами определения местоположения сети/Wi-Fi. Для определения местоположения через сеть используются совсем другие методы, чем с помощью GPS. Местоположение означает текущую широту и долготу устройства или может означать ваш почтовый адрес. Единицы измерения, используемые в LocationSensor для расстояния в метрах. Время измеряется в миллисекундах (мс). Имейте в виду, что одна секунда = 1000 мс. а 60000 мс — это одна минута.

Когда датчик сообщает информацию о расстоянии или вы устанавливаете расстояние в компоненте, единицами измерения являются метры. Если ваше приложение должно иметь дело с английскими единицами измерения, используйте математические блоки для преобразования единиц во время их отображения. Рассчитайте все в метрах, а затем преобразуйте результат в футы или мили на дисплее. Думайте метры!

Морская миля — это расстояние, на которое приходится угловая минута (1/60 градуса) земного радиуса. Это означает, что расстояние между градусом широты и следующим целым градусом составляет шестьдесят морских миль. Градус долготы равен шестидесяти морским милям на экваторе, но расстояние между соседними целыми градусами долготы уменьшается по мере того, как вы меняете широту по направлению к полюсам. Промежутки между градусами широты постоянны; расстояние между градусами долготы является переменным.

Нынешние разработчики приложений мыслят метрами, но давным-давно мореплаватели описывали положение своего корабля относительно английских единиц градусов, минут и секунд. Широта и долгота по-прежнему описываются в градусах, минутах и ​​секундах. Это неудобные единицы для использования на компьютере, поэтому разработчики и другие лица обычно используют десятичные описания широты и долготы, чтобы упростить математические вычисления. Глядя на 0,00001 градуса широты, он преобразуется в 0,9144 метра. Поэтому информация о местоположении спутника имеет точность до 0,9 метра. Наилучшая возможная точность со специализированными приемниками GPS составляет примерно три метра. Существуют методы улучшения разрешения. При разработке приложений с помощью этого инструмента помните, что GPS на вашем устройстве может многое сделать, но во многих ситуациях его точность ограничена.

Вы сделаете все возможное, разрабатывая приложения, используя LocationSensor , если вы понимаете, как работает система GPS. Принципы геолокации описаны в конце руководства.

GPS Accuracy Logger Простое GPS-приложение

GPS Accuracy Logger — это приложение, демонстрирующее использование GPS-приемника устройства. Приложение также демонстрирует, как точность GPS устройства зависит от того, где находится устройство. Компонент LocationSensor дает указание GPS-приемнику в мобильном устройстве получить фиксацию спутника (найти спутник, определить, что информация со спутника действительна, найти как минимум еще два спутника для подтверждения информации, и только затем сообщить информацию обратно на ваше устройство). Некоторые GPS-навигаторы могут использовать от 12 до 20 спутников для получения очень точных данных, при условии, что GPS-приемник способен принимать данные по 12 или 20 каналам. Многие простые устройства будут использовать только несколько спутников.

Приложение регистратора собирает данные о местоположении широты и долготы и предоставляет числовую оценку надежности спутниковой фиксации GPS (

Точность ). Небольшие значения точности указывают на лучшую точность. Приложение сообщает, что GPS разрешает как широту и долготу, и демонстрирует, как точность устройства может меняться по мере того, как GPS обновляет свои спутниковые координаты, или когда устройство перемещается снаружи внутрь здания или теряет фиксацию на спутниках, которые он использует для определения расположение.

Обратите внимание на изображение ниже изменения показаний точности за короткий период времени (восемь минут). Это устройство было неподвижно на столе внутри здания, когда оно фиксировало показания, и существуют значительные различия в способности устройства предоставлять точную информацию о местоположении. Спутники постоянно движутся вокруг Земли. GPS в устройстве теряет точность по мере уменьшения количества спутников, которые он может принимать. Точность обычно увеличивается по мере того, как GPS принимает больше спутников. MIT App Inventor может сообщать о точности любого исправления при условии, что GPS-приемник на устройстве имеет возможность сообщать о точности (одно из многих свойств LocationSensor, описанных ниже). GPS предназначен для использования как можно большего количества информации и с максимально возможного количества спутников, чтобы обеспечить максимально возможную точность в любой момент времени. Ниже обсуждается, почему важна точность, что вызывает ее колебания и что может сделать разработчик, чтобы свести к минимуму влияние на пользователей приложения, избегая сообщения о «подозрительных» данных о местоположении.

Примечание: Чтобы протестировать это приложение, вы должны использовать устройство с возможностями GPS. Тестирование с помощью эмулятора не даст вам истинной информации о местоположении.

Ниже приводится краткое обсуждение того, что можно сделать для предоставления информации о местоположении путем подключения к сети или через WIFI. Телефоны/планшеты без приемника GPS могут предоставлять данные о местоположении (хотя они менее точны).

Спутники передают информацию в формате NMEA 0183, стандарте для связи с морскими электронными устройствами, который также используется для GPS. Поток данных NMEA представляет собой компиляцию большого количества данных, передаваемых со спутника в текстовом формате. MIT App Inventor не может интерпретировать всю информацию, доступную в потоке данных, передаваемом со спутников. Несмотря на ограничения Компонент LocationSensor , AI2 обеспечивает основные функции, необходимые для получения информации о местоположении с вашего устройства.

Для приложения GPS Accuracy Logger требуется всего несколько компонентов и блоков. В конструкторе добавьте следующие компоненты и задайте свойства, как указано в списке.

Компонент Компонент Ящик Название компонента Назначение Свойства
Этикетка Интерфейс пользователя Метка широты Отображает текущее значение широты с LocationSensor Текст: Широта
Этикетка Интерфейс пользователя Метка долготы Отображает текущее значение долготы, полученное датчиком местоположения. Текст: Долгота
Горизонтальное расположение Макет Горизонтальное расположение1 Содержит следующие 3 ярлыка, чтобы они отображались рядом друг с другом Ширина: Заполнить родительский элемент
Этикетка Интерфейс пользователя AccuracyNowLabel Отображает метку для представления текущей точности Текст: Точность Сейчас:
Этикетка Интерфейс пользователя Метка точности Отображает текущее значение точности от LocationSensor Текст: точность
Этикетка Интерфейс пользователя Метры Этикетка Отображает метку для метки погрешности +/- метров Текст: +/- метры
Этикетка Интерфейс пользователя Метка предупреждения Уведомляет пользователя о точности GPS на устройствах Ширина: 98%
Цвет фона: Светло-серый
Текст: *** Убедитесь, что GPS включен на вашем устройстве. Не все устройства могут отображать точность GPS. ***
Этикетка Интерфейс пользователя Метка заголовка данных Заголовок дисплея для данных точности Текст: «Время +/-M Широта Долгота»
TextColor: Синий
Этикетка Интерфейс пользователя Метка данных Отображение данных, полученных от LocationSensor Текст: «» (пусто)
Датчик местоположения Датчики Датчик местоположения1 Предоставляет информацию о местоположении от GPS на устройстве DistanceInterval: 0
TimeInterval: 60000
Часы Датчики Часы1 Будет использоваться для периодического опроса LocationSensor для получения информации о точности. Интервал таймера 1000

Ваш Designer Viewer и список компонентов должны выглядеть примерно так:

Переключиться в редактор блоков. Инициализируйте переменную LS_Accuracy равным 1. Это будет содержать значение точности, которое мы получаем от LocationSensor .

Блок событий LocationSensor1.LocationChanged срабатывает, когда GPS подтверждает изменение местоположения на устройстве. Сообщаемые широта и долгота указаны в десятичных градусах. Установите сообщаемую широту и долготу в соответствующих метках в приложении.

Clock1.Timer будет запускаться каждую секунду и проверять точность Датчик местоположения . Блок if-else проверяет, является ли точность меньше или равной 10 метрам, и меняет цвет текста для AccuracyLabel на черный (10 метров).

Второй блок if-then сравнивает текущее значение точности с точностью, определенной во время предыдущей проверки и сохраненной в переменной LS_Accuracy. Если точность изменилась, приложение сообщает о новой строке в списке данных. Список перечисляет последнюю точность, широту и долготу. Этот «список» отображается внизу экрана приложения. Символ \n используется для принудительного размещения каждого набора данных (состоящего из времени, точности, широты и долготы) в отдельных строках.

И, наконец, точность сохраняется в переменной LS_Accuracy для сравнения на следующей итерации.

Для чего нужна \n в текстовых блоках? Этот символ (состоящий из обратной косой черты и символа n) приводит к изменению строки в метке. Размещение символа в текстовом блоке помогает сделать форматирование читаемым при обновлении метки данных на экране.

Когда датчик местоположения «узнает», когда нужно проверить наличие спутника? Есть два свойства, которые могут вызвать это. Первый это Свойство TimeInterval . В этом приложении мы установили TimeInterval на 60000 или 1 минуту. Затем LocationSensor будет каждую минуту проверять новую информацию о местоположении. Свойство DistanceInterval — это еще один способ запуска новых данных. В этом приложении свойство имеет значение 0, поэтому любое обнаруженное изменение местоположения (через 1 минуту) вызовет событие LocationSensor1. LocationChanged.

Попробуйте приложение с MIT AI2 Companion. Вы должны начать получать данные, и значение точности должно измениться. Если вы этого не сделаете, убедитесь, что в настройках вашего приложения MIT AI Companion включены разрешения на определение местоположения. Вам должно быть предложено, но вы также можете проверить настройки приложения.

Если вы создадите файл apk и установите это приложение на свое устройство, во время установки вам также будет предложено включить разрешения на определение местоположения для приложения. Если нет, обязательно зайдите в настройки приложения и включите разрешения на определение местоположения, прежде чем использовать приложение.


Тестовое приложение датчика местоположения AI2

Это приложение намного сложнее и демонстрирует большинство возможностей компонента AI2 LocationSensor . Вот ссылка на aia, чтобы вы могли изучить код. На двух изображениях ниже показано работающее приложение проверки датчика местоположения. На изображении слева показано приложение для проверки датчиков в действии, но до нажатия кнопки «Возможности». Коснитесь кнопки, и экран должен выглядеть так, как показано на рисунке справа. Приложение подтверждает, что GPS планшета имеет все необходимые возможности.

Особенности приложения:

  • После того, как «Получить местоположение?» кнопка нажата, предоставляет информацию о точности, широте и долготе.
  • Нажмите кнопку «Возможности», чтобы узнать, существуют ли возможности широты/долготы, высоты над уровнем моря и точности на тестируемом устройстве. Не все устройства имеют все эти возможности.
  • Сообщает точность определения местоположения каждого спутника GPS в +/- метрах. Значение Точности — это радиус в метрах вокруг обнаруженного местоположения датчика. Устройство с вероятностью 68% находится в этом радиусе.
  • Отображает доступных поставщиков услуг. На планшете WIFI вы, возможно, получите только «gps»; на телефоне будет больше возможностей, если в телефоне есть настоящий GPS.
  • Отображает текущего выбранного поставщика услуг. Вы можете переключаться между GPS и сетью, нажав кнопку «Переключить поставщика». Он переключается между GPS и сетью только в приложении.
  • Сообщает о высоте, но только если GPS устройства имеет такую ​​возможность. Не ожидайте, что высота изменится, когда вы перейдете с уровня улицы на третий этаж здания. Измерение не такое точное.
  • Сообщает текущий адрес, только если адрес местоположения доступен.
  • Отображается, если устройство переместилось больше, чем выбрано DistanceInterval. Прочтите предостережения в разделе ниже.
  • Позволяет установить интервалы расстояния и времени. Расстояние установлено на 0 по умолчанию; Время до 60000 мс (одна минута). Оба значения отображаются в приложении.
  • Предоставляет журнал данных о точности, широте и долготе за определенный период времени. Установите флажок «Данные журнала», чтобы включить эту функцию.
  • Сообщает, имеет ли GPS фиксацию спутника или нет, и является ли информация о местоположении сетевой. Читайте об исправлении ниже.
  • Позволяет сбросить настройки времени и расстояния LocationSensor до значений по умолчанию с помощью кнопки «Закрыть приложение и сбросить местоположение, расстояние и время».
Как телефон/планшет «узнает» свое местоположение

Понимание того, как работают GPS и беспроводные сети, необходимо для понимания компонента LocationSensor. И GPS, и беспроводные сети предоставляют информацию о местоположении по-разному. Компонент LocationSensor может получать информацию, используя любую систему.

Все, что вы хотите знать о GPS и о том, как работают приемники GPS, собрано здесь: http://en.wikipedia.org/wiki/Global_Positioning_System. Википедия не всегда является самым точным источником, но в этом случае Википедия представляет собой довольно хорошее введение в концепции геолокации.

Спутники GPS передают два типа данных, называемых альманахом и эфемеридами. Данные альманаха включают параметры орбиты спутника. Это точные данные и действительны в течение нескольких месяцев. Эфемеридные данные включают в себя данные об орбите и поправку часов для каждого спутника, необходимые для точного позиционирования. Когда GPS изначально включен, приемник «ищет» спутники в зависимости от того, где спутник должен находиться, как описано в Альманахе и с поправкой на текущее время. GPS определяет, действительны ли данные альманаха; если Альманах недействителен, возможно, если приемник GPS был отключен на некоторое время, GPS ищет небо или повторно инициализируется внутри, чтобы он мог загрузить новый Альманах со спутника и начать все сначала. Вот почему исправление может занять больше времени при первом включении устройства, а последующие исправления выполняются быстрее.

GPS-приемнику требуется четкий обзор неба для получения данных эфемерид / альманаха со спутников. Он использует эти данные для определения местоположения. Для предоставления информации о местоположении требуются измерения как минимум с трех спутников. GPS-приемники обычно могут использовать от 12 до 20 спутников для предоставления точной информации. Несколько факторов определяют, сколько спутников используется GPS в задании. GPS может видеть ограниченное количество спутников, некоторые спутники могут не работать, или объекты могут блокировать спутник и снижать мощность его широковещательного сигнала. На практике большинство GPS используют менее 9или 10 спутников для определения местоположения.

Беспроводные сети используют триангуляцию для определения местоположения устройства. Информация о местоположении получается быстрее, чем данные, полученные с помощью GPS-привязки. Исправление GPS может занять от нескольких секунд до минуты или около того с одноканальными приемниками GPS. Сетевое исправление очень быстрое. Однако данные, предоставляемые беспроводными сетями, менее надежны, чем большинство исправлений GPS. Мобильные телефоны получают идентификаторы вышек сотовой связи от ближайших трех или четырех вышек сотовой связи поблизости. Технология использует разницу во времени прибытия, чтобы определить ваше «точное» местоположение с точностью до 10-50 метров в течение 10-15 секунд. Этот метод называется MS-Assist для телефонов GSM. Резервный метод называется Cell ID. Идентификатор соты является пассивным предположением с точностью от 1,7 до 8 км (1-5 миль) и, возможно, используется, если MS-Assist не сообщает о достаточной достоверности для определения местоположения менее чем на 100 метров (минимальный порог производительности для MS). -Ассистент).

Мобильное устройство использует GPS для получения точного снимка своего местоположения в движении или на месте. Беспроводные сети можно использовать для стационарных позиций при отсутствии приемника GPS. Информация об этих системах, представленная в этом руководстве, может быть устаревшей по мере совершенствования технологий. Следите за дальнейшими улучшениями в системах позиционирования GPS и беспроводной сети в Интернете.

Что нужно знать разработчикам для использования компонента LocationSensor

Чтобы создать успешное приложение на основе геолокации, разработчик должен знать, как работает спутниковая система GPS, и учитывать ограничения, существующие из-за качества приемников GPS в мобильных устройствах.

  1. Компонент LocationSensor сообщает широту и долготу, используя десятичный разделитель точки.
  2. Чувствительность приемников GPS в разных устройствах различается. Некоторые устройства более чувствительны к тому, находится ли телефон/планшет в здании, под деревьями или перемещается в каньонах (например, в горах, между небоскребами или просто высокими зданиями). Здания закрывают линию обзора от GPS до позиционных спутников. Слабые сигналы приводят к снижению точности или потере фиксации.
  3. Точность GPS-приемника зависит от количества спутников, которые он может зафиксировать (получить и подтвердить) в любой момент. Следовательно, точность определения местоположения, сообщаемая устройством, может легко варьироваться в пределах плюс-минус 50 метров или около того за очень короткий период времени. Точность GPS также зависит от качества GPS-приемника вашего устройства. Настоящие приемники GPS, используемые в коммерческих целях, а не планшеты/телефоны, могут иметь точность менее 2 метров. Ваш телефон, вероятно, не имеет такой возможности, но может. Большинство GPS имеют 12 параллельных каналов. Каналы помогают принимать спутниковые сигналы. Некоторые ранние приемники GPS имели только один канал, а это означало, что приемник медленнее определял положение и, возможно, не имел точности приемника с несколькими каналами. В более новых телефонах есть приемники с 20 каналами и A-GPS и ГЛОНАСС (ГЛОНАСС — российская версия GPS), которые могут работать вместе. LocationSensor не поддерживает ГЛОНАСС.
  4. LocationSensor.DistanceInterval может инициировать непредвиденный ответ на изменение местоположения, если установлено большее число. Это может произойти из-за того, что GPS находится в постоянном движении и иногда, в зависимости от того, как могут использоваться спутниковые привязки, может предоставлять очень ошибочную информацию о местоположении. Раннее срабатывание устройства можно предотвратить, предоставив логические блоки для срабатывания только тогда, когда точность GPS находится в пределах запрограммированных вами значений.
  5. Когда о точности GPS сообщает 9Например, 0031 LocationSensor.Accuracy равно 32 метрам, это означает, что если для LocationSensor.DistanceInterval установлено значение меньше 32 метров, GPS попытается выполнить новое исправление (изменение), как если бы расстояние было установлено на 0 метров. . Блоки GPS в недорогих телефонах особенно не очень точны, а некоторые планшеты вообще не имеют GPS.
  6. Чтобы понять, как изменяется точность (надежность позиционирования) вашего устройства, используйте описанное выше приложение GPS Accuracy Logger, установите DistanceInterval до нуля и следите за изменениями точности вашего GPS.

В обзоре GPS-приемник в большинстве телефонов не совсем точен. Информация о местоположении, которую он предоставляет, может составлять в среднем только +/- 50 метров, а иногда и +/- 5 метров. Свойство «Точность» говорит вам, насколько надежен любой отдельный спутник. Приемники GPS в телефонах не очень чувствительны. Встроенный GPS теряет сигнал в зданиях и может быть затруднен в городских условиях. Не все планшеты имеют GPS-приемник. Те планшеты, у которых нет приемника GPS, имеют гораздо более низкую точность позиционирования по сравнению с теми, у которых есть GPS. Устройства без приемника GPS могут использовать триангуляцию между вышками сотовой связи и/или местоположение Wi-Fi для приблизительного определения местоположения телефона.

Первоначальная фиксация спутника на большинстве устройств занимает от 30 до 40 секунд. Последующие исправления спутников обычно занимают около 20 секунд на большинстве устройств. Когда разработчик устанавливает для LocationSensor.TimeInterval значение 1000 мс (1 секунда), событие LocationChanged срабатывает, но не обновляет местоположение раз в секунду. Очень разумным значением TimeInterval может быть 20000 мс.

В датчике местоположения есть опция для определения близости к пункту назначения. Эксперименты показывают, что эта функция не очень точна при небольших изменениях расстояния. При регулярном использовании LocationSensor.DistanceInterval свойство. Обычно GPS «срабатывает» в зависимости от времени, но вы также можете разрешить датчику местоположения «срабатывать» в зависимости от пройденного расстояния. Я вижу приложение, смешивающее два метода. Местоположение будет инициировать исправление GPS на основе времени, но оно также попытается инициировать на основе движения с момента последнего исправления. Десятиметровая выборка местности не кажется практичной. потому что телефонный GPS может разрешать только +/- 50 метров. Посмотреть на себя. Используйте блок LocationSensor1.Accuracy и проверяйте показания точности каждую минуту и ​​смотрите, что получится? GPS Accuracy Logger делает это, поэтому код доступен в этом руководстве.

Прочитайте описание датчика местоположения от команды MIT App Inventor здесь http://appinventor.mit.edu/explore/content/sensors.html.

Загрузки
  • GPSAccuracyLogger.aia
  • LocationSensorTest. aia

Работа с расположением датчиков — документация MNE 1.2.1

В этом руководстве описывается, как считывать и отображать расположение датчиков, а также как MNE-Python обрабатывает физическое расположение датчиков. Как обычно, начнем с импорта необходимых нам модулей:

 из пути импорта pathlib
импортировать matplotlib.pyplot как plt
импортировать numpy как np
# для matplotlib < 3.2 требуется следующий импорт:
из mpl_toolkits.mplot3d импортировать Axes3D # noqa
импортировать меня
 

О монтажах и макетах

Монтажи содержат положения датчиков в 3D (x, y, z в метрах), которые можно присвоить существующим данным ЭЭГ/МЭГ. Указав расположение датчиков относительно мозга, Монтажи играют важную роль в вычислении прямое решение и обратные оценки.

Напротив, Макеты являются идеализированными 2D представление положения датчиков. В основном они используются для организации отдельные подграфики датчиков на топоплате или для отображения приблизительного относительное расположение датчиков, если смотреть сверху.

Примечание

Если вы работаете исключительно с данными ЭЭГ, вам следует использовать Монтажи , а не макеты. Идеализированные монтажи (например, предоставленные производителем или поставляемые вместе с MNE-Python, упомянутый ниже), обычно называют шаблонные монтажи.

Работа со встроенными монтажами

Трехмерные координаты датчиков МЭГ включены в необработанные записи МЭГ. системы. Они автоматически сохраняются в атрибуте info файла Необработанный объект при загрузке. Расположение электродов ЭЭГ намного больше. изменчивы из-за различий в форме головы. Идеализированные монтажи ("шаблонные монтажи") для многих систем ЭЭГ являются включены в MNE-Python, и вы можете получить их обзор, используя mne.channels.get_builtin_montages() :

 встроенные_монтажи = mne.channels.get_builtin_montages(descriptions=True)
для montage_name, montage_description во встроенных_монтажах:
    print(f'{montage_name}: {montage_description}')
 
 standard_1005: Электроды названы и расположены в соответствии с международной системой 10-05 (343+3 местоположения)
standard_1020: Электроды названы и расположены в соответствии с международной системой 10-20 (94+3 места). 
standard_alphabetic: названия электродов состоят из комбинаций БУКВ-ЧИСЛОВ (A1, B2, F4, …) (65+3 местоположения)
standard_postfixed: Электроды названы по международной системе 10-20 с использованием постфиксов для промежуточных позиций (100+3 местоположения)
standard_prefixed: Электроды названы по международной системе 10-20 с использованием префиксов для промежуточных позиций (74+3 позиции)
standard_primed: Электроды названы по международной системе 10-20 с использованием штрихов (' и '') для промежуточных позиций (100+3 местоположения)
biosemi16: колпачок BioSemi с 16 электродами (16+3 места)
biosemi32: колпачок BioSemi с 32 электродами (32+3 места)
biosemi64: колпачок BioSemi с 64 электродами (64+3 места)
biosemi128: колпачок BioSemi со 128 электродами (128+3 места)
biosemi160: колпачок BioSemi со 160 электродами (160+3 места)
biosemi256: колпачок BioSemi с 256 электродами (256+3 места)
easycap-M1: EasyCap с 10-05 названиями электродов (74 места)
easycap-M10: EasyCap с пронумерованными электродами (61 место)
EGI_256: Сеть геодезических датчиков (256 точек)
GSN-HydroCel-32: Сеть геодезических датчиков HydroCel и Cz (33+3 местоположения)
GSN-HydroCel-64_1. 0: Сеть геодезических датчиков HydroCel (64+3 точки)
GSN-HydroCel-65_1.0: Сеть геодезических датчиков HydroCel и Cz (65+3 местоположения)
GSN-HydroCel-128: Сеть геодезических датчиков HydroCel (128+3 местоположения)
ГСН-ГидроЦел-129: Сеть геодезических датчиков HydroCel и Cz (129+3 местоположения)
GSN-HydroCel-256: Сеть геодезических датчиков HydroCel (256+3 местоположения)
GSN-HydroCel-257: Сеть геодезических датчиков HydroCel и Cz (257+3 местоположения)
mgh60: (более старая) 60-канальная крышка, используемая в MGH (60 + 3 местоположения).
mgh70: (более новая) 70-канальная крышка BrainVision, используемая в MGH (70+3 местоположения).
artinis-octamon: Artinis OctaMon fNIRS (8 источников, 2 детектора)
artinis-brite23: Artinis Brite23 fNIRS (11 источников, 7 детекторов)
brainproducts-RNP-BA-128: Brain Products с 10-10 названиями электродов (128 каналов)
 

Эти встроенные монтажи ЭЭГ могут быть загружены с mne.channels.make_standard_montage :

 easycap_montage = mne. channels.make_standard_montage('easycap-M1')
печать (easycap_montage)
 
 <Раскопки | 0 дополнительных элементов (форма головы), 0 HPI, 3 реперных точки, 74 канала>
 

Монтаж объектов имеют график метод визуализации расположения датчиков в 2D или 3D:

 easycap_montage.plot() # 2D
fig = easycap_montage.plot(kind='3d', show=False) # 3D
fig = fig.gca().view_init(azim=70, elev=15) # установить угол обзора для туториала
 

После загрузки монтаж можно применить к данным с set_montage метод, например raw.set_montage() , эпох.set_montage() , или evked.set_montage() . Это будет работать только с данные, названия каналов ЭЭГ которых соответствуют названиям каналов в монтаже. (Поэтому ниже мы загружаем некоторые данные ЭЭГ, а не обычную «выборку» МНЭ. набор данных.)

Затем вы можете визуализировать расположение датчиков с помощью метод plot_sensors() .

Также можно пропустить этап ручной загрузки монтажа, пропустив имя монтажа непосредственно в метод set_montage() .

 ssvep_folder = mne.datasets.ssvep.data_path()
ssvep_data_raw_path = (ssvep_folder / 'sub-02' / 'ses-01' / 'eeg' /
                       'sub-02_ses-01_task-ssvep_eeg.vhdr')
ssvep_raw = mne.io.read_raw_brainvision (ssvep_data_raw_path, подробный = False)
# Используйте предварительно загруженный монтаж
ssvep_raw.set_montage(easycap_montage)
рис = ssvep_raw.plot_sensors (show_names = True)
# Применить монтаж шаблона напрямую, без предварительной загрузки
ssvep_raw.set_montage('easycap-M1')
рис = ssvep_raw.plot_sensors (show_names = True)
 

Примечание

Возможно, вы заметили, что фигуры, созданные с помощью plot_sensors() содержит меньше датчиков, чем результат easycap_montage.plot() . Это потому что монтаж содержит все каналы, определенные для этой системы ЭЭГ ; но нет все записи обязательно будут использовать все возможные каналы. Таким образом, когда применение монтажа к реальному набору данных ЭЭГ, информация о датчиках которые фактически не присутствуют в данных, удаляются.

Построение 2D-датчиков, таких как EEGLAB

В MNE-Python центр головы по умолчанию рассчитывается с использованием реперные точки. Это означает, что окружность головы представляет собой окружность головы на уровне носа и уха уровень , а не там, где он обычно измеряется в системе 10–20 ЭЭГ (т. е. над носом в точках T4/T8, T3/T7, Oz и Fpz).

Если вы предпочитаете рисовать круг головы, используя 10–20 условных обозначений (которые также используется EEGLAB), вы можете пройти сфера = 'eeglab' :

 рис = ssvep_raw.plot_sensors (show_names = True, сфера = 'eeglab')
 
 Приближение положения Fpz путем отражения координат Oz по осям X и Y.
 

Поскольку данные, которые мы здесь используем, не содержат канал Fpz, их предполагаемое местоположение было аппроксимировано автоматически.

Ручное управление проекцией 2D-канала

Положения каналов в 2D-пространстве получаются путем проецирования их фактических 3D-изображений. позиции на сфере, а затем проецировать сферу на плоскость. По умолчанию сфера с началом в (0, 0, 0) (координаты x, y, z) и радиус 0,095 метров (9,5 см). Вы можете использовать другую сферу радиус, передав одно значение в качестве аргумента сфера в любой функции который отображает каналы в 2D (например, график , который мы используем здесь, но и например mne.viz.plot_topomap ):

 fig1 = easycap_montage.plot() # радиус по умолчанию 0,095
fig2 = easycap_montage.plot (сфера = 0,07)
 

Чтобы изменить не только радиус, но и начало сферы, передайте (x, y, z, радиус) кортеж как сфера аргумент:

 рис = easycap_montage.plot(сфера=(0,03, 0,02, 0,01, 0,075))
 

Чтение файлов оцифровки датчика

В примере данных позиции датчиков уже доступны в info атрибут объекта Raw (см. документацию функции чтения и set_montage() для получения подробной информации о том, как это работает). Таким образом, мы можем отображать расположение датчиков непосредственно из Необработанный объект с использованием plot_sensors() , который обеспечивает функциональность аналогична montage.plot() . В Кроме того, plot_sensors() поддерживает выбор канала тип, цветовое кодирование каналов различными способами (по умолчанию каналы, перечисленные в raw.info['bads'] будет отображаться красным цветом), а рисование в существующем Объект Matplotlib Axes (поэтому позиции канала можно легко добавить как подсюжет в многопанельной фигуре):

 sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_path = (sample_data_folder / 'MEG' / 'sample' /
                        'sample_audvis_raw.fif')
sample_raw = mne.io.read_raw_fif(
    sample_data_raw_path, предварительная загрузка = False, подробный = False
)
рис = plt. figure()
ax2d = fig.add_subplot(121)
ax3d = fig.add_subplot(122, проекция='3d')
sample_raw.plot_sensors (ch_type = 'eeg', оси = ax2d)
sample_raw.plot_sensors(ch_type='eeg', оси=ax3d, вид='3d')
ax3d.view_init (азимус = 70, высота = 15)
 

Предыдущая 2D-топограмма показывает неравномерность положения датчиков ЭЭГ в образец набора данных — это потому, что датчик позиции в этом наборе данных представляют собой оцифровку фактических положений датчика на голову, а не идеализированные положения датчиков, основанные на модели сферической головы. В зависимости от устройства оцифровки (например, дигитайзер Polhemus Fastrak), вам необходимо использовать различные функции чтения монтажа (см. Поддерживаемые форматы для оцифрованных 3D-локаций). В результате монтаж можно добавить к Необработанные объекты , передав их в качестве аргумента метод set_montage() (так же, как мы делали раньше с именем предопределенного монтажа 'standard_1020' ). После загрузки локации могут быть построен с помощью метода plot() и сохранен с помощью метод save() монтаж объект.

Примечание

При установке монтажа с помощью set_montage() , информация об измерении обновляется в двух местах (оба чс и копать записи обновлены) – см. Структура данных Info для более подробной информации. Примечание что dig может дополнительно содержать HPI, реперные точки или точки формы головы к местам расположения электродов.

Визуализация датчиков в 3D-рендерингах поверхностей

Также можно визуализировать изображение шлема с датчиком МЭГ с помощью 3D. рендеринг поверхности вместо matplotlib. Это работает, вызывая mne.viz.plot_alignment() :

 рис = mne.viz.plot_alignment(
    sample_raw.info, dig=False, eeg=False,
    surface=[], meg=['шлем', 'сенсоры'],
    coord_frame = 'мег'
)
mne.viz.set_3d_view(рисунок, азимут=50, высота=90, расстояние=0,5)
 
 Получение шлема для системы 306м
Типы каналов:: град: 203, маг: 102
 

Обратите внимание, что для plot_alignment() требуется объект Info , и также может визуализировать МРТ-поверхности скальпа, черепа и головного мозга (путем прохождения dict с такими ключами, как 'head' , 'outer_skull' или 'brain' в поверхностей параметр). Это делает функцию полезной для оценка преобразований системы координат. Для примеров различного использования plot_alignment() , см. Построение схемы датчиков систем ЭЭГ, Построение датчиков ЭЭГ на коже головы и Построение расположения датчиков систем МЭГ.

Работа с файлами макета

Подобно монтажу, многие файлы компоновки включены в MNE-Python. Они есть хранится в папке mne/channels/data/layouts :

 layout_dir = Путь(mne.__file__).parent/'каналы'/'данные'/'макеты'
layouts = sorted(path.name для пути в layout_dir.itrdir())
Распечатать(
    '\n'
    'ВСТРОЕННЫЕ МАКЕТЫ\n'
    '================='
)
печать('\n'.присоединиться(макеты))
 
 ВСТРОЕННЫЕ МАКЕТЫ
================
CTF-275.lout
CTF151.lay
CTF275.lay
ЭЭГ1005.lay
EGI256.lout
GeodesicHeadWeb-130.lout
GeodesicHeadWeb-280.lout
КОМПЛЕКТ-125.лут
КОМПЛЕКТ-157.лут
КИТ-160.укладка
KIT-AD.lout
КОМПЛЕКТ-AS-2008.lout
КОМПЛЕКТ-UMD-3.lout
Нейромаг_122.lout
Vectorview-all.lout
Vectorview-grad. lout
Vectorview-grad_norm.lout
Vectorview-mag.lout
биосеми.лей
магнитыWh4600.lout
 

Чтобы загрузить файл макета, используйте функцию mne.channels.read_layout . Затем вы можете визуализировать макет, используя его участок метод:

 biosemi_layout = mne.channels.read_layout('biosemi')
 

Аналогично выбирает аргумент для выбора каналов из Необработанный объекты, метод plot() Объекты Layout также имеют аргумент выбирает . Однако, потому что макеты содержат только информацию о названии и местоположении датчика (не тип датчика), метод plot() поддерживает только выбор каналов по индексу (не по названию и не по типу). В следующем примере находим искомые индексы с помощью numpy.where () ; выбор по имени или тип возможен с помощью mne.pick_channels() или mne.pick_types() .

 midline = np.where([name. endswith('z') для имени в biosemi_layout.names])[0]
biosemi_layout.plot (выборки = средняя линия)
 

Если у вас есть объект Raw , который содержит положения датчиков, вы можете создать объект Layout либо с mne.channels.make_eeg_layout() или mne.channels.find_layout() .

 layout_from_raw = mne.channels.make_eeg_layout(sample_raw.info)
# тот же результат, что и у mne.channels.find_layout(raw.info, ch_type='eeg')
layout_from_raw.plot()
 

Примечание

Нет соответствующей функции make_meg_layout() , так как датчик местоположения фиксируются в системе МЭГ (в отличие от ЭЭГ, где сенсорные колпачки деформироваться, чтобы плотно прилегать к определенной голове). Таким образом, макеты MEG непротиворечивы (постоянны) для данной системы и их можно просто загрузить с mne.channels.read_layout() или используйте mne.channels.find_layout() с параметр ch_type (как показано ранее для ЭЭГ).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *