importrobot

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

Синтаксис

robot = importrobot(filename)
robot = importrobot(URDFtext)
[robot,importInfo] = importrobot(model)
___ = importrobot(___,Name,Value)

Описание

пример

robot = importrobot(filename) возвращает объект robotics.RigidBodyTree путем парсинга файла Объединенного формата описания робота (URDF), заданного filename.

пример

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

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

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

Примеры

свернуть все

Импортируйте файл URDF как объект robotics.RigidBodyTree.

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

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

show(robot)

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 robotics.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);

Импортируйте существующую модель робота Simscape™ Multibody™ в Robotics System Toolbox™ как объект robotics.RigidBodyTree.

Откройте модель Simscape™ Multibody™. Это - модель для гуманоидного робота.

open_system('sm_import_humanoid_urdf.slx')

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

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

     NumBodies: 21
        Bodies: {1×21 cell}
          Base: [1×1 robotics.RigidBody]
     BodyNames: {'Body01'  'Body02'  'Body03'  'Body04'  'Body05'  'Body06'  'Body07'  'Body08'  'Body09'  'Body10'  'Body11'  'Body12'  'Body13'  'Body14'  'Body15'  'Body16'  'Body17'  'Body18'  'Body19'  'Body20'  'Body21'}
      BaseName: 'Base'
       Gravity: [0 0 -9.8066]
    DataFormat: 'struct'

importInfo = 
  RigidBodyTreeImportInfo with properties:

        SourceModelName: 'sm_import_humanoid_urdf'
          RigidBodyTree: [1×1 robotics.RigidBodyTree]
    BlockConversionInfo: [1×1 struct]

Отобразите детали о созданном объекте robotics.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)   
--------------------

Покажите робота в окне рисунка. Вы видите полную гуманоидную форму на основе отображенных кадров.

show(robot)

ans = 
  Axes (Primary) with properties:

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

  Show all properties

Входные параметры

свернуть все

Имя файла 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: "MeshPath",{"../arm_meshes","../body_meshes"}

Импорт файла URDF

свернуть все

Относительные пути поиска файлов для файлов mesh, заданных как скаляр строки, вектор символов или массив ячеек скаляров строки или векторов символов. Сцепитесь файлы должны все еще быть заданы в файле URDF, но MeshPath задает относительные пути для этих заданных файлов. При использовании этой функции средство импорта URDF ищет файлы mesh, заданные в 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

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

свернуть все

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

Примечание

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

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

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

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

Советы

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

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

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

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

    • Заданный пользователями MeshPath

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

    • Путь MATLAB®

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

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

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

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

Введенный в R2017a