ГОСТ Р 60.6.8.1-2023
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Роботы и робототехнические устройства
ПРЕДСТАВЛЕНИЕ КАРТОГРАФИЧЕСКИХ ДАННЫХ ДЛЯ НАВИГАЦИИ РОБОТОВ
Robots and robotic devices. Map data representation for robot navigation
ОКС 25.040.30
35.240.99
Дата введения 2024-01-01
Предисловие
1 ПОДГОТОВЛЕН Федеральным государственным автономным научным учреждением "Центральный научно-исследовательский и опытно-конструкторский институт робототехники и технической кибернетики" (ЦНИИ РТК) на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 141 "Робототехника"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 31 августа 2023 г. N 781-ст
4 Настоящий стандарт является модифицированным по отношению к стандарту IEEE Std 1873-2015* "Стандарт IEEE для представления картографических данных для навигации роботов" (IEEE Std 1873-2015 "IEEE Standard for robot map data representation for navigation", MOD) путем внесения технических отклонений, объяснение которых приведено во введении к настоящему стандарту.
Наименование настоящего стандарта изменено относительно наименования указанного стандарта для приведения в соответствие с ГОСТ Р 1.5-2012 (пункт 3.5) и для увязки с наименованиями, принятыми в существующем комплексе национальных стандартов Российской Федерации.
Сведения о соответствии ссылочных национальных стандартов стандартам, использованным в качестве ссылочных в примененном стандарте, приведены в дополнительном приложении ДА
5 ВВЕДЕН ВПЕРВЫЕ
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.rst.gov.ru)
Введение
Требования стандартов комплекса ГОСТ Р 60 распространяются на роботы и робототехнические устройства. Целью стандартов является повышение интероперабельности роботов и их компонентов, а также снижение затрат на их разработку, производство и обслуживание за счет стандартизации и унификации процессов, интерфейсов, узлов и параметров.
Стандарты комплекса ГОСТ Р 60 представляют собой совокупность отдельно издаваемых стандартов. Стандарты данного комплекса относятся к одной из следующих тематических групп: "Общие положения, основные понятия, термины и определения", "Технические и эксплуатационные характеристики", "Безопасность", "Виды и методы испытаний", "Механические интерфейсы", "Электрические интерфейсы", "Коммуникационные интерфейсы", "Методы моделирования и программирования", "Методы построения траектории движения (навигация)", "Конструктивные элементы". Стандарты любой тематической группы могут относиться как ко всем роботам и робототехническим устройствам, так и к отдельным группам объектов стандартизации - промышленным роботам в целом, промышленным манипуляционным роботам, промышленным транспортным роботам, сервисным роботам в целом, сервисным манипуляционным роботам, сервисным мобильным роботам, а также к морским робототехническим комплексам.
Настоящий стандарт относится к тематической группе "Методы построения траектории движения (навигация)" и распространяется на сервисные мобильные роботы.
Настоящий стандарт является модифицированным по отношению к стандарту IEEE Std 1873-2015, разработанному Обществом робототехники и автоматизации IEEE при поддержке Постоянного комитета по стандартам. В настоящем стандарте определены модели и форматы картографических данных для решения роботами навигационных задач и конкретизированы представления двумерных метрических и топологических карт.
В настоящем стандарте не рассмотрены трехмерные, динамические и семантические карты.
В настоящий стандарт внесены следующие технические отклонения по отношению к стандарту IEEE Std 1873-2015:
- не включены примечания и сноски примененного стандарта, которые нецелесообразно применять в российской национальной стандартизации в связи с их содержанием, имеющим справочный характер и относящимся к системе стандартизации США;
- раздел 1 "Область применения" приведен в соответствие с требованиями ГОСТ 1.5-2001;
- рисунок 1 примененного стандарта, имеющий форму таблицы, преобразован в таблицу 1, соответственно изменена нумерация последующих рисунков и таблиц;
- в раздел 2 "Нормативные ссылки" настоящего стандарта не включены стандарты IEEE Std 754-2008, ISO/IEC 9899:2011 и ISO/IEC 10646:2012, не имеющие аналогов среди межгосударственных и национальных стандартов; соответственно в тексте стандарта нормативные ссылки на эти документы, заменены на справочные, что не меняет технического содержания документа;
- в разделе 3 "Термины, определения и сокращения" терминологические статьи расположены в алфавитном порядке и дополнены номерами, состоящими из номера раздела, номеров подразделов и порядковых номеров статей для приведения в соответствие с требованиями ГОСТ 1.5-2001;
- не включены определения терминов "rotation" и "translation", носящие частный характер, а сами термины встречаются в тексте примененного стандарта только в одном месте, где и пояснен их смысл;
- пункт 3.3.2 дополнен примером;
- из подраздела 3.5 исключены сокращения, не используемые в тексте настоящего стандарта;
- не включен номер подраздела 5.1 в соответствии с ГОСТ 1.5-2001 (пункт 4.2.3), номера пунктов 5.1.1-5.1.3 заменены на 5.1-5.3 соответственно;
- добавлены библиографические данные и ключевые слова в соответствии с ГОСТ 1.5-2001.
1 Область применения
1.1 Настоящий стандарт устанавливает общее представление двумерных карт, предназначенных для навигации мобильных роботов на закрытых и открытых территориях. Настоящий стандарт определяет характеристики для представления двумерных метрических и топологических карт и рекомендуемый формат для обмена картографическими данными между роботами, компьютерами и другими устройствами. Формат представления картографических данных, установленный в настоящем стандарте, соответствует только статическим картам, т.е. картам, на которых подвижные объекты не представлены в явном виде. Кроме того, настоящий стандарт не накладывает ограничений на географический масштаб карты или на качество поступающей сенсорной информации.
В частности, в настоящем стандарте:
a) установлена иерархия терминологий, относящихся к двумерным картам для навигации роботов в помещениях и на открытой местности;
b) определена модель данных для каждого элемента в данной иерархии;
c) определен XML-формат для обмена картографическими данными между роботами, компьютерными системами и другими устройствами.
Стандарты по представлению картографических данных разрабатывают разные организации по стандартизации, такие как Международная организация по стандартизации (ИСО) и Открытый консорциум по геоинформационным системам (OGC). Область применения настоящего стандарта может быть переформулирована с точки зрения масштаба охватываемой прикладной области. На рисунке 1 показано сравнение области применения настоящего стандарта с прикладными областями других стандартов.
Таблица 1 - Сравнение областей применения стандартов представления картографических данных
Объект | Среда функционирования робота | ||
рассмотрения | Помещение | Участок | Обширное пространство |
Примеры среды | Квартира, офис, магазин | Завод, терминал, ферма, лагерь | Поселок, округ, город |
Примеры роботов | Робот-пылесос, робот-компаньон, робот для развлечений | Сельскохозяйственный робот, логистический робот, разведывательный робот, охранный робот | Автономный автомобиль, беспилотник, военный робот |
Примеры применения | Помощь человеку по дому | Охрана периметра предприятия | Обследование больших территорий |
Применимый | - | (см. [1]) | (см. [2]) (см. [3]) |
стандарт | (см. [4]) | - | |
Настоящий стандарт |
1.2 Целью настоящего стандарта является определение общего представления картографических данных для роботов, включая метрические и топологические карты. Настоящий стандарт предназначен для облегчения взаимодействия между мобильными роботами, расширения рабочего диапазона и области применения роботов, технологического прогресса в области построения пространственных карт, осуществляемого роботами и/или другими подобными устройствами. Однако требования настоящего стандарта не распространяются на построение, поддержание, модернизацию и пересмотр карт для роботов.
2 Нормативные ссылки
В настоящем стандарте использована нормативная ссылка на следующий стандарт:
ГОСТ Р 60.0.0.4-2023/ИСО 8373:2021 Роботы и робототехнические устройства. Термины и определения
Примечание - При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя "Национальные стандарты" за текущий год. Если заменен ссылочный стандарт, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта с учетом всех внесенных в данную версию изменений. Если заменен ссылочный стандарт, на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта с указанным выше годом утверждения (принятия). Если после утверждения настоящего стандарта в ссылочный стандарт, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный стандарт отменен без замены, то положение, в котором дана ссылка на него, рекомендуется применять в части, не затрагивающей эту ссылку.
3 Термины, определения и сокращения
В настоящем стандарте применены термины по ГОСТ Р 60.0.0.4, а также следующие термины с соответствующими определениями:
3.1 Системы координат и преобразования
3.1.1 декартова система координат (Cartesian coordinate system): Система координат, определяющая положение точек по отношению к n взаимно перпендикулярным осям.
Примечание - Поскольку в настоящем стандарте рассмотрены двумерные карты, то n = 2.
3.1.2 локальная система координат (local coordinate system): Система координат, определенная на всем пространстве навигации робота.
Примечания
1 Начало локальной системы координат определяют пользователи в соответствии со своими требованиями.
2 Синонимом данного термина является термин "эгоцентрическая система координат (egocentric coordinate system)".
3.1.3
полярная система координат (polar coordinate system): Система координат, в которой положение объекта задается расстоянием и направлением от ее начала. [ГОСТ Р 52572-2006, пункт 3.33] |
3.1.4 преобразование координат (coordinate transformation): Процесс перевода координат пространственного расположения из одной системы координат в другую.
Примечание - В сущности, преобразование - это способ представления одной системы координат (или одной из ее точек) относительно другой. Поскольку в настоящем стандарте рассмотрены двумерные карты, преобразование координат ограничено двумерными перемещениями и вращениями.
3.1.5
система координат (coordinate system): Набор математических правил, описывающих, как координаты должны быть соотнесены с точками пространства. [ГОСТ Р 52572-2006, пункт 3.37] |
Примечание - Синонимом данного термина является термин "система отсчета (reference frame)".
3.2 Карты
На рисунке 1 показана иерархия карт, принятая в настоящем стандарте, которая помогает понять структуру модели картографических данных.
Рисунок 1 - Иерархия классов карт, определенных в настоящем стандарте
3.2.1 глобальная карта (global map): Совокупность (набор) локальных карт, возможно содержащая информацию об их взаимном расположении и об их расположении относительно глобальной системы координат.
3.2.2 дискретная метрическая карта (discrete metric map): Карта, в которой внешняя среда представлена в виде ячеек (обычно квадратных), содержащих элементарную информацию о внешней среде.
Примечание - Синонимами данного термина являются термины "карта с координатной сеткой (grid map)" и "растровая карта (raster map)".
3.2.3 карта (робота) [(robot) map]: Карта, представляющая знание робота о рабочем пространстве и окружающей среде, а также о расположенных в них объектах.
3.2.4 карта занятости с координатной сеткой (occupancy grid map): Дискретная метрическая карта, каждая ячейка которой содержит информацию о занятости данной ячейки препятствием.
Примечание - Обычно содержание ячейки связано с вероятностью ее занятости.
3.2.5 локальная карта (local map): Топологическая или метрическая карта.
3.2.6 метрическая карта (metric map): Совокупность картографических элементов (например, ячеек, точек и отрезков линий), обладающих следующим свойством: для любых заданных на карте двух элементов a и b и при наличии определения метрического расстояния расстояние между a и b всегда может быть вычислено.
Примечание - Использованное в определении слово "любых" является отличием метрических карт от топологических, для которых метрическое расстояние, в общем случае, может быть вычислено только для некоторых элементов.
3.2.7 непрерывная метрическая карта (continuous metric map): Карта, содержащая перечень геометрических объектов (таких как точки и линии), значения координат которых принадлежат к непрерывному числовому диапазону.
Примечание - Синонимами данного термина являются термины "геометрическая карта (geometric map)" и "векторная карта (vector map)".
3.2.8 топологическая карта (topological map): Представление внешней среды на основе графа, включающего вершины, дуги и отношения их связности.
Примечание - Вершины (узлы) топологической карты представляют характерные особенности (например, показания датчиков, уникальные признаки соответствующего региона, метрические карты и т.д.) внешней среды. Дуги (ребра) топологической карты представляют прямые (одно интервальные) соединения (прямая достижимость) между соседними вершинами. Дуга (ребро) соединяет пару вершин (узлов), (t, h), что означает, что дуга направлена от вершины t (конец) до вершины h (начало).
3.3 Компоненты карты
3.3.1 особенность (feature): Представление элемента окружающей среды, отличающегося от ближайших соседних элементов.
Пример - В представлении внешней среды в форме изображения особенностью является часть изображения (представляющая некоторый элемент внешней среды), имеющая отличающиеся характеристики по интенсивности, цвету или текстуре.
3.4 Сокращения
EPSG - Европейская нефтяная исследовательская группа (European Petroleum Survey Group);
ID - идентификатор (Identifier);
MDR - представление картографических данных (Map Data Representation);
UML - унифицированный язык моделирования (Unified Modeling Language);
XML - расширяемый язык разметки (eXtensible Markup Language);
XSD - язык определения XML-схемы (XML Schema Definition).
4 Соглашения
В настоящем стандарте для обозначения статуса обязательности используются следующие условные обозначения, которые представлены в графе "М/О" соответствующих таблиц:
Обозначение | Определение | Значение |
M | Обязательный | Данный атрибут должен быть представлен |
O | Факультативный | Данный атрибут может быть представлен |
Кроме того, в графе "Максимальное число появлений" (MO) указано максимально допустимое число появлений соответствующих значений атрибутов, а признак N указывает на отсутствие верхнего предела.
5 Представление картографических данных для навигации роботов
В данном разделе представлена стандартная модель данных для описания внешней среды в виде электронной карты, используемой для навигации роботов. В первую очередь определены некоторые применяемые понятия, а затем представлены конкретные форматы данных.
Более того, особое нулевое вращательно-поступательное перемещение (которое отлично от вращательно-поступательного перемещения, обозначаемого <0, 0, 0>) используют, когда отсутствует метрическая информация об относительном смещении двух узлов (т.е. в случае чисто топологических карт).
Иерархия структуры локальной карты представлена на рисунке 2. На UML-диаграммах, приведенных в данном разделе, атрибуты, которые в явном виде не определены как факультативные или многократные, являются обязательными и однократными. Для определения общего класса карт введено понятие локальной карты. Геометрическая карта, карта с координатной сеткой или топологическая карта должны быть унаследованными от локальной карты.
Примечание - Как определено в разделе 3, "геометрическая карта" и "карта с координатной сеткой" являются разными терминами, используемыми для обозначения непрерывной и дискретной метрической карты, соответственно. В настоящем стандарте эти два вида терминов являются взаимозаменяемыми; первый вид (геометрическая карта и карта с координатной сеткой) предпочтителен для относительно более технического описания представления картографических данных, в то время как второй вид чаще используют для иллюстративного описания.
Рисунок 2 - UML-диаграмма локальной карты
В таблицах 2-6 приведены определяющие элементы классов, относящихся к локальной карте.
Таблица 2 - Подробное описание класса LocalMap
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
id | ID данной локальной карты | M | 1 | string | [5], [6] |
offset | Пространственное расположение данной локальной карты. Данное поле следует использовать для преобразования локальных координат данной локальной карты в глобальную систему координат. Данное поле является факультативным для топологических карт | O | 1 | LocalMapTransform | Таблица 3 |
map_type | Тип данной локальной карты | M | 1 | LocalMapType | Таблица 4 |
coordinate_system | Информация, относящаяся к системе координат, с помощью которой представлена данная локальная карта. Локальная система координат должна быть декартовой системой координат с горизонтальной направленной вправо осью x и вертикальной направленной вверх осью у. Атрибут offset должен содержать преобразование между данной локальной системой координат и глобальной системой координат | O | 1 | CoordinateSystemType | Таблица 5 |
Данный перечисляемый тип данных основан на целочисленном типе данных (см. [ 5 ]). |
Таблица 3 - Подробное описание типа данных LocalMapTransform
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
offset_x | Смещение по оси x, а именно, координата x. Единица измерения - метр | M | 1 | double | [5] |
offset_y | Смещение по оси y, а именно, координата y. Единица измерения - метр | M | 1 | double | [5] |
theta | Смещение по оси ориентации, а именно, координата . Единица измерения - радиан | M | 1 | double | [5] |
uncertainty | Неопределенность преобразования | O | 1 | UncertaintyPose | Таблица 6 |
Тип "double" в [ 5 ] означает число с плавающей запятой двойной точности. |
Таблица 4 - Подробное описание перечисления LocalMapType
Мнемоника | Значение | Описание |
GridMap | 1 | Данная локальная карта является картой с координатной сеткой |
GeometricMap | 2 | Данная локальная карта является геометрической картой |
TopologicalMap | 3 | Данная локальная карта является топологической картой |
Таблица 5 - Подробное описание типа данных CoordinateSystemType
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
EPSG_code | ID глобальной (абсолютной) системы координат. Если факультативный атрибут EPSG_code не задан, то это относительная система координат. См. примечание | O | 1 | string в виде "type::code" | [5], [6] |
reference_local_map | ID локальной карты, система координат которой предназначена для отсчета смещения. Атрибуты EPSG_code и reference_local_map не могут быть заданы одновременно, но оба могут остаться неопределенными | O | 1 | string | [5], [6] |
Примечание - См. http://www.epsg.org. |
Таблица 6 - Подробное описание типа данных UncertaintyPose
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
covariance_xx | Значение элемента (1,1) ковариационной матрицы, характеризующего неопределенность пространственного расположения. Представляет дисперсию x | M | 1 | double | [5] |
covariance_yy | Значение элемента (2,2) ковариационной матрицы, характеризующего неопределенность пространственного расположения. Представляет дисперсию y | M | 1 | double | [5] |
covariance_thetatheta | Значение элемента (3,3) ковариационной матрицы, характеризующего неопределенность пространственного расположения. Представляет дисперсию | M | 1 | double | [5] |
covariance_xy | Значение элементов (1,2) и (2,1) ковариационной матрицы, характеризующих неопределенность пространственного расположения. Представляет ковариацию между x и y | M | 1 | double | [5] |
covariance_xtheta | Значение элементов (1,3) и (3,1) ковариационной матрицы, характеризующих неопределенность пространственного расположения. Представляет ковариацию между x и | M | 1 | double | [5] |
covariance_ytheta | Значение элементов (2,3) и (3,2) ковариационной матрицы, характеризующих неопределенность пространственного расположения. Представляет ковариацию между y и | M | 1 | double | [5] |
В качестве системы координат для представления картографических данных следует использовать декартову систему координат, у которой ось х направлена вправо от начала координат, а ось у - вверх.
Смещение локальной карты может быть:
- неопределенным, когда смещение не задано, что означает неизвестное пространственное расположение системы координат локальной карты. Это относится, например, к чисто топологическим картам;
- абсолютным, когда смещение задано вместе с ID EPSG_code, который определяет конкретную систему координат, в соответствии с которой рассчитывается смещение локальной карты;
- относительным по отношению к системе координат другой локальной карты, когда смещение задано вместе с reference_local_map, система координат которой является базой отсчета, в соответствии с которой рассчитывается смещение локальной карты;
- относительным по отношению к стандартной (0, 0, 0) системе координат, когда смещение задано, но не определены ни EPSG_code, ни reference_local_map.
С учетом глобальной карты, состоящей из нескольких локальных карт, настоящий стандарт должен обеспечивать выполнение одного из следующих ограничений:
C1) Если локальная карта имеет смещение, заданное абсолютным способом (геопривязанное), то все остальные локальные карты должны быть либо геопривязанными, либо определять свое пространственное расположение относительно геопривязанной локальной карты m (либо из-за того, что m является геопривязанной, либо из-за того что m определена относительно геопривязанной локальной карты m’) без образования циклов (т.е. ситуаций, когда смещение локальной карты выражено в конечном счете относительно этой локальной карты).
C2) Если ни одна локальная карта не является геопривязанной, то все локальные карты определяют свои смещения либо относительно стандартной (0, 0, 0) системы координат, либо относительно другой локальной карты. В данном случае также не должно быть циклов.
Если у двух локальных карт смещения определены относительно стандартной (0, 0, 0) системы координат, то преобразование между ними возможно рассчитать. Данный вариант неприменим, если у одной из них смещение не задано (является неопределенным).
В соответствии с приведенными способами задания смещения локальных карт можно создать глобальную карту, представляющую собой многоуровневое дерево локальных карт. Ее используют для представления неопределенности пространственного расположения в системах координат локальных карт.
5.1 Формат данных для карт с координатной сеткой
По умолчанию карта с координатной сеткой должна состоять из одинаковых квадратных ячеек, быть прямоугольной и соосной с локальной системой координат (т.е. границы прямоугольной карты параллельны осям х и у локальной системы координат). Координатами левой нижней ячейки являются (0, 0).
В таблицах 7-9 определены атрибуты и типы данных карты с координатной сеткой, а ее UML-диаграмма приведена на рисунке 3.
Таблица 7 - Подробное описание класса GridMap
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
resolution | Числовое значение, представляющее разрешение карты с координатной сеткой, выраженное в метрах; это длина стороны ячейки | M | 1 | double | [5] |
num_cells_x | Число ячеек вдоль оси x карты | M | 1 | unsigned int | [5] |
num_cells_y | Число ячеек вдоль оси y карты | M | 1 | unsigned int | [5] |
cells | Фактическое содержимое ячеек сетки | M | N (более точно, num_cells_x· num_cells_y) | GridCell | Таблица 8 |
palette_elements | Значение величин, хранящихся в ячейках | O | N | PaletteElement | Таблица 9 |
Таблица 8 - Подробное описание типа данных GridCell
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
x | Координата x данной ячейки, считая левую нижнюю ячейку началом координат (0, 0) | M | 1 | int | [5] |
y | Координата y данной ячейки, считая левую нижнюю ячейку началом координат (0, 0) | M | 1 | int | [5] |
height | Используется для кодирования прямоугольной области с использованием однородных (одинаковых) ячеек. Представляет высоту данной области (суперячейки). Значение по умолчанию равно 1 | O | 1 | unsigned int | [5] |
width | Используется для кодирования прямоугольной области с использованием однородных (одинаковых) ячеек. Представляет ширину данной области (суперячейки). Значение по умолчанию равно 1 | O | 1 | unsigned int | [5] |
value | Содержимое ячейки | M | 1 | double, значение представлено типом данных PaletteElement | [5] |
Палитра - это таблица или функция, которая определяет значения чисел для ячеек. Палитра должна быть массивом элементов типа данных PaletteElements (таблица 9), охватывающим все возможные значения для ячеек. Например, если сетка является сеткой занятости, то значение 0,0 может соответствовать нулевой вероятности (= 0) того, что ячейка занята препятствием, в то время как значение 1,0 может соответствовать полной вероятности (= 1) того, что ячейка занята препятствием. Возможны промежуточные значения вероятности. Для описания на естественном языке значения палитры или диапазона значений может быть использована строка символов.
Таблица 9 - Подробное описание типа данных PaletteElement
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
value_start | Атрибуты value_start и value_end могут быть использованы для представления граничных значений диапазона, чтобы показать, что все значения в диапазоне имеют одинаковую величину. Граничные значения включены в диапазон, т.е. диапазон обозначается как [value_start, value_end] | M | 1 | double | [5] |
value_end | Атрибуты value_start и value_end могут быть использованы для представления граничных значений диапазона, чтобы показать, что все значения в диапазоне имеют одинаковую величину. Граничные значения включены в диапазон, т.е. диапазон обозначается как [value_start, value_end]. Должно быть соблюдено условие value_end value_start. Если значение value_end не задано, то диапазон обозначают [value_start, value_start] | O | 1 | double | [5] |
meaning | Значение value_start или значения в диапазоне от value_start до value_end (граничные значения включены) | M | 1 | string | [5], [6] |
Рисунок 3 - UML-диаграмма карты с координатной сеткой
5.2 Формат данных для геометрических карт
На рисунке 4 показано представление геометрических карт в виде UML-диаграммы классов.
Рисунок 4 - UML- диаграмма геометрической карты
Точка представлена своими декартовыми координатами в локальной системе координат.
Рисунок 5 - Представление сегмента линии
В таблицах 10-13 подробно представлены элементы геометрических карт.
Таблица 10 - Подробное описание типа данных Point
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
x | Координата x точки относительно начала координат локальной карты. Единица измерения - метр | M | 1 | double | [5] |
y | Координата y точки относительно начала координат локальной карты. Единица измерения - метр | M | 1 | double | [5] |
uncertainty | Неопределенность расположения точки | O | 1 | UncertaintyPoint | Таблица 12 |
Таблица 11 - Подробное описание типа данных LineSegment
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
rho | Перпендикулярное расстояние от начала координат локальной системы координат карты до сегмента линии. Единица измерения - метр | M | 1 | double | [5] |
alpha | Ориентация вектора, представляющего перпендикулярное расстояние до сегмента линии, измеренное против часовой стрелки от горизонтальной оси x локальной системы координат карты. Единица измерения - радиан, а alpha имеет значение в полуинтервале [0,2 ) | M | 1 | double | [5] |
psi_a | Рассмотрим бесконечную линию, образованную расширением сегмента линии. Точка начала координат бесконечной линии определена как точка, в которой перпендикулярный вектор ее пересекает. Граничные точки сегмента линии определены относительно начала координат. psi_a - граничная точка, расположенная дальше от начала координат (см. рисунок 5). Единица измерения - метр | M | 1 | double | [5] |
psi_b | Рассмотрим бесконечную линию, образованную расширением сегмента линии. Точка начала координат бесконечной линии определена как точка, в которой перпендикулярный вектор ее пересекает. Граничные точки сегмента линии определены относительно начала координат. psi_b - граничная точка, расположенная ближе к началу координат (см. рисунок 5). Единица измерения - метр | M | 1 | double | [5] |
uncertainty | Неопределенность параметров сегмента линии | O | 1 | UncertaintyLine Segment | Таблица 13 |
Таблица 12 - Подробное описание типа данных UncertaintyPoint
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
covariance_xx | Значение элемента (1, 1) ковариационной матрицы, описывающей неопределенность относительно точки. Представляет дисперсию x | M | 1 | double | [5] |
covariance_xy | Значение элементов (1, 2) и (2, 1) ковариационной матрицы, описывающей неопределенность относительно точки. Представляет ковариацию между x и y | M | 1 | double | [5] |
covariance_yy | Значение элемента (2, 2) ковариационной матрицы, описывающей неопределенность относительно точки. Представляет дисперсию y | M | 1 | double | [5] |
Таблица 13 - Подробное описание типа данных UncertaintyLineSegment
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
covariance_rhorho | Значение элемента (1, 1) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет дисперсию rho | M | 1 | double | [5] |
covariance_rhoalpha | Значение элементов (1, 2) и (2, 1) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет ковариацию между rho и alpha | M | 1 | double | [5] |
covariance_rhopsi_a | Значение элементов (1, 3) и (3, 1) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет ковариацию между rho и psi_a | M | 1 | double | [5] |
covariance_rhopsi_b | Значение элементов (1, 4) и (4, 1) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет ковариацию между rho и psi_b | M | 1 | double | [5] |
covariance_alphaalpha | Значение элемента (2, 2) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет дисперсию alpha | M | 1 | double | [5] |
covariance_alphapsi_a | Значение элементов (2, 3) и (3, 2) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет ковариацию между alpha и psi_a | M | 1 | double | [5] |
covariance_alphapsi_b | Значение элементов (2, 4) и (4, 2) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет ковариацию между alpha и psi_b | M | 1 | double | [5] |
covariance_psi_apsi_a | Значение элемента (3, 3) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет дисперсию psi_a | M | 1 | double | [5] |
covariance_psi_apsi_b | Значение элементов (3, 4) и (4, 3) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет ковариацию между psi_a и psi_b | M | 1 | double | [5] |
covariance_psi_bpsi_b | Значение элемента (4, 4) ковариационной матрицы, описывающей неопределенность относительно сегмента линии. Представляет дисперсию psi_b | M | 1 | double | [5] |
5.3 Формат данных для топологических карт
Топологическая карта наследуется от класса локальных карт. Для определения расположения начала координат топологической карты могут быть использованы координаты смещения. Координаты смещения являются факультативным параметром для топологических карт, т.к. чисто топологические карты не содержат никакой метрической информации.
На рисунке 6 показана UML-диаграмма топологической карты.
Рисунок 6 - UML-диаграмма топологической карты
В таблицах 14-17 показаны атрибуты класса TopologicalMap.
Таблица 14 - Подробное описание класса TopologicalMap
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
nodes | Перечень узловых точек данной топологической карты | M | N | Node | Таблица 15 |
edges | Перечень дуг данной топологической карты | M | N | Edge | Таблица 16 |
Таблица 15 - Подробное описание типа данных Node
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
id | Уникальный ID данного узла | M | 1 | string | [5], [6] |
location | Расположение данного узла; т.е. координаты x и y данного узла | O | 1 | Point | Таблица 10 |
property_num | Число характеристик узла. Значение по умолчанию равно 0 | O | 1 | unsigned int | [5] |
properties | Факультативные характеристики данного узла | O | N (более точно, property_num) | Property | Таблица 17 |
connected_edges | Список ID дуг, которые непосредственно связаны с данным узлом | O | N | string | [5], [6] |
Таблица 16 - Подробное описание типа данных Edge
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
id | Уникальный ID дуги | M | 1 | string | [5], [6] |
property_num | Число характеристик дуги. Значение по умолчанию равно 0 | O | 1 | unsigned int | [5] |
properties | Факультативные характеристики данной дуги | O | N (более точно, property_num) | Property | Таблица 17 |
head_node | ID начального узла данной дуги | M | 1 | string | [5], [6] |
tail_node | ID конечного узла данной дуги | M | 1 | string | [5], [6] |
Таблица 17 - Подробное описание типа данных Property
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
name | Наименование данной характеристики | M | 1 | string | [5], [6] |
value | Значение данной характеристики | M | 1 | Binary | - |
typename | Наименование типа данной характеристики | M | 1 | string | [5], [6] |
description | Описание данной характеристики | O | 1 | string | [5], [6] |
Характеристики узлов и дуг являются факультативными. Данная информация может быть использована для локализации или для устранения искажения восприятия. Какая информация необходима для устранения искажения восприятия, зависит от типа датчиков, установленных на роботе, и от типа прикладной задачи, для решения которой используется данная карта.
6 Интерфейс обмена картографическими данными
В данном разделе определена схема расширяемого языка разметки (XML), описывающая, как форматировать данные для обмена картами. Абстрактный стандарт, представленный картографическими типами данных, введенными в предыдущем разделе, преобразован в стандарт реализации, описанный на языке XML.
Использование языка XML дает ряд преимуществ. Прежде всего, XML - это платформенно-независимый язык, и основные языки программирования и операционные системы включают синтаксические анализаторы языка XML для интерпретации XML-документов. Кроме того, данные могут храниться в удобочитаемом для человека формате, что позволяет легко создавать картографические файлы.
Настоящий стандарт определяет XML-схему для валидации картографических файлов на основе XML, которыми обмениваются разные объекты, с целью обеспечения хорошей согласованности данных (пример представления картографических данных на языке XML приведен в приложении A). XML-схему следует использовать для автоматической проверки на отсутствие ошибок при обмене картами между роботами, компьютерами и другими устройствами.
6.1 Специфические расширения для стандарта реализации
XML-реализация настоящего стандарта расширяет типы данных, определенные в разделе 5, чтобы дополнить их значение применительно к данной реализации. С этой целью введены новые типы данных: MapArray, Metadata, GridCellArray, PaletteElementArray, GeometricElementArray, NodeArray, EdgeArray, PropertyArray и ConnectedEdgesArray, - как сложные типы данных языка XSD (языка определения XML-схемы), в которых элементы группы появляются в строго определенной последовательности.
6.2 Тип данных LocalMap
XSD-тип данных LocalMap расширен для включения номера версии стандарта. Атрибут mdr_ version хранит соответствующую минимальную версию стандарта MDR, в соответствии с которой может быть проведена валидация типа данных LocalMap. Кроме того, тип данных LocalMap расширен для хранения метаданных типа Metadata. Тип данных Metadata не относится к картографическим типам данных, определенным в предыдущем разделе, но является частью формата картографических данных, определяемого следующим образом.
< ! -- =========================================================== -->
<xs:complexType name="LocalMap" abstract="true">
<xs:sequence>
<xs:element name="metadata" type="Metadata"/>
<xs:element name="offset" type="LocalMapTransform" minOccurs="0" maxOccurs="1"/>
<xs:element name="coordinate_system" type="CoordinateSystemType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="map_type" type="LocalMapType" use="required"/>
<xs:attribute name="mdr_version" type="xs:string" use="required"/>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="LocalMapTransform">
<xs:sequence>
<xs:element name="uncertainty" minOccurs="0" maxOccurs="1" type="UncertaintyPose"/>
</xs:sequence>
<xs:attribute name="offset_x" type="xs:double" use="required"/>
<xs:attribute name="offset_y" type="xs:double" use="required"/>
<xs:attribute name="theta" type="xs:double" use="required"/>
</xs:complexType>
< ! -- =========================================================== -->
<xs:simpleType name="LocalMapType">
<xs:restriction base="xs:integer">
<xs:enumeration value="1" /> <!-- The number ’1’ means "GridMap". -->
<xs:enumeration value="2" /> <!-- The number ’2’ means "GeometricMap". -->
<xs:enumeration value="3" /> <!-- The number ’3’means "TopologicalMap". -->
</xs:restriction>
</xs:simpleType>
< ! -- ============================================================ -->
<xs:complexType name="CoordinateSystemType">
<xs:attribute name="EPSG_code" type="xs:string" use="optional"/>
<xs:attribute name="reference_local_map" type="xs:string" use="optional"/>
</xs:complexType>
< ! -- =========================================================== -->
<xs:complexType name="UncertaintyPose">
<xs:attribute name="covariance_xx" type="xs:double" use="required"/>
<xs:attribute name="covariance_yy" type="xs:double" use="required"/>
<xs:attribute name="covariance_thetatheta" type="xs:double" use="required"/>
<xs:attribute name="covariance_xy" type="xs:double" use="required"/>
<xs:attribute name="covariance_xtheta" type="xs:double" use="required"/>
<xs:attribute name="covariance_ytheta" type="xs:double" use="required"/>
</xs:complexType>
6.3 Тип данных MapArray
Тип данных MapArray относится к сложным типам данных языка XSD, в котором элементы группы появляются в строго определенной последовательности, и предназначен для хранения экземпляров типа данных LocalMap, включая типы данных GridMap, TopologicalMap и GeometricMap. Тип данных MapArray представляет набор данных типа LocalMap.
< ! -- ============================================================ -->
<xs:complexType name="MapArray">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="grid_map" type="GridMap" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="geometric_map" type="GeometricMap" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="topological_map" type="TopologicalMap" maxOccurs="unbounded"
minOccurs="0"/>
</xs:choice>
</xs:complexType>
Тип данных MapArray определяет тип данных Metadata, который является типом данных языка XSD со строго определенной последовательностью появления элементов группы, для хранения различных видов метаинформации, специфичной для текущей карты (см. таблицу 18).
< ! -- =========================================================== -->
<xs:complexType name="AuthorArray">
<xs:sequence>
<xs:element name="author" minOccurs="1" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<I -- =========================================================== -->
<xs:complexType name="Metadata">
<xs:sequence>
<xs:element name="authors" type="AuthorArray">
<xs:annotation>
<xs:documentation>
The author of the created map, e.g., Jane Doe.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="email" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[^@]+@ [^\.] +\.. + "></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="license" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
The license under which the map is published, e.g., GNU GPL.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="copyright owner" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
The owner of the copyright, often an institution
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="description" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
A verbal description of the map. For example the hardware used to create the map or any other useful description.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="map_location" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
A verbal description of the mapped location, e.g., 1st floor John Doe Building
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="creation_date" type="xs:dateTime">
</xs:element>
<xs:element name="last_modified" type="xs:dateTime">
<xs:annotation>
<xs:documentation>
Last modified date to keep track of changes to the map.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
Таблица 18 - Подробное описание типа данных Metadata
Наименование атрибута | Описание | M/O | MO | Тип данных | Ссылка |
authors | Имена создателей карты | M | N | string | [7] |
Электронная почта создателя карты | O | 1 | string | [7] | |
license | Лицензия, под которой опубликована карта | O | 1 | string | [7] |
copyright_owner | Правообладатель карты | O | 1 | string | [7] |
description | Текстовое описание карты и дополнительная информация, например, какое программное/ аппаратное обеспечение было использовано. Также здесь может быть приведена информация об ID робота, получающего данные карты | O | 1 | string | [7] |
map_location | Текстовое описание внешней среды, которую представляет данная карта. Например: Second floor, Lakeside Park B02, Alpen-Adria-Uni- Klagenfurt | O | 1 | string | [7] |
creation_date | Время и дата создания карты | M | 1 | dateTime | [7] |
last_modified | Время последнего изменения карты | M | 1 | dateTime | [7] |
6.4 Класс GridMap
Следующая XML-схема реализует класс GridMap наряду с типами данных GridCell и PaletteElement. Типы данных GridCellArray и PaletteElementArray со строго определенной последовательностью появления элементов группы введены для хранения элементов типов данных GridCell и PaletteElement, используемых в типе данных GridMap, соответственно.
< ! -- ============================================================ -->
<xs:complexType name="GridMap">
<xs:complexContent>
<xs:extension base="LocalMap">
<xs:sequence>
<xs:element name="palette_elements" minOccurs="0" maxOccurs="1"
type="PaletteElementArray"/>
<xs:element name="cells" type="GridCellArray"/>
</xs:sequence>
<xs:attribute name="resolution" type="xs:double" use="required"/>
<xs:attribute name="num_cells_x" type="xs:unsignedlnt" use="required"/>
<xs:attribute name="num_cells_y" type="xs:unsignedlnt" use="required"/>
</xs:extension>
</xs:complexContent>
< ! -- ============================================================ -->
<xs:complexType name="GridCell">
<xs:attribute name="x" type="xs:integer" use="required"/>
<xs:attribute name="y" type="xs:integer" use="required"/>
<xs:attribute name="height" type="xs:unsignedlnt" use="optional" default="1"/>
<xs:attribute name="width" type="xs:unsignedlnt" use="optional" default="1"/>
<xs:attribute name="value" type="xs:double" use="required"/>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="GridCellArray">
<xs:sequence>
<xs:element name="cell" minOccurs="1" maxOccurs="unbounded" type="GridCell"/>
</xs:sequence>
</xs:complexType>
< ! -- =========================================================== -->
<xs:complexType name="PaletteElement">
<xs:attribute name="value_start" type="xs:double" use="required" />
<xs:attribute name="value_end" type="xs:double" use="optional" />
<xs:attribute name="meaning" type="xs:string" use="required" />
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="PaletteElementArray">
<xs:sequence>
<xs:element name="palette" minOccurs="0" maxOccurs="unbounded" type="PaletteElement"/>
</xs:sequence>
</xs:complexType>
6.5 Класс GeometricMap
Следующая XML-схема реализует класс GeometricMap наряду с типами данных Point, LineSegment, UncertaintyPoint и UncertaintyLineSegment. Введен тип данных GeometricElementArray со строго определенной последовательностью появления элементов группы для хранения элементов типов данных Point и LineSegment, используемых в типе данных GeometricMap.
< ! -- ============================================================ -->
<xs:complexType name="GeometricMap">
<xs:complexContent>
<xs:extension base="LocalMap">
<xs:sequence>
<xs:element name="elements" type="GeometricElementArray"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
< ! -- ============================================================ -->
<xs:complexType name="Point">
<xs:sequence>
<xs:element name="uncertainty" minOccurs="0" maxOccurs="1"
type="UncertaintyPoint"/>
</xs:sequence>
<xs:attribute name="x" type="xs:double" use="required"/>
<xs:attribute name="y" type="xs:double" use="required"/>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="LineSegment">
<xs:sequence>
<xs:element name="uncertainty" minOccurs="0" maxOccurs="1"
type="UncertaintyLineSegment"/>
</xs:sequence>
<xs:attribute name="rho" type="xs:double" use="required"/>
<xs:attribute name="alpha" type="xs:double" use="required"/>
<xs:attribute name="psi_a" type="xs:double" use="required"/>
<xs:attribute name="psi_b" type="xs:double" use="required"/>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="GeometricElementArray">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="point" type="Point"/>
<xs:element name="line_segment" type="LineSegment"/>
</xs:choice>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="UncertaintyPoint">
<xs:attribute name="covariance_xx" type="xs:double" use="required"/>
<xs:attribute name="covariance_xy" type="xs:double" use="required"/>
<xs:attribute name="covariance_yy" type="xs:double" use="required"/>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="UncertaintyLineSegment">
<xs:attribute name="covariance_rhorho" type="xs:double" use="required"/>
<xs:attribute name="covariance_rhoalpha" type="xs:double" use="required"/>
<xs:attribute name="covariance_rhopsi_a" type="xs:double" use="required"/>
<xs:attribute name="covariance_rhopsi_b" type="xs:double" use="required"/>
<xs:attribute name="covariance_alphaalpha" type="xs:double" use="required"/>
<xs:attribute name="covariance_alphapsi_a" type="xs: double" use="required"/>
<xs:attribute name="covariance_alphapsi_b" type="xs: double" use="required"/>
<xs:attribute name="covariance_psi_apsi_a" type="xs:double" use="required"/>
<xs:attribute name="covariance_psi_apsi_b" type="xs: double" use="required"/>
<xs:attribute name="covariance_psi_bpsi_b" type="xs:double" use="required"/>
</xs:complexType>
6.6 Класс TopologicalMap
Следующая XML-схема реализует классTopologicalMap наряду с типами данных Node, Edge и Property. Типы данных NodeArray, EdgeArray и PropertyArray со строго определенной последовательностью появления элементов группы введены для хранения элементов типов данных Node, Edge и Property, используемых в типе данных TopologicalMap, соответственно. Также введен новый тип данных Connected-EdgesArray со строго определенной последовательностью появления элементов группы для хранения ID дуг, соединенных с узлом.
< !-- ============================================== -->
<xs:complexType name="TopologicalMap">
<xs:complexContent>
<xs:extension base="LocalMap">
<xs:sequence>
<xs:element name="nodes" type="NodeArray"/>
<xs:element name="edges" type="EdgeArray"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="Node">
<xs:sequence>
<xs:element name="location" type="Point" minOccurs="0" maxOccurs="1"/>
<xs:element name="properties" minOccurs="0" maxOccurs="1" type="PropertyArray"/>
<xs:element name="connected_edges" minOccurs="0" maxOccurs="1"
type="ConnectedEdgesArray"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="property_num" type="xs:unsignedlnt" use="optional" />
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="NodeArray">
<xs:sequence>
<xs:element name="node" minOccurs="0" maxOccurs="unbounded" type="Node"/>
</xs:sequence>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="Edge">
<xs:sequence>
<xs:element name="properties" minOccurs="0" maxOccurs="1" type="PropertyArray"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="property_num" type="xs:unsignedlnt" use="optional" />
<xs:attribute name="head_node" type="xs:string" use="required"/>
<xs:attribute name="tail_node" type="xs:string" use="required"/>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="EdgeArray">
<xs:sequence>
<xs:element name="edge" minOccurs="0" maxOccurs="unbounded" type="Edge"/>
</xs:sequence>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="Property">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="value" type="xs:base64Binary"/>
<xs:element name="typename" type="xs:string"/>
<xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="PropertyArray">
<xs:sequence>
<xs:element name="property" minOccurs="0" maxOccurs="unbounded" type="Property"/>
</xs:sequence>
</xs:complexType>
< ! -- ============================================================ -->
<xs:complexType name="ConnectedEdgesArray">
<xs:sequence>
<xs:element name="edge_id" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Приложение А
(справочное)
Пример представления картографических данных на языке XML
Рисунок А.1 - Графическое представление пространственной структуры (карты)
Пример для данного приложения был разработан с использованием XSD-редактора Eclipse для проверки и синтаксического анализа XML-документов и схем. В частности, данный пример был проверен в соответствии с XML-схемой стандарта MDR.
Примечание - Дополнительная информация о редакторе Eclipse размещена на сайте https://www.eclipse.org.
<?xml version="1.0" encoding="UTF-
<mdr:maps xmlns:mdr="http://www.example.org/mdr"
xmlns:xsi="http://www.w3.оrg/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/mdr MDR_schema.xsd ">
<grid_map id="GridMap" maptype="1" num_cells_x="10" num_cells_y="10" Resolution="0.2">
<metadata>
<author>
Jane Doe
</author>
<email> [email protected]
</email>
<license>
This map data is free document; you can redistribute and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
</license>
<copyright owner>
MDR committee
</copyright owner>
<description>
The size of a room is 2m x 2m. There is an L-shaped table at the center of room. The table and walls of the room are modelled by GridCells and GeometricElements, which are composed of Points and LineSegments, in the XML sample. As additional information, the XML sample includes a topological map. Individual nodes in the sample topological map represent way points for robot navigations.
</description>
<map_location>
1st floor John Doe Building
</map_location>
<creation_date>
2014-07-01T21:10:50
</creation_date>
<last modified>
2014-08-01T21:10:50
</last_modified>
</metadata>
<offset offset_x="0.0" offset_y="0.0" theta="0.0">
<uncertainty covariance_xx="0.0" covariance_yy="0.0" covariance_thetatheta="0.0"
covariance_xy="0.0" covariance_xtheta="0.0" covariance_ytheta="0.0"/>
</offset>
<coordinate_system />
<palette_elements>
<palette value_start="0" value_end="255" meaning="This value, 0...255,
is correspond to probability, 0.0...1.0. "/>
</palette_elements>
<cells>
< !-- Wall Cells -->
<cell x="0" y="0" width="1" height="10" value="255"/>
<cell x="1" y="0" width="8" height="1" value="255"/>
<cell x="9" y="0" width="1" height="10" value="255"/>
<cell x="1" y="9" width="6" height="1" value="255"/>
< !--Table Cells -->
<cell x="3" y="3" width="2" height="4" value="255"/>
<cell x="5" y="3" width="2" height="2" value="255"/>
< !-- Free Space Cells -->
<cell x="1" y="1" width="2" height="8" value="0"/>
<cell x="3" y="1" width="4" height="2" value="0"/>
<cell x="7" y="1" width="2" height="4" value="0"/>
<cell x="3" y="7" width="2" height="2" value="0"/>
<cell x="5" y="5" width="4" height="4" value="0"/>
<cell x="7" y="9" width="2" height="1" value="0"/>
</cells>
</grid_map>
<geometric_map id="GeometricMap" maptype="2">
<offset offset_x="0.0" offset_y="0.0" theta="0.0">
<uncertainty covariance_xx="0.0" covariance_yy="0.0" covariance_thetatheta="0.0"
covariance_xy="0.0" covariance_xtheta="0.0" covariance_ytheta="0.0"/>
</offset>
<coordinate_system />
<elements>
< !-- Wall Corners -->
<point x="0.2" y="0.2">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="0.2" y="1.8">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.4" y="1.8">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.4" y="2.0">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.8" y="2.0">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.8" y="0.2">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
< !-- Table Corners -->
<point x="0.6" y="0.6">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="0.6" y="1.4">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.0" y="1.4">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.0" y="1.0">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.4" y="1.0">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
<point x="1.4" y="0.6">
<uncertainty covariance_xx="0.1" covariance_xy="0.0" covariance_yy="0.1"/>
</point>
< !-- Wall Edges -->
<line_segment rho="0.2" alpha="90.0" psi_a="0.2" psi_b="1.8">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="0.2" alpha="0.00" psi_a="0.2" psi_b="1.8">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="1.8" alpha="90.0" psi_a="0.2" psi_b="1.4">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a ="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a ="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b ="0.1"/>
</line segment>
<line_segment rho="1.4" alpha="0.00" psi_a="1.8" psi_b="2.0">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a ="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a ="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b ="0.1"/>
</line segment>
<line_segment rho="1.8" alpha="0.00" psi_a="0.2" psi_b="2.0">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a ="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a ="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b ="0.1"/>
</line segment>
< !-- Table Edges -->
<line_segment rho="0.6" alpha="90.0" psi_a="0.6" psi_b="1.4">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="0.6" alpha="0.00" psi_a="0.6" psi_b="1.4">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="1.4" alpha="90.0" psi_a="0.6" psi_b="1.0">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="1.0" alpha="0.00" psi_a="1.0" psi_b="1.4">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="1.0" alpha="90.0" psi_a="1.0" psi_b="1.4">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
<line_segment rho="1.4" alpha="0.00" psi_a="0.6" psi_b="1.0">
<uncertainty
covariance_rhorho ="0.1" covariance_rhoalpha ="0.0"
covariance_rhopsi_a ="0.0" covariance_rhopsi_b ="0.0"
covariance_alphaalpha="0.1" covariance_alphapsi_a="0.0"
covariance_alphapsi_b="0.0" covariance_psi_apsi_a="0.1"
covariance_psi_apsi_b="0.0" covariance_psi_bpsi_b="0.1"/>
</line segment>
</elements>
</geometric_map>
<topological_map id="Topological Map" maptype="3">
<offset offset_x="0.0" offset_y="0.0" theta="0.0">
<uncertainty
covariance_xx="0.0" covariance_yy="0.0" covariance_thetatheta="0.0"
covariance_xy="0.0" covariance_xtheta="0.0" covariance_ytheta="0.0"/>
</offset>
<coordinate system />
<nodes>
<node id="node0" property_num="0"><location x="1.6" y="1.9"/></node>
<node id="node1" property_num="0"><location x="1.4" y="1.4"/></node>
<node id="node2" property_num="0"><location x="0.8" y="1.6"/></node>
<node id="node3" property_num="0"><location x="0.4" y="1.0"/></node>
<node id="node4" property_num="0"><location x="1.0" y="0.4"/></node>
<node id="node5" property_num="1">
<location x="1.6" y="0.6"/>
<properties>
<property>
<name>DistNearest</name>
<value>MC4x</value>
<typename>float</typename>
<description>Distance to the nearest obstacle</description>
</property>
</properties>
</node>
</nodes>
<edges>
<edge id="edge0" property_num="0" head_node="node0" tail_node="node1"></edge>
<edge id="edge1" property_num="0" head_node="node1" tail_node="node2"></edge>
<edge id="edge2" property_num="0" head_node="node2" tail_node="node3"></edge>
<edge id="edge3" property_num="0" head_node="node3" tail_node="node4"></edge>
<edge id="edge4" property_num="0" head_node="node4" tail_node="node5"></edge>
<edge id="edge5" property_num="2" head node="node5" tail_node="node1"
<properties>
<property>
<name>EdgeLength</name>
<value>MC43MDcx</value>
<typename>float</typename>
<description>Edge length in meter unit</description>
</property>
<property>
<name>EdgeWidth</name>
<value>MC4z</value>
<typename>float</typename>
<description>
Minimum distance between the boundary wall of a long hall way which is defined as an edge
</description>
</property>
<properties>
</edge>
</edges>
</topological_map>
</mdr:maps>
Приложение ДА
(справочное)
Сведения о соответствии ссылочных национальных стандартов международным стандартам, использованным в качестве ссылочных в примененном стандарте
Таблица ДА.1
Обозначение ссылочного национального стандарта | Степень соответствия | Обозначение и наименование ссылочного международного стандарта |
ГОСТ Р 60.0.0.4-2023/ИСО 8373:2021 | IDT | ISO 8373:2021 "Робототехника. Словарь" |
Примечание - В настоящей таблице использовано следующее условное обозначение степени соответствия стандарта: - IDT - идентичный стандарт. |
Библиография
[1] | ИСО 19128:2005 | Географическая информация. Интерфейс картографического веб-сервера (Geographic information - Web map server interface) |
[2] | ИСО 19136-1:2020 | Географическая информация. Географический язык разметки (GML). Часть 1. Основные положения [Geographic information. Geography Markup Language (GML). Part 1: Fundamentals] |
[3] | Язык городской географической разметки OGC (CityGML). Часть 1: Стандарт концептуальной модели [OGC City Geography Markup Language (CityGML). Part 1: Conceptual Model Standard] http://docs.ogc.org/is/20-010/20-010.html | |
[4] | Стандарт OGC на пространственную информацию внутри помещений (OGC Standard for Indoor Spatial Information) http://docs.opengeospatial.org/is/14-005r5/14-005r5.html | |
[5] | ИСО/МЭК 9899:2018 | Информационные технологии. Языки программирования. Си (Information technology - Programming languages - C) |
[6] | ИСО/МЭК 10646:2020 | Информационные технологии. Универсальный набор кодированных символов (UCS) [Information technology - Universal Coded Character Set (UCS)] |
[7] | Язык определения схемы W3C XML (XSD) 1.1 Часть 2. Типы данных, Рекомендация W3C 5 апреля 2012 [W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes, W3C Recommendation 5 April 2012] |
УДК 007.52:004.622:006.72:006.354 | ОКС 25.040.30 35.240.99 |
Ключевые слова: роботы, робототехнические устройства, представление картографических данных, навигация роботов, карта робота, карта с координатной сеткой, метрическая карта, топологическая карта |