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 Multibody, чтобы импортировать модель, которая использует другие объединенные типы, ограничительные блоки или переменную инерцию.

___ = 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)

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, чтобы получить робота и визуальные конфигурации модели. Функция принимает, что визуальная геометрия и геометрия столкновения робота являются тем же самым, и присваивает визуальные конфигурации как конфигурации столкновения corresponsing тел.

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

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

robot = importrobot('iiwa14.urdf');

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

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

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

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

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

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

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

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

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

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

    • Путь MATLAB®

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

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

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

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

Введенный в R2017a