Описание параметров в ROS будет неполным без упоминания языка разметки для преставления этих самых параметров. Если в простейшем случае значение можно описать с помощью одного числа, и ничего дополнительного придумывать не нужно, то для списка величин уже потребуются некоторые правила разметки. Тут и возникает потребность в чём-то вроде YAML.
Синтаксис языка очень напоминает Python, с той разницей, что вместо знака равенства ставится двоеточие. Строки, числа, арифметические выражения, списки и словари, допустимые в Python, могут быть использованы и здесь, а комментарии также начинаются со знака "решётки". Выделение структурных блоков происходит за счёт отуступов (но пробелов, а не табуляции).
YAML позволяет записывать параметры как в виде блока, так и в одной строке. Причём, это относится как к "спискам", так и к "словарям".
# словарь - строка
position: {x: 10, y: 20, z: 30}
# блок
position:
x: 10
y: 20
z: 30
# список - строка
[link0, joint1, link1]
# блок
- link0
- joint1
- link1
В некоторых случаях не ясно, каким типом является параметр, например, true или y могут быть как логическими значениями истины, так и просто строками. В этом случае язык допускает явное "привидение типа" с помощью конструкции !!тип. Например
default: '!!str true'
будет означать, что типом данных параметра default является строка.
В ROS данный формат используется как в виде yaml-файлов, так и для управления параметрами из командной строки. Если параметр состоит из нескольких значений, например,
Point point
float64 x
float64 y
float64 z
то инициализация возможно двумя способами. При использовании списка, значения должны быть перечислены в том же порядке, что и инициируемые данные,
[10, 20, 30] # x, y, z
а словарь допускает использовать произвольный порядок
{z: 30, x: 10, y: 20}
Комментариев нет:
Отправить комментарий