Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

importrobot

Importar un modelo de árbol de cuerpo rígido desde un archivo URDF, Xacro, SDF, texto o un modelo de Simscape Multibody

Descripción

Esta función importa un modelo de robot desde un archivo URDF, Xacro o SDF, un texto de descripción del robot o un modelo Simscape™ Multibody™ como objeto rigidBodyTree.

Nota

Para cargar modelos de robot predefinidos y listos para su uso desde la biblioteca de robots Robotics System Toolbox™, utilice la función loadrobot.

Importación de URDF, Xacro o SDF

robot = importrobot(filename) devuelve un objeto rigidBodyTree mediante el análisis del archivo de formato de descripción de robot unificado (URDF), de macros XML (Xacro) o de formato de descripción de simulación (SDF) especificado por filename.

ejemplo

robot = importrobot(text) analiza la descripción del robot desde el texto URDF, Xacro o SDF.

ejemplo

robot = importrobot(___,format) especifica explícitamente el tipo de descripción del robot, además de cualquier combinación de argumentos de entrada de las sintaxis anteriores. Si el formato del archivo de texto no coincide con el formato especificado en el argumento format, la función devuelve un error.

robot = importrobot(___,Name=Value) especifica las opciones mediante uno o más argumentos nombre-valor, además de cualquier combinación de argumentos de entrada de las sintaxis anteriores. Por ejemplo, importrobot("iiwa14.urdf",CollisionDecomposition=true) importa un robot KUKA LBR iiwa 14 y descompone las mallas de colisión del robot utilizando la descomposición jerárquica convexa aproximada voxelizada (V-HACD).

Utilice los argumentos nombre-valor Importación de URDF, Xacro o SDF para importar un modelo desde un archivo URDF, Xacro o SDF, o de texto.

ejemplo

Importación de modelos de Simscape Multibody

[robot,importInfo] = importrobot(model) importa un modelo de Simscape Multibody y devuelve un objeto rigidBodyTree equivalente e información sobre la importación en importInfo. En el objeto rigidBodyTree de salida solo se admiten articulaciones fijas, prismáticas, rotativas y flotantes.

[robot,importInfo] = importrobot(___,Name,Value) especifica opciones mediante uno o más argumentos de par nombre-valor, además del modelo de Simscape Multibody de la sintaxis anterior. Utilice los pares nombre-valor Importación de modelos de Simscape Multibody para importar un modelo que utilice otros tipos de articulación, bloques de restricción o inercias variables.

Ejemplos

contraer todo

Importe un archivo URDF como un objeto rigidBodyTree.

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

     NumBodies: 10
        Bodies: {[1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]}
          Base: [1x1 rigidBody]
     BodyNames: {'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'}
      BaseName: 'world'
       Gravity: [0 0 0]
    DataFormat: 'struct'

show(robot)

Figure contains an axes object. The axes object with xlabel X, ylabel Y 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'

  Use GET to show all properties

Especifique el vector de caracteres URDF. Este vector de caracteres es una descripción minimalista para crear un modelo de robot válido.

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

Importe el modelo de robot. La descripción crea un objeto rigidBodyTree que solo tiene un enlace de base de robot denominado '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'

Puede importar robots que tienen archivos .stl relacionados con el archivo de formato de descripción de robot unificado (URDF) para describir las geometrías visuales del robot. Cada cuerpo rígido tiene especificada una geometría visual individual. La función importrobot analiza el archivo URDF para obtener el modelo de robot y las geometrías visuales. La función asume que la geometría visual y la geometría de colisión del robot son iguales y asigna las geometrías visuales como geometrías de colisión de los cuerpos correspondientes.

Utilice la función show para mostrar la geometría visual y de colisión del modelo de robot en una figura. Luego, puede interactuar con el modelo haciendo clic en componentes para inspeccionarlos y haciendo clic con el botón secundario para alternar la visibilidad.

Importe un modelo de robot como un archivo URDF. Las ubicaciones de los archivos .stl se deben especificar correctamente en este URDF. Para añadir otros archivos .stl a cuerpos rígidos individuales, consulte addVisual.

robot = importrobot('iiwa14.urdf');

Visualice el robot con el modelo visual correspondiente. Haga clic en los cuerpos o los marcos para inspeccionarlos. Haga clic con el botón secundario en los cuerpos para alternar la visibilidad de cada geometría visual.

show(robot,Visuals="on",Collisions="off");

Figure contains an axes object. The axes object with xlabel X, ylabel Y 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.

Visualice el robot con las geometrías de colisión correspondientes. Haga clic en los cuerpos o los marcos para inspeccionarlos. Haga clic con el botón secundario en los cuerpos para alternar la visibilidad de cada geometría de colisión.

show(robot,Visuals="off",Collisions="on"); 

Figure contains an axes object. The axes object with xlabel X, ylabel Y 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.

Importe un modelo de robot de Simscape™ Multibody™ existente en Robotics System Toolbox™ como un objeto rigidBodyTree.

Abra el modelo de Simscape™ Multibody™. Se trata del modelo de un robot humanoide.

open_system('example_smhumanoidrobot.slx')

Importe el modelo.

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

     NumBodies: 21
        Bodies: {1×21 cell}
          Base: [1×1 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: 'example_smhumanoidrobot'
          RigidBodyTree: [1×1 rigidBodyTree]
    BlockConversionInfo: [1×1 struct]

Muestre los detalles sobre el objeto rigidBodyTree creado.

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

Importe un robot KUKA LBR iiwa 14.

robot = importrobot("iiwa14.urdf");

Muestre el robot con las mallas de colisión predeterminadas.

t = tiledlayout(1,2);
title(t,"KUKA iiwa 14")
nexttile;
show(robot,Visuals="off",Collisions="on");
title("Default Collision Meshes");
axis auto
nexttile;
show(robot);
title("Visual Meshes");
axis auto

Figure contains 2 axes objects. Axes object 1 with title Default Collision Meshes, xlabel X, ylabel Y 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. Axes object 2 with title Visual Meshes, xlabel X, ylabel Y 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.

Importe un robot, pero descomponga las mallas de colisión utilizando la descomposición jerárquica convexa aproximada voxelizada (V-HACD).

robotCollisionDecomp = importrobot("iiwa14.urdf",CollisionDecomposition=true);

Muestre el robot con las mallas de colisión actualizadas a partir de la descomposición.

figure
show(robotCollisionDecomp,Visuals="off",Collisions="on");
title("Decomposition of Collision Meshes");
axis auto

Figure contains an axes object. The axes object with title Decomposition of Collision Meshes, xlabel X, ylabel Y contains 85 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.

De forma predeterminada, el solver V-HACD descompone las mallas de colisión del robot. Para descomponer las mallas visuales del robot, impórtelo con opciones personalizadas del solver V-HACD.

options = vhacdOptions("RigidBodyTree",SourceMesh="VisualGeometry");
robotVisualDecomp = importrobot("iiwa14.urdf",CollisionDecomposition=options);

Muestre el robot con las mallas de colisión actualizadas a partir de la descomposición.

figure
show(robotVisualDecomp,Visuals="off",Collisions="on");
title("Decomposition of Visual Meshes");
axis auto

Figure contains an axes object. The axes object with title Decomposition of Visual Meshes, xlabel X, ylabel Y contains 85 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.

Argumentos de entrada

contraer todo

Nombre del archivo de descripción del robot, especificado como un escalar de cadena o un vector de caracteres. Este archivo debe ser una descripción de robot URDF, una descripción de robot Xacro o una descripción de modelo SDF válidas.

Ejemplo: "robot_file.urdf"

Ejemplo: "robot_file.xacro"

Ejemplo: "robot_file.sdf"

Tipos de datos: char | string

Texto de descripción del robot, especificado como un escalar de cadena o un vector de caracteres. El texto debe ser una descripción de robot URDF, una descripción de robot Xacro o una descripción de modelo SDF válidas.

Parse URDF Robot Description from text

Importe un modelo de robot desde un texto URDF.

% Specify URDF text as a character vector.
text = ['<?xml version="1.0" ?>', ...
        '<robot name="min">', ...
        '<link name="L0"/>', ...
        '</robot>'];
% Import the robot model from the URDF text.
robot = importrobot(text);

Importe un modelo de robot desde un archivo de texto URDF.

% Specify URDF text as a character vector.
text = ['<?xml version="1.0" ?>', ...
        '<robot name="min">', ...
        '<link name="L0"/>', ...
        '</robot>'];
% Write the text to file.
writelines(text,"URDF_robot.txt")
% Import the robot model from the URDF text file. Specify the format of
% the robot description text file.
robot = importrobot("URDF_robot.txt","urdf");

Parse Xacro Robot Description from text

Importe un modelo de robot desde un texto Xacro.

% Specify Xacro text as a character vector.
text = ['<?xml version="1.0" ?>', ...
        '<robot name="min" ', ...
        'xmlns:xacro="http://www.ros.org/wiki/xacro">', ...
        '<link name="L0"/>', ...
        '</robot>'];
% Import the robot model from the Xacro text.
robot = importrobot(text);

Importe un modelo de robot desde un archivo de texto Xacro.

% Specify Xacro text as a character vector.
text = ['<?xml version="1.0" ?>', ...
        '<robot name="min" ', ...
        'xmlns:xacro="http://www.ros.org/wiki/xacro">', ...
        '<link name="L0"/>', ...
        '</robot>'];
% Write the text to file.
writelines(text,"Xacro_robot.txt")
% Import the robot model from the Xacro text file. Specify the format of
% the robot description text file.
robot = importrobot("Xacro_robot.txt","xacro");

Parse SDF Model Description from text

Importe un modelo de robot desde un texto SDF.

% Specify SDF text as a character vector.
text = ['<?xml version="1.0" ?>', ...
        '<sdf version="1.6">', ...
        '<model name="min">', ...
        '<link name="L0"/>', ...
        '</model>', ...
        '</sdf>'];
% Import the robot model from the SDF text.
robot = importrobot(text);

Importe un modelo de robot desde un archivo de texto SDF.

% Specify SDF text as a character vector.
text = ['<?xml version="1.0" ?>', ...
        '<sdf version="1.6">', ...
        '<model name="min">', ...
        '<link name="L0"/>', ...
        '</model>', ...
        '</sdf>'];
% Write the text to file.
writelines(text,"SDF_robot.txt")
% Import the robot model from the SDF text file. Specify the format of
% the robot description text file.
robot = importrobot("SDF_robot.txt","sdf");

Tipos de datos: char | string

Formato del archivo de texto de descripción del robot, especificado como un escalar de cadena o un vector de caracteres. Utilice este argumento para especificar explícitamente el formato requerido para el archivo de descripción del robot.

Ejemplo: "robot_file.txt","urdf"

Ejemplo: "robot_file.txt","xacro"

Ejemplo: "robot_file.txt","sdf"

Tipos de datos: char | string

Modelo de Simscape Multibody, especificado como un escalar de cadena o un vector de caracteres.

Tipos de datos: char | string

Argumentos de par nombre-valor

expandir todo

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.

En versiones anteriores a R2021a, use comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: "MeshPath",{"../arm_meshes","../body_meshes"}

Importación de URDF, Xacro o SDF

expandir todo

Rutas de búsqueda relativas para archivos de malla, especificadas como un escalar de cadena, un vector de caracteres o un arreglo de celdas de escalares de cadena o vectores de caracteres. Los archivos de malla se deben especificar dentro del archivo URDF, Xacro o SDF, pero MeshPath define las rutas relativas para estos archivos indicados.

Dependencias

Para utilizar este argumento nombre-valor, debe especificar el argumento filename o text como un archivo URDF, Xacro o SDF.

Tipos de datos: char | string | cell

Formato de datos de entrada/salida de las funciones cinemáticas y dinámicas del modelo de robot, especificado como el par separado por comas compuesto por 'DataFormat' y "struct", "row" o "column". Para utilizar funciones dinámicas, debe especificar "row" o "column". Este par nombre-valor establece la propiedad DataFormat del modelo de robot rigidBodyTree.

Tipos de datos: char | string

Seleccione un modelo de archivo SDF o de texto que contenga varios modelos, especificada como un escalar de cadena o un vector de caracteres.

Dependencias

Para utilizar este argumento nombre-valor, debe especificar el argumento filename o text como archivo SDF o descripción de texto SDF, respectivamente.

Tipos de datos: char | string

Número máximo de cuerpos permitidos en el robot importado durante la generación de código, especificado como un número entero. Utilice MaxNumBodies para añadir cuerpos rígidos al árbol importado dentro de una función que admita la generación de código. El número de cuerpos adicionales que se pueden añadir es la diferencia entre MaxNumBodies y el número de cuerpos del árbol importado, rigidBodyTree.NumBodies.

Nota

Este par nombre-valor solo es necesario para los flujos de trabajo de generación de código.

Descomposición de las mallas de colisión del robot después de la importación, especificada como un 0 lógico (false), un 1 lógico (true) o un objeto vhacdOptions.

  • false: importrobot no descompone las mallas de colisión del robot después de la importación.

  • true: importrobot utiliza la función collisionVHACD con las opciones de descomposición predeterminadas para descomponer las mallas de colisión del robot especificadas en el archivo o texto URDF.

  • Objeto vhacdOptions: importrobot utiliza la función collisionVHACD con las opciones de descomposición especificadas para descomponer las mallas de colisión especificadas en el archivo o texto URDF. Debe establecer la propiedad Type del objeto vhacdOptions en "RigidBodyTree".

Importación de modelos de Simscape Multibody

expandir todo

Ruptura de cadena cerrada, especificada como "error" o "remove-joints".

  • "error": importrobot devuelve un error cuando el modelo de origen contiene cadenas cerradas.

  • "remove-joints": importrobot elimina articulaciones del modelo de robot para romper las cadenas cerradas. Puede ver las articulaciones eliminadas en la propiedad BlockConversionInfo del argumento de salida importInfo.

Tipos de datos: char | string

Conversión de articulación no admitida a articulación fija, especificada como "error" o "convert-to-fixed".

  • "error": importrobot devuelve un error cuando el modelo de origen contiene articulaciones no admitidas.

  • "convert-to-fixed": importrobot convierte las articulaciones no admitidas del modelo de origen a articulaciones fijas. Puede ver las articulaciones convertidas en la propiedad BlockConversionInfo del argumento de salida importInfo.

Una articulación no admitida es toda articulación que no sea una articulación fija, prismática o rotativa.

Tipos de datos: char | string

Eliminación de bloques de restricción, especificada como "error" o "remove".

  • "error": importrobot devuelve un error cuando el modelo de origen contiene bloques de restricción.

  • "remove": importrobot elimina las contribuciones de los bloques de restricción presentes en el modelo de origen. Puede ver las restricciones eliminadas en la propiedad BlockConversionInfo del argumento de salida importInfo.

Tipos de datos: char | string

Eliminación de bloques de inercia variable, especificada como "error" o "remove".

  • "error": importrobot devuelve un error cuando el modelo de origen contiene bloques de inercia variable.

  • "remove": importrobot elimina las contribuciones de los bloques de inercia variable presentes en el modelo de origen. Puede ver las inercias variables eliminadas en la propiedad BlockConversionInfo del argumento de salida importInfo.

Tipos de datos: char | string

Formato de datos de entrada/salida de las funciones cinemáticas y dinámicas del modelo de robot, especificado como el par separado por comas compuesto por 'DataFormat' y "struct", "row" o "column". Para utilizar funciones dinámicas, debe especificar "row" o "column". Este par nombre-valor establece la propiedad DataFormat del modelo de robot rigidBodyTree.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Modelo de robot, devuelto como un objeto rigidBodyTree.

Nota

Si no se especifica la gravedad en el archivo URDF, la propiedad Gravity predeterminada se establece en [0 0 0]. Simscape Multibody utiliza un valor predeterminado de [0 0 -9.80665]m/s2 cuando se utiliza smimport para importar un URDF.

Objeto para almacenar la información de importación, devuelto como un objeto rigidBodyTreeImportInfo. Este objeto contiene la relación entre la entrada de model y la salida de robot resultante.

Utilice showdetails para enumerar toda la información de importación de cada cuerpo en el robot. Los enlaces para mostrar la información de los cuerpos rígidos, sus correspondientes bloques en el modelo y el resaltado de bloques específicos en el modelo se generan como salida en la ventana de comandos.

Utilice bodyInfo, bodyInfoFromBlocks o bodyInfoFromJoint para obtener información sobre componentes específicos en la salida de robot o en la entrada de model.

Limitaciones

  • importrobot no admite la importación de modelos de robot a partir de archivos URDF que contengan la etiqueta mimic.

Sugerencias

Al importar un modelo de robot con mallas visuales, la función importrobot busca los archivos .stl o .dae que se asignarán a cada cuerpo rígido siguiendo estas reglas:

  • La función busca la ruta de la malla sin procesar para un cuerpo rígido especificado desde el archivo URDF, Xacro o SDF. En las referencias a los paquetes ROS se ha eliminado package:\\<pkg_name>.

  • Las rutas absolutas se comprueban directamente sin ninguna modificación.

  • Las rutas relativas se comprueban utilizando los siguientes directorios en orden:

    • MeshPath especificada por el usuario

    • Carpeta actual

    • Ruta de MATLAB®

    • Carpeta que contiene el archivo URDF, Xacro o SDF

    • Nivel por encima de la carpeta que contiene el archivo URDF, Xacro o SDF

  • El nombre del archivo de la ruta de la malla en el archivo URDF, Xacro o SDF se añade al argumento de entrada MeshPath.

Si aún no se encuentra el archivo de malla, el analizador ignora el archivo de malla y devuelve un objeto rigidBodyTree sin visualización.

Referencias

[1] Mammou, Khaled, et al. “Voxelized Hierarchical Approximate Convex Decomposition - V-HACD Version 4.” GitHub, October 24, 2022. https://github.com/kmammou/v-hacd.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2017a

expandir todo