importrobot

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

Описание

пример

robot = importrobot(filename) возвращает rigidBodyTree объект путем анализа файла Unified Robot Description Format (URDF), заданного filename.

пример

robot = importrobot(URDFtext) анализирует текст URDF. Задайте URDFtext как строковый скаляр или вектор символов.

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

___ = 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>';

Импортируйте модель робота. Описание создает r igidBodyTree объект, который имеет только базовую ссылку робота с именем '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 файлы, сопоставленные с файлом формата Unified Robot Description (URDF), для описания визуальных геометрий робота. Каждое твердое тело имеет заданную индивидуальную визуальную геометрию. The importrobot функция анализирует файл URDF, чтобы получить модель робота и визуальные геометрии. Функция принимает, что визуальная геометрия и геометрия столкновения робота одинаковы, и присваивает визуальные геометрии как геометрии столкновения соответствующих тел.

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

Импортируйте модель робота как файл URDF. The .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™ робота в Robotics System Toolbox™ как 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

свернуть все

Относительные пути поиска файлов для файлов mesh, заданные как строковый скаляр, вектор символов или массив ячеек из строковых скаляров или векторов символов. Файлы mesh все еще должны быть заданы в файле 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]м/с2 при использовании smimport для импорта URDF.

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

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

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

Совет

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

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

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

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

    • Пользовательские MeshPath

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

    • MATLAB® путь

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

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

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

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

Введенный в R2017a