YAML

YAML (YAML Ain’t Markup Language) - человекочитаемый формат данных. В Clover2 YAML используется для описания карт ArUco-маркеров, конфигурации камер и других параметров.

Основные правила

  • Ключ-значение: ключ: значение (пробел после двоеточия обязателен)

  • Комментарии: # — все символы после него до конца строки игнорируются

    name: test          # это комментарий
    # а эта строка целиком — комментарий
    

    Комментарии можно ставить только в конце строки или на отдельной строке. Блочных комментариев (/* */) в YAML нет.

  • Отступы: для отступов используйте только пробелы (2 или 4), табуляция запрещена

  • Строки: строки можно записывать без кавычек. Если значение содержит специальные символы, используйте двойные " " или одинарные ' ' кавычки.

  • Числа: целые и дробные числа можно записывать без кавычек: 42, 3.14, -1.5, 1e-3

  • Булевы: true / false, yes / no, on / off

  • Null: ~, null, или пустое поле

  • Список (блочный): каждый элемент списка начинается с - (дефис + пробел):

    markers:
      - id: 0
      - id: 1
    
  • Список: элементы списка можно записать в квадратных скобках через запятую:

    markers: [{id: 0, size: 0.3}, {id: 1, size: 0.3}]
    # или
    markers: [0, 1, 2, 3]
    
  • Список словарей (блочный, явный):

    markers:
      - {id: 0, size: 0.3, x: 1.0, y: 2.0}
      - {id: 1, size: 0.3, x: 3.0, y: 4.0}
    

Здесь markers содержит два словаря. Каждый словарь описывает один маркер и содержит его id, size, x и y.

  • Многострочные массивы без ключей:

    ids:
      - 10
      - 20
      - 30
    
  • Словарь (вложенный): отступы показывают вложенность:

    pose:
      x: 1.0
      y: 2.0
    
  • Словарь: несколько пар ключ-значение можно записать в фигурных скобках через запятую:

    pose: {x: 1.0, y: 2.0, z: 0.5}
    

Примечание

Отступы должны быть согласованными. Если для одного уровня используется 2 пробела, используйте 2 пробела и для других элементов этого же уровня. Отступ определяет структуру YAML-файла. Если сделать неправильный отступ, программа не сможет прочитать файл.