URDF - моделирование робота

URDF (Unified Robot Description Format) - задает в формате XML описание модели робота, включающее:

  • Кинематику и динамику
  • Визуальное представление
  • Модель столкновения

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

Пример модели роботаПример модели робота: a. - визуальной составляющей модели, б. - модель контакта.

Далее, рассмотрим структуру URDF на примере только визуальной составляющей, построенной из простых фигур. Описание состоит из набора элементов (звеньев) и набора соединительных элементов (шарниров). Звенья могут соединяться только через шарниры (подвижные или фиксированные). Также важно отметить, что каждый шарнир или звено имеет жестко соединенную с ним систему координат (<origin>).

Структура URDF разметкиСтруктура URDF разметки

В URDF доступны следующие типы шарниров:

  • revolute — шарнирное соединение, которое вращается вдоль оси и имеет ограниченный диапазон, определяемый верхним и нижним пределами;
  • continuous — непрерывное шарнирное соединение, вращающееся вокруг оси и не имеющее верхних и нижних пределов;
  • prismatic — скользящее соединение, которое скользит вдоль оси и имеет ограниченный диапазон, определяемый верхним и нижним пределами;
  • fixed — На самом деле это не шарнир, потому что он не может двигаться. Все степени свободы заблокированы. Этот тип соединения не требует <axis>, <calibration>, <dynamics>, <limits> или <safety_controller>;
  • floating — допускает движение по всем 6 степеням свободы;
  • planar — допускает движение в плоскости, перпендикулярной оси.

Модель робота обычно хранится в robot_description сервера параметров и его можно визуализировать в Rviz при помощи плагина Robot Model.

Список основных тегов URDF разметки:

  • robot - Описывает все свойства робота.
  • link - Описывает кинематические и динамические свойства звена;
  • transmission - Трансмиссии связывают приводы с шарнирами и представляют собой их механическое соединение;
  • joint - Описывает кинематические и динамические свойства шарнира;
  • gazebo - Описывает параметры моделирования, такие как демпфирование, трение и т. д.;
  • sensor - Описывает датчик, например камеру, лучевой датчик и т. д.;
  • model_state - Описывает состояние модели в определенный момент времени;
  • model - Описывает кинематические и динамические свойства конструкции робота.

После внесения изменений в URDF разметку рекомендуется проверить наличие ошибок в файле при помощи инструмента check_urdf.

XACRO - оптимизация URDF

URDF может формироваться с помощью макросов. XML Macros (macro language) также известен как XACRO. С помощью XACRO можно создавать более короткие и легко читаемые XML-файлы, что расширяет возможности XML-разметки.

Среди преимуществ XACRO можно выделить:

  • разделение разметки модели робота на несколько файлов и сборка в один файл через <xacro:include>, <xacro:macro>;
  • использование математических выражений (автоматически рассчитывается и подставляется во время компиляции);
  • параметры <xacro:property> и <xacro:arg>, значение которых подставляется при компиляции;
  • использование условий <xacro:if>, позволяющих включать или исключать целые блоки разметки.

Поиск и исправление ошибок в Xacro

  1. сгенерируйте urdf из xacro в файл my_robot.xacro
    rosrun xacro xacro my_robot.xacro > my_robot.urdf
  2. затем воспользуйтесь инструментом check_urdf и выполните:
    check_urdf my_robot.urdf

При возникновении ошибок в xacro ошибки не отображаются. Чтобы это исправить, укажите путь к xacro в файле запуска следующим способом, тогда ошибки компиляции xacro будут выводиться в терминале.

<param name="robot_description" command="$(find xacro)/xacro '$(find my_robot_description)/urdf/my_robot.xacro'"/>