주요 콘텐츠

importrobot

URDF, Xacro, SDF 파일, 텍스트 또는 Simscape Multibody 모델에서 강체 트리 모델 가져오기

설명

이 함수는 URDF 파일, Xacro 파일, SDF 파일, 로봇 설명 텍스트 또는 Simscape™ Multibody™ 모델로부터 로봇 모델을 rigidBodyTree 객체로 가져옵니다.

참고

Robotics System Toolbox™ 로봇 라이브러리에서 미리 정의된, 바로 사용 가능한 로봇 모델을 불러오려면 loadrobot 함수를 사용합니다.

URDF, Xacro 또는 SDF 가져오기

robot = importrobot(filename)filename에 의해 지정된 URDF(Unified Robot Description Format) 파일, Xacro(XML Macros) 파일 또는 SDF(Simulation Description Format) 파일을 구문 분석하여 rigidBodyTree 객체를 반환합니다.

예제

robot = importrobot(text)는 URDF 텍스트, Xacro 텍스트 또는 SDF 텍스트에서 로봇 설명을 구문 분석합니다.

예제

robot = importrobot(___,format)은 위에 열거된 구문의 입력 인수 조합 외에 로봇 설명의 유형을 명시적으로 지정합니다. 텍스트 파일의 형식이 format 인수로 지정된 형식과 일치하지 않으면 함수는 오류를 반환합니다.

robot = importrobot(___,Name=Value)는 위에 열거된 구문의 입력 인수 조합 외에 하나 이상의 이름-값 인수를 사용하여 옵션을 지정합니다. 예를 들어 importrobot("iiwa14.urdf",CollisionDecomposition=true)는 KUKA LBR iiwa 14 로봇을 가져오고, V-HACD(voxelized hierarchical approximate convex decomposition: 복셀화된 계층적 근사 볼록 분해)를 사용하여 로봇의 충돌 메시를 분해합니다.

URDF 파일, Xacro 파일, SDF 파일이나 텍스트에서 모델을 가져오려면 URDF, Xacro 또는 SDF 가져오기 이름-값 인수를 사용합니다.

예제

Simscape Multibody 모델 가져오기

[robot,importInfo] = importrobot(model)Simscape Multibody 모델을 가져오고 이에 상응하는 rigidBodyTree 객체 및 가져오기에 대한 정보를 importInfo에 반환합니다. 출력 rigidBodyTree 객체에서는 고정 조인트, 회전 조인트, 플로팅 조인트만 지원됩니다.

Simscape Multibody 모델을 가져올 때, 지원되는 시각적 정보도 강체 트리 표현과 함께 가져옵니다. 여기에는 DAE 메시와 STL 메시가 포함되어 있어서, 강체에 지원되는 시각적 요소와의 호환성을 보장합니다. 또한 Simscape Multibody 모델과 연결된 다양한 프레임을 가져와서, 이를 가져온 rigidBodyTree robot의 일부로 만듭니다.

[robot,importInfo] = importrobot(___,Name,Value)는 이전 구문의 Simscape Multibody 모델 외에 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 지정합니다. 다른 조인트 유형, Constraint 블록 또는 가변 관성을 사용하는 모델을 가져오려면 Simscape Multibody 모델 가져오기 이름-값 인수를 사용하십시오.

예제

모두 축소

URDF 파일을 rigidBodyTree 객체로 가져옵니다.

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

     NumBodies: 10
        Bodies: {[1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]  [1×1 rigidBody]}
          Base: [1×1 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'
    FrameNames: {'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'}

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'

  Show all properties

URDF 문자형 벡터를 지정합니다. 이 문자형 벡터는 유효한 로봇 모델을 만들기 위한 최소한의 설명입니다.

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

로봇 모델을 가져옵니다. 설명은 'L0'이라는 로봇 베이스 링크만 있는 rigidBodyTree 객체를 생성합니다.

robot = importrobot(URDFtext)
robot = 
  rigidBodyTree with properties:

     NumBodies: 0
        Bodies: {1×0 cell}
          Base: [1×1 rigidBody]
     BodyNames: {1×0 cell}
      BaseName: 'L0'
       Gravity: [0 0 0]
    DataFormat: 'struct'
    FrameNames: {'L0'}

URDF(Unified Robot Description format) 파일과 연결된 .stl 파일이 있는 로봇을 가져와서 로봇의 시각적 기하 도형을 설명할 수 있습니다. 각 강체에는 개별 시각적 기하 도형이 지정되어 있습니다. importrobot 함수는 URDF 파일을 구문 분석하여 로봇 모델과 시각적 기하 도형을 가져옵니다. 이 함수는 로봇의 시각적 기하 도형과 충돌 기하 도형이 동일하다고 간주하고, 시각적 기하 도형을 대응하는 바디의 충돌 기하 도형으로 할당합니다.

show 함수를 사용하여 Figure에 로봇 모델의 시각적 기하 도형과 충돌 기하 도형을 표시합니다. 그런 다음 컴포넌트를 클릭하여 검사하고 마우스 오른쪽 버튼으로 클릭하여 가시성을 전환함으로써 모델과 상호 작용할 수 있습니다.

로봇 모델을 URDF 파일로 가져옵니다. .stl 파일 위치는 이 URDF에 올바르게 지정되어 있어야 합니다. 개별 강체에 다른 .stl 파일을 추가하려면 addVisual 항목을 참조하십시오.

robot = importrobot('iiwa14.urdf');

연결된 시각적 모델을 사용하여 로봇을 시각화합니다. 바디 또는 프레임을 검사하려면 마우스 왼쪽 버튼으로 클릭합니다. 각 시각적 기하 도형의 가시성을 전환하려면 바디를 마우스 오른쪽 버튼으로 클릭합니다.

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.

연결된 충돌 기하 도형을 사용하여 로봇을 시각화합니다. 바디 또는 프레임을 검사하려면 마우스 왼쪽 버튼으로 클릭합니다. 각 충돌 기하 도형의 가시성을 전환하려면 바디를 마우스 오른쪽 버튼으로 클릭합니다.

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.

기존 Simscape™ Multibody™ 로봇 모델을 Robotics System Toolbox™에 rigidBodyTree 객체로 가져옵니다.

Simscape Multibody 모델을 엽니다. 이는 휴머노이드 로봇에 대한 모델입니다.

open_system('example_smhumanoidrobot.slx')

모델을 가져옵니다.

[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]

생성된 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)   
--------------------

KUKA LBR iiwa 14 로봇을 가져옵니다.

robot = importrobot("iiwa14.urdf");

로봇을 디폴트 충돌 메시와 함께 표시합니다.

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.

로봇을 가져오되 V-HACD(복셀화된 계층적 근사 볼록 분해)를 사용하여 충돌 메시를 분해합니다.

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

로봇을 분해를 통해 업데이트된 충돌 메시와 함께 표시합니다.

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.

기본적으로 V-HACD 솔버는 로봇의 충돌 메시를 분해합니다. 로봇의 시각적 메시를 분해하기 위해 사용자 지정 V-HACD 솔버 옵션을 사용하여 로봇을 가져옵니다.

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

로봇을 분해를 통해 업데이트된 충돌 메시와 함께 표시합니다.

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.

입력 인수

모두 축소

로봇 설명 파일의 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 이 파일은 유효한 URDF 로봇 설명, Xacro 로봇 설명 또는 SDF 모델 설명이어야 합니다.

예: "robot_file.urdf"

예: "robot_file.xacro"

예: "robot_file.sdf"

데이터형: char | string

로봇 설명 텍스트로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 이 텍스트는 유효한 URDF 로봇 설명, Xacro 로봇 설명 또는 SDF 모델 설명이어야 합니다.

텍스트에서 URDF 로봇 설명을 구문 분석하기

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

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

텍스트에서 Xacro 로봇 설명을 구문 분석하기

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

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

텍스트에서 SDF 로봇 설명을 구문 분석하기

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

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

데이터형: char | string

로봇 설명 텍스트 파일의 파일 형식으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 로봇 설명 파일에 필요한 형식을 명시적으로 지정하려면 이 인수를 사용하십시오.

예: "robot_file.txt","urdf"

예: "robot_file.txt","xacro"

예: "robot_file.txt","sdf"

데이터형: char | string

Simscape Multibody 모델로, 모델 핸들, string형 스칼라 또는 문자형 벡터로 지정됩니다.

데이터형: char | string

이름-값 인수

모두 확장

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name을 묶으십시오.

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

URDF, Xacro 또는 SDF 가져오기

모두 확장

메시 파일의 상대 탐색 경로로, string형 스칼라, 문자형 벡터, 또는 string형 스칼라나 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 메시 파일은 여전히 URDF 파일, Xacro 파일 또는 SDF 파일 내에서 지정되어야 하지만 MeshPath는 이렇게 지정된 파일의 상대 경로를 정의합니다.

종속성

이 이름-값 인수를 사용하려면 filename 또는 text 인수를 URDF, Xacro, SDF 파일 중 하나로 지정해야 합니다.

데이터형: char | string | cell

로봇 모델의 기구학 함수와 동역학 함수에 대한 입력/출력 데이터 형식으로, 'DataFormat'과 함께 "struct", "row" 또는 "column"이 쉼표로 구분되어 지정됩니다. 동역학 함수를 사용하려면 "row" 또는 "column"을 지정해야 합니다. 이 이름-값 쌍은 rigidBodyTree 로봇 모델의 DataFormat 속성을 설정합니다.

데이터형: char | string

여러 모델이 포함된 SDF 파일 또는 텍스트에서의 모델 선택으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.

종속성

이 이름-값 인수를 사용하려면 filename 또는 text 인수를 SDF 파일 또는 SDF 텍스트 설명으로 각각 지정해야 합니다.

데이터형: char | string

코드 생성 중에 가져온 로봇에 허용되는 최대 바디 개수로, 정수로 지정됩니다. 코드 생성을 지원하는 함수 내에서 가져온 트리에 강체를 추가하려면 MaxNumBodies를 사용합니다. 추가할 수 있는 추가 바디 개수는 MaxNumBodies와 가져온 트리의 바디 개수 rigidBodyTree.NumBodies 간의 차이입니다.

참고

이 이름-값 쌍은 코드 생성 워크플로에만 필요합니다.

로봇을 가져온 후 충돌 메시를 분해할지 여부로, 논리값 0(false), 논리값 1(true) 또는 vhacdOptions 객체로 지정됩니다.

  • falseimportrobot 함수가 로봇을 가져온 후 충돌 메시를 분해하지 않습니다.

  • trueimportrobot 함수가 collisionVHACD 함수와 디폴트 분해 옵션을 사용하여 URDF 파일 또는 텍스트에 지정된 로봇 충돌 메시를 분해합니다.

  • vhacdOptions 객체 — importrobot 함수가 collisionVHACD 함수와 지정된 분해 옵션을 사용하여 URDF 파일 또는 텍스트에 지정된 충돌 메시를 분해합니다. vhacdOptions 객체의 Type 속성을 "RigidBodyTree"로 설정해야 합니다.

Simscape Multibody 모델 가져오기

모두 확장

닫힌 체인 해제로, "error" 또는 "remove-joints"로 지정됩니다.

  • "error" — 소스 모델에 닫힌 체인이 포함되어 있으면 importrobot 함수가 오류를 반환합니다.

  • "remove-joints"importrobot 함수가 로봇 모델에서 조인트를 제거하여 닫힌 체인을 해제합니다. 제거된 조인트는 importInfo 출력 인수의 BlockConversionInfo 속성에서 확인할 수 있습니다.

데이터형: char | string

지원되지 않는 조인트에서 고정 조인트로의 변환으로, "error" 또는 "convert-to-fixed"로 지정됩니다.

  • "error" — 소스 모델에 지원되지 않는 조인트가 포함되어 있으면 importrobot 함수가 오류를 반환합니다.

  • "convert-to-fixed"importrobot 함수가 소스 모델에 있는 지원되지 않는 조인트를 고정 조인트로 변환합니다. 변환된 조인트는 importInfo 출력 인수의 BlockConversionInfo 속성에서 확인할 수 있습니다.

지원되지 않는 조인트는 고정 조인트, 직선 조인트, 회전 조인트 이외의 모든 조인트입니다.

데이터형: char | string

Constraint 블록 제거로, "error" 또는 "remove"로 지정됩니다.

  • "error" — 소스 모델에 Constraint 블록이 포함되어 있으면 importrobot 함수가 오류를 반환합니다.

  • "remove"importrobot 함수가 소스 모델에 있는 Constraint 블록으로 인한 기여를 제거합니다. 제거된 제약 조건은 importInfo 출력 인수의 BlockConversionInfo 속성에서 확인할 수 있습니다.

데이터형: char | string

Variable Inertia 블록 제거로, "error" 또는 "remove"로 지정됩니다.

  • "error" — 소스 모델에 Variable Inertia 블록이 포함되어 있으면 importrobot 함수가 오류를 반환합니다.

  • "remove"importrobot 함수가 소스 모델에 있는 Variable Inertia 블록으로 인한 기여를 제거합니다. 제거된 가변 관성은 importInfo 출력 인수의 BlockConversionInfo 속성에서 확인할 수 있습니다.

데이터형: char | string

로봇 모델의 기구학 함수와 동역학 함수에 대한 입력/출력 데이터 형식으로, 'DataFormat'과 함께 "struct", "row" 또는 "column"이 쉼표로 구분되어 지정됩니다. 동역학 함수를 사용하려면 "row" 또는 "column"을 지정해야 합니다. 이 이름-값 쌍은 rigidBodyTree 로봇 모델의 DataFormat 속성을 설정합니다.

데이터형: char | string

출력 인수

모두 축소

로봇 모델로, rigidBodyTree 객체로 반환됩니다.

참고

URDF 파일에 중력이 지정되지 않은 경우 디폴트 Gravity 속성은 [0 0 0]으로 설정됩니다. Simscape Multibodysmimport를 사용하여 URDF를 가져올 때 디폴트 값인 [0 0 -9.80665]m/s2을 사용합니다.

가져오기 정보를 저장하기 위한 객체로, rigidBodyTreeImportInfo 객체로 반환됩니다. 이 객체에는 입력 model과 그 결과로 생성된 robot 출력 간의 관계가 포함됩니다.

robot의 각 바디에 대한 가져오기 정보를 나열하려면 showdetails를 사용합니다. 강체 정보를 표시하는 링크, 강체에 대응하는 모델 내 블록, 모델에서 특정 블록의 강조 표시가 명령 창에 출력됩니다.

robot 출력값 또는 model 입력값에서 특정 컴포넌트에 대한 정보를 가져오려면 bodyInfo, bodyInfoFromBlocks 또는 bodyInfoFromJoint를 사용합니다.

getVisual 함수를 사용하여, 모델에서 가져온 시각적 데이터를 강체 트리 로봇 모델로 불러옵니다.

제한 사항

  • importrobot 함수는 모방 태그가 포함된 URDF 파일에서 로봇 모델 가져오기를 지원하지 않습니다.

시각적 메시가 있는 로봇 모델을 가져올 때 importrobot 함수는 다음 규칙을 사용하여 각 강체에 할당할 .stl 파일 또는 .dae 파일을 검색합니다.

  • 이 함수는 URDF 파일, Xacro 파일 또는 SDF 파일에서 지정된 강체에 대한 원시 메시 경로를 탐색합니다. ROS 패키지에 대한 참조에서 package:\\<pkg_name>이 제거되었습니다.

  • 절대 경로는 수정 없이 직접 검사가 이루어집니다.

  • 상대 경로는 다음 디렉터리를 순서대로 사용하여 검사가 이루어집니다.

    • 사용자 지정 MeshPath

    • 현재 폴더

    • MATLAB® 경로

    • URDF 파일, Xacro 파일 또는 SDF 파일을 포함한 폴더

    • URDF 파일, Xacro 파일 또는 SDF 파일을 포함한 폴더의 한 단계 상위 폴더

  • URDF 파일, Xacro 파일 또는 SDF 파일에 있는 메시 경로의 파일 이름이 MeshPath 입력 인수에 추가됩니다.

메시 파일이 계속 발견되지 않으면 구문 분석기는 메시 파일을 무시하고 시각적 요소가 없는 rigidBodyTree 객체를 반환합니다.

참고 문헌

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

확장 기능

모두 확장

버전 내역

R2017a에 개발됨

모두 확장