exponenta event banner

importrobot

Импорт модели дерева жесткого тела из файла URDF, текста или модели Simscape Multibody

Описание

пример

robot = importrobot(filename) возвращает rigidBodyTree путем синтаксического анализа файла URDF, указанного в filename.

пример

robot = importrobot(URDFtext) анализирует текст URDF. Определить URDFtext в виде строкового скалярного или символьного вектора.

[robot,importInfo] = importrobot(model) импортирует модель Simscape™ Multibody™ и возвращает эквивалент rigidBodyTree объект и информация об импорте в importInfo. На выходе поддерживаются только фиксированные, призматические и поворотные соединения rigidBodyTree объект. Для импорта модели, в которой используются другие типы соединений, блоки зависимостей или переменные инерции, используются пары Имя-значение импорта многофакторной модели Simscape (Simscape Multibody Model Import name-value).

___ = importrobot(___,Name,Value) предоставляет дополнительные параметры, указанные в Name,Value аргументы пары. Используйте любой из предыдущих синтаксисов. В зависимости от того, выполняется ли преобразование из файла URDF или модели Simscape Multibody, применяются только определенные пары «имя-значение».

Примеры

свернуть все

Импорт файла URDF как rigidBodyTree объект.

robot = importrobot('iiwa14.urdf')
robot = 
  rigidBodyTree with properties:

     NumBodies: 10
        Bodies: {1x10 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x10 cell}
      BaseName: 'world'
       Gravity: [0 0 0]
    DataFormat: 'struct'

show(robot)

Figure contains an axes. The axes contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh.

ans = 
  Axes (Primary) with properties:

             XLim: [-1.5000 1.5000]
             YLim: [-1.5000 1.5000]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [0.1300 0.1100 0.7750 0.8150]
            Units: 'normalized'

  Show all properties

Укажите вектор символов URDF. Этот вектор символов является минималистским описанием для создания допустимой модели робота.

URDFtext = '<?xml version="1.0" ?><robot name="min"><link name="L0"/></robot>';

Импортируйте модель робота. Описание создает rigidBodyTree объект, имеющий только базовую связь робота с именем 'L0'.

robot = importrobot(URDFtext)
robot = 
  rigidBodyTree with properties:

     NumBodies: 0
        Bodies: {1x0 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x0 cell}
      BaseName: 'L0'
       Gravity: [0 0 0]
    DataFormat: 'struct'

Вы можете импортировать роботов, которые .stl файлы, связанные с файлом унифицированного формата описания робота (URDF) для описания визуальной геометрии робота. Для каждого жесткого тела задана отдельная визуальная геометрия. importrobot функция анализирует файл URDF, чтобы получить модель робота и визуальную геометрию. Функция предполагает, что визуальная геометрия и геометрия столкновения робота одинаковы и назначает визуальные геометрии как геометрии столкновения соответствующих тел.

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

Импорт модели робота в виде файла URDF. .stl в этом URDF должны быть правильно указаны расположения файлов. Добавление других .stl файлы для отдельных жестких тел, см. addVisual.

robot = importrobot('iiwa14.urdf');

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

show(robot,'visuals','on','collision','off');

Figure contains an axes. The axes contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh.

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

show(robot,'visuals','off','collision','on'); 

Figure contains an axes. The axes contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

Импортируйте существующую модель робота Simscape™ Multibody™ в Систему Робототехники Toolbox™ как a rigidBodyTree объект.

Откройте модель Simscape™ Multibody™. Это модель для человекообразного робота.

open_system('example_smhumanoidrobot.slx')

Импортируйте модель.

[robot,importInfo] = importrobot(gcs)
robot = 
  rigidBodyTree with properties:

     NumBodies: 21
        Bodies: {1x21 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x21 cell}
      BaseName: 'Base'
       Gravity: [0 0 -9.8066]
    DataFormat: 'struct'

importInfo = 
  rigidBodyTreeImportInfo with properties:

        SourceModelName: 'example_smhumanoidrobot'
          RigidBodyTree: [1x1 rigidBodyTree]
    BlockConversionInfo: [1x1 struct]

Просмотр сведений о созданном rigidBodyTree объект.

showdetails(importInfo)
--------------------
Robot: (21 bodies)

 Idx     Body Name     Simulink Source Blocks     Joint Name     Simulink Source Blocks   Joint Type     Parent Name(Idx)   Children Name(s)
 ---     ---------     ----------------------     ----------     ----------------------   ----------     ----------------   ----------------
   1        Body01    Info | List | Highlight        Joint01    Info | List | Highlight     revolute              Base(0)   Body02(2)  
   2        Body02    Info | List | Highlight        Joint02    Info | List | Highlight     revolute            Body01(1)   Body03(3)  
   3        Body03    Info | List | Highlight        Joint03    Info | List | Highlight     revolute            Body02(2)   Body04(4)  
   4        Body04    Info | List | Highlight        Joint04    Info | List | Highlight     revolute            Body03(3)   
   5        Body05    Info | List | Highlight        Joint05    Info | List | Highlight     revolute              Base(0)   Body06(6)  
   6        Body06    Info | List | Highlight        Joint06    Info | List | Highlight     revolute            Body05(5)   Body07(7)  
   7        Body07    Info | List | Highlight        Joint07    Info | List | Highlight     revolute            Body06(6)   Body08(8)  
   8        Body08    Info | List | Highlight        Joint08    Info | List | Highlight     revolute            Body07(7)   
   9        Body09    Info | List | Highlight        Joint09    Info | List | Highlight     revolute              Base(0)   Body10(10)  
  10        Body10    Info | List | Highlight        Joint10    Info | List | Highlight     revolute            Body09(9)   Body11(11)  
  11        Body11    Info | List | Highlight        Joint11    Info | List | Highlight     revolute           Body10(10)   Body12(12)  
  12        Body12    Info | List | Highlight        Joint12    Info | List | Highlight     revolute           Body11(11)   
  13        Body13    Info | List | Highlight        Joint13    Info | List | Highlight     revolute              Base(0)   Body14(14)  
  14        Body14    Info | List | Highlight        Joint14    Info | List | Highlight     revolute           Body13(13)   Body15(15)  
  15        Body15    Info | List | Highlight        Joint15    Info | List | Highlight     revolute           Body14(14)   Body16(16)  
  16        Body16    Info | List | Highlight        Joint16    Info | List | Highlight     revolute           Body15(15)   
  17        Body17    Info | List | Highlight        Joint17    Info | List | Highlight     revolute              Base(0)   Body18(18)  
  18        Body18    Info | List | Highlight        Joint18    Info | List | Highlight     revolute           Body17(17)   Body19(19)  
  19        Body19    Info | List | Highlight        Joint19    Info | List | Highlight        fixed           Body18(18)   Body20(20)  
  20        Body20    Info | List | Highlight        Joint20    Info | List | Highlight        fixed           Body19(19)   
  21        Body21    Info | List | Highlight        Joint21    Info | List | Highlight        fixed              Base(0)   
--------------------

Входные аргументы

свернуть все

Имя файла URDF, указанное как строковый скалярный или символьный вектор. Этот файл должен быть допустимым описанием робота URDF.

Пример: "robot_file.urdf"

Типы данных: char | string

Текст робота URDF, заданный как строковый скалярный или символьный вектор.

Пример: "<?xml version="1.0" ?><robot name="min"><link name="L0"/></robot>"

Типы данных: char | string

модель Simscape Multibody, заданная как дескриптор модели, строковый скаляр или символьный вектор.

Типы данных: double | char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: "MeshPath",{"../arm_meshes","../body_meshes"}
Импорт файла URDF

свернуть все

Относительные пути поиска для файлов сетки, заданные как строковый скаляр, символьный вектор или массив ячеек строковых скаляров или символьных векторов. Файлы сетки по-прежнему должны указываться в файле URDF, но MeshPath определяет относительные пути для указанных файлов. При использовании этой функции импортер URDF выполняет поиск файлов сетки, указанных в URDF, по всем указанным относительным путям.

Типы данных: char | string | cell

Импорт модели Simscape Multibody

свернуть все

Указывает, следует ли разрывать замкнутые цепи в данном model вход, указан как "error" или "remove-joints". При указании "remove-joints", полученные в результате robot Выход содержит снятые замыкающие соединения цепи. В противном случае функция выдает ошибку.

Типы данных: char | string

Указывает, следует ли преобразовать неподдерживаемые соединения в фиксированные соединения в данном model вход, указан как "error" или "convert-to-fixed". При указании "convert-to-fixed", полученные в результате robot вывод имеет все неподдерживаемые соединения, преобразованные в фиксированные соединения. На выходе поддерживаются только фиксированные, призматические и поворотные соединения rigidBodyTree объект. В противном случае, если model содержит неподдерживаемые соединения, функция выдает ошибку.

Типы данных: char | string

Указывает, следует ли удалять блоки зависимостей в данном model вход, указан как "error" или "remove". При указании "remove", полученные в результате robot выходные данные имеют снятые ограничения. В противном случае, если model содержит блоки ограничений, функция выдает ошибку.

Типы данных: char | string

Указывает, следует ли удалять блоки переменной инерции в данном model вход, указан как "error" или "remove". При указании "remove", полученные в результате robot выход имеет удаленную переменную инерцию. В противном случае, если model содержит блоки переменной инерции, функция выдает ошибку.

Типы данных: char | string

Выходные аргументы

свернуть все

Модель робота, возвращенная как rigidBodyTree объект.

Примечание

Если сила тяжести не указана в файле URDF, по умолчанию Gravity свойство имеет значение [0 0 0]. Simscape Multibody использует значение по умолчанию [0 0 -9.80665]m/s2 при использовании smimport для импорта URDF.

Объект для хранения информации об импорте, возвращаемый как rigidBodyTreeImportInfo объект. Этот объект содержит отношение между входными данными model и полученные в результате robot выход.

Использовать showdetails чтобы перечислить всю информацию об импорте для каждого тела в robot. В командное окно выводятся ссылки для отображения информации о жестком теле, соответствующих блоках в модели и выделения определенных блоков в модели.

Использовать bodyInfo, bodyInfoFromBlock, или bodyInfoFromJoint для получения информации о конкретных компонентах в robot выходных данных или model вход.

Совет

При импорте модели робота с визуальными сетками importrobot функция ищет .stl файлы для назначения каждому жесткому телу с использованием следующих правил:

  • Функция выполняет поиск исходного пути сетки для указанного жесткого тела из файла URDF. Ссылки на пакеты ROS имеют package:\\<pkg_name> удален.

  • Абсолютные пути проверяются непосредственно без изменений.

  • Относительные пути проверяются с использованием следующих каталогов по порядку:

    • Пользователь указан MeshPath

    • Текущая папка

    • Путь MATLAB ®

    • Папка, содержащая файл URDF

    • Один уровень над папкой, содержащей файл URDF

  • Имя файла из пути сетки в файле URDF добавляется к MeshPath входной аргумент.

Если файл сетки все еще не найден, синтаксический анализатор игнорирует файл сетки и возвращает rigidBodyTree объект без визуального.

Представлен в R2017a