importrobot
Importar un modelo de árbol de cuerpo rígido desde un archivo URDF, Xacro, SDF, texto o un modelo de Simscape Multibody
Sintaxis
Descripción
Importación de URDF, Xacro o SDF
devuelve un objeto robot
= importrobot(filename
)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
.
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 robot
= importrobot(___,format
)format
, la función devuelve un error.
especifica las opciones mediante uno o más argumentos de par nombre-valor, además de cualquier combinación de argumentos de entrada de las sintaxis anteriores. Por ejemplo, robot
= importrobot(___,Name,Value
)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 pares nombre-valor Importación de URDF, Xacro o SDF para importar un modelo desde un archivo URDF, Xacro o SDF, o de texto.
Importación de modelos de Simscape Multibody
[
importa un modelo de Simscape™ Multibody™ y devuelve un objeto robot
,importInfo
] = importrobot(model
)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.
[
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.robot
,importInfo
] = importrobot(___,Name,Value
)
Ejemplos
Importar un robot desde un archivo URDF
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)
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
Importar un robot desde un vector de caracteres URDF
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'
Mostrar el modelo de robot con geometrías visuales
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");
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");
Importar el modelo de Simscape™ Multibody™ al objeto RigidBodyTree
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) --------------------
Descomponer mallas de colisión del robot importado
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
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
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
Argumentos de entrada
filename
— Nombre del archivo de descripción del robot
escalar de cadena | vector de caracteres
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.
Modelos de robot incluidos con datos de malla
Modelo de robot | Visualización de la malla | Descripción |
---|---|---|
"iiwa7.urdf" | | Robot de 7 ejes KUKA LBR iiwa 7 R800 |
"iiwa14.urdf" | | Versión URDF de un robot de 7 ejes KUKA LBR iiwa 14 R820 |
"iiwa14.xacro" | | Versión Xacro de un robot de 7 ejes KUKA LBR iiwa 14 R820 |
"iiwa14.sdf" | | Versión SDF de un robot de 7 ejes KUKA LBR iiwa 14 R820 |
"sawyer.urdf" | | Robot de 7 ejes Rethink Robotics Sawyer |
Nota
Para descargar los datos de malla de los modelos de robot incluidos sin los datos de malla, consulte Instalar el paquete de soporte Robotics System Toolbox Robot Library Data.
Modelos de robot incluidos sin datos de malla
Modelo de robot | Visualización de la malla | Descripción |
---|---|---|
"abbIrb120.urdf" | Robot de 6 ejes ABB IRB 120 | |
"abbIrb120T.urdf" | Robot de 6 ejes ABB IRB 120T | |
"abbIrb1600.urdf" | Robot de 6 ejes ABB IRB 1600 | |
"abbYuMi.urdf" | Robot de 2 brazos ABB YuMi | |
"amrPioneer3AT.urdf" | Robot móvil Adept MobileRobots Pioneer 3-AT | |
"amrPioneer3DX.urdf" | Robot móvil Adept MobileRobots Pioneer 3-DX | |
"amrPioneerLX.urdf" | Robot móvil Adept MobileRobots Pioneer LX | |
"atlas.urdf" | Robot humanoide Boston Dynamics ATLAS® | |
"clearpathHusky.urdf" | Robot móvil Clearpath Robotics Husky | |
"clearpathJackal.urdf" | Robot móvil Clearpath Robotics Jackal | |
"clearpathTurtleBot2.urdf" | Robot móvil Clearpath Robotics TurtleBot 2 | |
"fanucLRMate200ib.urdf" | Robot de 6 ejes FANUC LR Mate 200iB | |
"fanucM16ib.urdf" | Robot de 6 ejes FANUC M-16iB | |
"frankaEmikaPanda.urdf" | Robot de 7 ejes Franka Emika Panda | |
"kinovaGen3.urdf" | Versión 1 del robot de 7 ejes Kinova® Gen3 | |
"kinovaGen3V12.urdf" | Versión 2 del robot de 7 ejes Kinova Gen3 | |
"kinovaJacoJ2N6S200.urdf" | Robot Kinova JACO® de 2 dedos y 6 DOF con muñeca no esférica | |
"kinovaJacoJ2N6S300.urdf" | Robot Kinova JACO® de 3 dedos y 6 DOF con muñeca no esférica | |
"kinovaJacoJ2N7S300.urdf" | Robot Kinova JACO® de 3 dedos y 7 DOF con muñeca no esférica | |
"kinovaJacoJ2S6S300.urdf" | Robot Kinova JACO® de 3 dedos y 6 DOF con muñeca esférica | |
"kinovaJacoJ2S7S300.urdf" | Robot Kinova JACO® de 3 dedos y 7 DOF con muñeca esférica | |
"kinovaJacoTwoArmExample.urdf" | Dos robots Kinova JACO® de 3 dedos y 6 DOF con muñeca no esférica | |
"kinovaMicoM1N4S200.urdf" | Robot Kinova MICO® de 2 dedos y 4 DOF | |
"kinovaMicoM1N6S200.urdf" | Robot Kinova MICO® de 2 dedos y 6 DOF | |
"kinovaMicoM1N6S300.urdf" | Robot Kinova MICO® de 3 dedos y 6 DOF | |
"kinovaMovo.urdf" | Robot móvil de 2 brazos Kinova MOVO® | |
"kukaIiwa7.urdf" | Robot de 7 ejes KUKA LBR iiwa 7 R800 | |
"kukaIiwa14.urdf" | Robot de 7 ejes KUKA LBR iiwa 14 R820 | |
"meca500r3.urdf" | Robot de 6 ejes Mecademic Meca500 R3 | |
"omronEcobra600.urdf" | | Robot SCARA de 4 ejes Omron eCobra 600 |
"puma560.urdf" | | Robot de 6 ejes PUMA 560 |
"quanserQArm.urdf" | Robot Quanser QArm de 4 DOF | |
"quanserQBot2e.urdf" | Robot móvil Quanser QBot 2e | |
"quanserQCar.urdf" | Robot móvil Quanser QCar | |
"rethinkBaxter.urdf" | Robot de 2 brazos Rethink Robotics Baxter | |
"rethinkSawyer.urdf" | Robot de 7 ejes Rethink Robotics Sawyer | |
"robotiq2F85.urdf" | Pinza de 2 dedos Robotiq 2F-85 La pinza puede utilizarse con estos manipuladores:
| |
"robotisOP2.urdf" | Robot humanoide ROBOTIS OP2 | |
"robotisOpenManipulator.urdf" | Robot de 4 ejes con pinza ROBOTIS OpenMANIPULATOR | |
"robotisTurtleBot3Burger.urdf" | Robot ROBOTIS TurtleBot 3 Burger | |
"robotisTurtleBot3Waffle.urdf" | Robot ROBOTIS TurtleBot 3 Waffle | |
"robotisTurtleBot3WaffleForOpenManipulator.urdf" | Robot ROBOTIS TurtleBot 3 Waffle con OpenMANIPULATOR | |
"robotisTurtleBot3WafflePi.urdf" | Robot ROBOTIS TurtleBot 3 Waffle Pi | |
"robotisTurtleBot3WafflePiForOpenManipulator.urdf" | Robot ROBOTIS TurtleBot 3 Waffle Pi con OpenMANIPULATOR | |
"techmanTM5-700" | | Robot Techman TM5-700 de 6 ejes con cámara |
"techmanTM5x-700" | | Robot Techman TM5X-700 de 6 ejes sin cámara |
"techmanTM5-900" | | Robot Techman TM5-900 de 6 ejes con cámara |
"techmanTM5x-900" | | Robot Techman TM5X-900 de 6 ejes sin cámara |
"techmanTM12" | | Robot Techman TM12 de 6 ejes con cámara |
"techmanTM12x" | | Robot Techman TM12X de 6 ejes sin cámara |
"techmanTM14" | | Robot Techman TM14 de 6 ejes con cámara |
"techmanTM14x" | | Robot Techman TM14X de 6 ejes sin cámara |
"universalUR3.urdf" | Robot de 6 ejes Universal Robots UR3 | |
"universalUR3e.urdf" | Robot de 6 ejes Universal Robots UR3e | |
"universalUR5.urdf" | Robot de 6 ejes Universal Robots UR5 | |
"universalUR5e.urdf" | Robot de 6 ejes Universal Robots UR5e | |
"universalUR10.urdf" | Robot de 6 ejes Universal Robots UR10 | |
"universalUR10e.urdf" | Robot de 6 ejes Universal Robots UR10e | |
"universalUR16e.urdf" | Robot de 6 ejes Universal Robots UR16e | |
"valkyrie.urdf" | Robot humanoide NASA Valkyrie | |
"willowgaragePR2.urdf" | Robot móvil Willow Garage PR2 | |
"yaskawaMotomanMH5.urdf" | Robot de 6 ejes Yaskawa Motoman MH5 |
Ejemplo: "robot_file.urdf"
Ejemplo: "robot_file.xacro"
Ejemplo: "robot_file.sdf"
Tipos de datos: char
| string
text
— Texto de descripción del robot
escalar de cadena | vector de caracteres
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
format
— Formato del archivo de texto de descripción del robot
"urdf"
| "xacro"
| "sdf"
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
model
— Modelo de Simscape Multibody
identificador del modelo | escalar de cadena | vector de caracteres
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
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"}
MeshPath
— Rutas de búsqueda relativas para archivos de malla
escalar de cadena | vector de caracteres | arreglo de celdas de escalares de cadena o vectores de caracteres
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
DataFormat
— Formato de datos de entrada/salida de las funciones cinemáticas y dinámicas
"struct"
(predeterminado) | "row"
| "column"
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
SDFModel
— Selecciona un modelo de SDF que contiene varios modelos
escalar de cadena | vector de caracteres
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
MaxNumBodies
— Número máximo de cuerpos permitidos en el robot importado durante la generación de código
número entero
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.
CollisionDecomposition
— Descomposición de las mallas de colisión del robot después de la importación
false
o 0
(predeterminado) | true
o 1
| objeto vhacdOptions
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óncollisionVHACD
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óncollisionVHACD
con las opciones de descomposición especificadas para descomponer las mallas de colisión especificadas en el archivo o texto URDF. Debe establecer la propiedadType
del objetovhacdOptions
en"RigidBodyTree"
.
BreakChains
— Ruptura de cadena cerrada
"error"
(predeterminado) | "remove-joints"
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 propiedadBlockConversionInfo
del argumento de salidaimportInfo
.
Tipos de datos: char
| string
ConvertJoints
— Conversión de articulación no admitida a articulación fija
"error"
(predeterminado) | "convert-to-fixed"
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 propiedadBlockConversionInfo
del argumento de salidaimportInfo
.
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
SMConstraints
— Eliminación de bloques de restricción
"error"
(predeterminado) | "remove"
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 propiedadBlockConversionInfo
del argumento de salidaimportInfo
.
Tipos de datos: char
| string
VariableInertias
— Eliminación de bloques de inercia variable
"error"
(predeterminado) | "remove"
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 propiedadBlockConversionInfo
del argumento de salidaimportInfo
.
Tipos de datos: char
| string
DataFormat
— Formato de datos de entrada/salida de las funciones cinemáticas y dinámicas
"struct"
(predeterminado) | "row"
| "column"
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
robot
— Modelo de robot
objeto rigidBodyTree
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.
importInfo
— Objeto para almacenar la información de importación
objeto rigidBodyTreeImportInfo
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 usuarioCarpeta 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
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Cuando se utiliza el argumento nombre-valor CollisionDecomposition
, importrobot
admite generación de código cuando el valor de CollisionDecomposition
es true
(1
) o false
(0
).
Historial de versiones
Introducido en R2017aR2024a: Importar robots con articulaciones flotantes
La función importrobot
ahora soporta:
La importación de articulaciones flotantes a partir de archivos URDF que utilizan elementos de articulación de tipo de atributo
floating
. Para más información, consulte https://wiki.ros.org/urdf/XML/joint.La importación de bloques 6-DOF Joint (Simscape Multibody) a partir de modelos Simscape Multibody como articulación flotante.
El árbol de cuerpo rígido representa las articulaciones de 6 DOF en Simscape Multibody o las articulaciones flotantes en archivos URDF como objetos rigidBodyJoint
con la propiedad Type
establecida en "floating"
.
R2023b: Soporte para descomposición de la malla de colisión
La función importrobot
admite la descomposición jerárquica convexa aproximada voxelizada (V-HACD) de las mallas de colisión del modelo de robot después de la importación con el argumento nombre-valor CollisionDecomposition
.
R2021b: Soporte para generación de código
La función importrobot
admite la generación de código.
Consulte también
rigidBodyTree
| rigidBodyTreeImportInfo
| loadrobot
| vhacdOptions
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)