メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

importrobot

URDF ファイル、Xacro ファイル、SDF ファイル、テキストまたは Simscape Multibody モデルから剛体ツリー モデルをインポート

説明

この関数は、URDF ファイル、Xacro ファイル、SDF ファイル、ロボット記述テキスト、または Simscape™ Multibody™ モデルから、rigidBodyTree オブジェクトとしてロボット モデルをインポートします。

メモ

すぐに使用できる事前定義されたロボット モデルを Robotics System Toolbox™ の Robot Library から読み込むには、loadrobot 関数を使用します。

URDF、Xacro、または SDF のインポート

robot = importrobot(filename) は、filename によって指定された Unified Robot Description Format (URDF)、XML Macros (Xacro)、または Simulation Description Format (SDF) ファイルを解析することにより、rigidBodyTree オブジェクトを返します。

robot = importrobot(text) は、URDF、Xacro、または SDF テキストのロボット記述を解析します。

robot = importrobot(___,format) は、前述の構文の入力引数の任意の組み合わせに加え、ロボットの記述のタイプを明示的に指定します。テキスト ファイルの形式が format 引数で指定された形式と一致しない場合、この関数はエラーを返します。

robot = importrobot(___,Name=Value) は、前の構文の入力引数の任意の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、importrobot("iiwa14.urdf",CollisionDecomposition=true) は KUKA LBR iiwa 14 ロボットをインポートし、Voxelized Hierarchical Approximate Convex Decomposition (V-HACD) を使用してロボットの衝突メッシュを分解します。

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 モデルに加え、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。他のジョイント タイプ、拘束ブロック、または可変慣性を使用するモデルをインポートするには、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'}

ロボットのビジュアル ジオメトリを記述するために、Unified Robot Description format (URDF) ファイルと関連付けられた .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™ ロボット モデルを、rigidBodyTree オブジェクトとして Robotics System Toolbox™ にインポートします。

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.

ロボットをインポートしますが、Voxelized Hierarchical Approximate Convex Decomposition (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 スカラーまたは文字ベクトルの cell 配列として指定します。メッシュ ファイルは 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 のボディの数の差です。

メモ

この名前と値のペアはコード生成ワークフローでのみ必要です。

インポート後のロボットの衝突メッシュの分解。logical 0 (false)、logical 1 (true)、または vhacdOptions オブジェクトとして指定します。

  • falseimportrobot は、インポート後にロボットの衝突メッシュを分解しません。

  • trueimportrobot は、既定の分解オプションをもつ関数 collisionVHACD を使用して、URDF ファイルまたはテキストで指定されたロボットの衝突メッシュを分解します。

  • vhacdOptions オブジェクト — importrobot は、分解オプションが指定された関数 collisionVHACD を使用して、URDF ファイルまたはテキストで指定された衝突メッシュを分解します。vhacdOptions オブジェクトの Type プロパティを、"RigidBodyTree" に設定する必要があります。

Simscape Multibody モデルのインポート

すべて展開する

閉連鎖の解除。"error" または "remove-joints" として指定します。

  • "error" — ソース モデルに閉連鎖が含まれている場合、importrobot はエラーを返します。

  • "remove-joints"importrobot は、ロボット モデルからジョイントを削除して、閉連鎖を解除します。削除されたジョイントは、出力引数 importInfoBlockConversionInfo プロパティで確認できます。

データ型: char | string

サポートされていないジョイントから固定ジョイントへの変換。"error" または "convert-to-fixed" として指定します。

  • "error" — ソース モデルにサポートされていないジョイントが含まれている場合、importrobot はエラーを返します。

  • "convert-to-fixed"importrobot は、ソース モデル内のサポートされていないジョイントを固定ジョイントに変換します。変換されたジョイントは、出力引数 importInfoBlockConversionInfo プロパティで確認できます。

サポートされていないジョイントとは、固定ジョイント、直進ジョイント、または回転ジョイント以外のジョイントです。

データ型: char | string

拘束ブロックの削除。"error" または "remove" として指定します。

  • "error" — ソース モデルに拘束ブロックが含まれている場合、importrobot はエラーを返します。

  • "remove"importrobot は、ソース モデルに存在する拘束ブロックから貢献を削除します。削除された拘束は、出力引数 importInfoBlockConversionInfo プロパティで確認できます。

データ型: char | string

可変慣性ブロックの削除。"error" または "remove" として指定します。

  • "error" — ソース モデルに可変慣性ブロックが含まれている場合、importrobot はエラーを返します。

  • "remove"importrobot は、ソース モデルに存在する可変慣性ブロックから貢献を削除します。削除された可変慣性ブロックは、出力引数 importInfoBlockConversionInfo プロパティで確認できます。

データ型: char | string

ロボット モデルの運動学およびダイナミクス関数の入出力データ形式。'DataFormat'"struct""row"、または "column" で構成されるコンマ区切りのペアとして指定します。ダイナミクス関数を使用するには、"row" または "column" を指定する必要があります。この名前と値のペアは、rigidBodyTree ロボット モデルの DataFormat プロパティを設定します。

データ型: char | string

出力引数

すべて折りたたむ

ロボット モデル。rigidBodyTree オブジェクトとして返されます。

メモ

URDF ファイル内に重力が指定されていない場合、既定の Gravity プロパティは [0 0 0] に設定されます。Simscape Multibody では、smimport を使用して URDF をインポートするときに既定の [0 0 -9.80665] m/s2 を使用します。

インポート情報を保存するためのオブジェクト。rigidBodyTreeImportInfo オブジェクトとして返されます。このオブジェクトには、入力 model と結果の robot 出力の間の関係が含まれます。

robot 内の各ボディのインポート情報をすべて表示するには、showdetails を使用します。剛体の情報を表示するリンク、それらに対応するモデル内のブロック、モデル内の特定のブロックの強調表示がコマンド ウィンドウに出力されます。

robot 出力または model 入力の特定のコンポーネントに関する情報を取得するには、bodyInfobodyInfoFromBlocks、または bodyInfoFromJoint を使用します。

モデルから剛体ツリー ロボット モデルにインポートされたビジュアル データを取得するには、getVisual 関数を使用します。

制限

  • importrobot は、mimic タグを含む URDF ファイルからのロボット モデルのインポートをサポートしていません。

ヒント

ビジュアル メッシュを含むロボット モデルをインポートするとき、関数 importrobot は、各剛体に割り当てる .stl または .dae ファイルを、以下の規則を使用して検索します。

  • この関数は、生メッシュ パスで、URDF、Xacro、または SDF ファイルの指定された剛体を検索します。ROS パッケージへの参照で package:\\<pkg_name> が削除されます。

  • 絶対パスは、変更なしで直接チェックされます。

  • 相対パスは、以下のディレクトリを順番に使用してチェックされます。

    • ユーザー指定の MeshPath

    • 現在のフォルダー

    • MATLAB® パス

    • URDF、Xacro、または SDF ファイルを含むフォルダー

    • URDF、Xacro、または SDF ファイルを含むフォルダーの 1 つ上のレベル

  • 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 で導入

すべて展開する