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

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

robot = importrobot('iiwa14.urdf');

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

show(robot);

Импортируйте существующую модель робота 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

  • s

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

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

Введенный в R2017a