Main Content

importrobot

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

説明

URDF または SDF のインポート

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

robot = importrobot(URDFtext) は URDF テキストを解析します。URDFtext は、string スカラーまたは文字ベクトルとして指定します。

robot = importrobot(SDFtext) は SDF テキストを解析します。SDFtext は、string スカラーまたは文字ベクトルとして指定します。

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

robot = importrobot(___,Name,Value) は、前述の構文の入力引数の任意の組み合わせに加え、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。URDF、SDF ファイル、またはテキストからモデルをインポートするには、名前と値のペアURDF または SDF のインポートを使用します。

Simscape Multibody モデルのインポート

[robot,importInfo] = importrobot(model) は、Simscape™ Multibody™ モデルをインポートして、等価の rigidBodyTree オブジェクトおよびインポートに関する情報を importInfo に返します。出力される rigidBodyTree オブジェクトでは、固定ジョイント、直進ジョイントおよび回転ジョイントのみがサポートされています。

[robot,importInfo] = importrobot(___,Name,Value) は、前述の構文からの Simscape Multibody モデルに加え、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。その他のジョイント タイプ、拘束ブロックまたは可変慣性を使用するモデルをインポートするには、Simscape Multibody モデルのインポートの名前と値のペアを使用します。

すべて折りたたむ

URDF ファイルを rigidBodyTree オブジェクトとしてインポートします。

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

     NumBodies: 10
        Bodies: {1x10 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x10 cell}
      BaseName: 'world'
       Gravity: [0 0 0]
    DataFormat: 'struct'

show(robot)

Figure contains an axes object. The axes object 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: {1x0 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x0 cell}
      BaseName: 'L0'
       Gravity: [0 0 0]
    DataFormat: 'struct'

ロボットのビジュアル ジオメトリを記述するために、Unified Robot Description format (URDF) ファイルと関連付けられた .stl ファイルをもつロボットをインポートできます。各剛体には、個別のビジュアル ジオメトリが指定されています。関数 importrobot は、URDF ファイルを解析してロボット モデルとビジュアル ジオメトリを取得します。関数は、ロボットのビジュアル ジオメトリと衝突ジオメトリが同じであると想定し、対応するボディの衝突ジオメトリとしてビジュアル ジオメトリを割り当てます。

関数 show を使用して、Figure 内でロボット モデルのビジュアル ジオメトリと衝突ジオメトリを表示します。その後、コンポーネントをクリックして検査したり、右クリックして表示状態を切り替えたりして、モデルを操作できます。

ロボット モデルを URDF ファイルとしてインポートします。.stl ファイルの場所が、この URDF 内で正しく指定されていなければなりません。他の .stl ファイルを個別の剛体に追加する方法の詳細については、addVisualを参照してください。

robot = importrobot('iiwa14.urdf');

関連付けられたビジュアル モデルを使用してロボットを可視化します。ボディまたは座標系を検査するには、それらをクリックします。各ビジュアル ジオメトリの表示状態を切り替えるには、ボディを右クリックします。

show(robot,'visuals','on','collision','off');

Figure contains an axes object. The axes object 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','collision','on'); 

Figure contains an axes object. The axes object 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: {1x21 cell}
          Base: [1x1 rigidBody]
     BodyNames: {1x21 cell}
      BaseName: 'Base'
       Gravity: [0 0 -9.8066]
    DataFormat: 'struct'

importInfo = 
  rigidBodyTreeImportInfo with properties:

        SourceModelName: 'example_smhumanoidrobot'
          RigidBodyTree: [1x1 rigidBodyTree]
    BlockConversionInfo: [1x1 struct]

作成された rigidBodyTree オブジェクトに関する詳細を表示します。

showdetails(importInfo)
--------------------
Robot: (21 bodies)

 Idx     Body Name     Simulink Source Blocks     Joint Name     Simulink Source Blocks   Joint Type     Parent Name(Idx)   Children Name(s)
 ---     ---------     ----------------------     ----------     ----------------------   ----------     ----------------   ----------------
   1        Body01    Info | List | Highlight        Joint01    Info | List | Highlight     revolute              Base(0)   Body02(2)  
   2        Body02    Info | List | Highlight        Joint02    Info | List | Highlight     revolute            Body01(1)   Body03(3)  
   3        Body03    Info | List | Highlight        Joint03    Info | List | Highlight     revolute            Body02(2)   Body04(4)  
   4        Body04    Info | List | Highlight        Joint04    Info | List | Highlight     revolute            Body03(3)   
   5        Body05    Info | List | Highlight        Joint05    Info | List | Highlight     revolute              Base(0)   Body06(6)  
   6        Body06    Info | List | Highlight        Joint06    Info | List | Highlight     revolute            Body05(5)   Body07(7)  
   7        Body07    Info | List | Highlight        Joint07    Info | List | Highlight     revolute            Body06(6)   Body08(8)  
   8        Body08    Info | List | Highlight        Joint08    Info | List | Highlight     revolute            Body07(7)   
   9        Body09    Info | List | Highlight        Joint09    Info | List | Highlight     revolute              Base(0)   Body10(10)  
  10        Body10    Info | List | Highlight        Joint10    Info | List | Highlight     revolute            Body09(9)   Body11(11)  
  11        Body11    Info | List | Highlight        Joint11    Info | List | Highlight     revolute           Body10(10)   Body12(12)  
  12        Body12    Info | List | Highlight        Joint12    Info | List | Highlight     revolute           Body11(11)   
  13        Body13    Info | List | Highlight        Joint13    Info | List | Highlight     revolute              Base(0)   Body14(14)  
  14        Body14    Info | List | Highlight        Joint14    Info | List | Highlight     revolute           Body13(13)   Body15(15)  
  15        Body15    Info | List | Highlight        Joint15    Info | List | Highlight     revolute           Body14(14)   Body16(16)  
  16        Body16    Info | List | Highlight        Joint16    Info | List | Highlight     revolute           Body15(15)   
  17        Body17    Info | List | Highlight        Joint17    Info | List | Highlight     revolute              Base(0)   Body18(18)  
  18        Body18    Info | List | Highlight        Joint18    Info | List | Highlight     revolute           Body17(17)   Body19(19)  
  19        Body19    Info | List | Highlight        Joint19    Info | List | Highlight        fixed           Body18(18)   Body20(20)  
  20        Body20    Info | List | Highlight        Joint20    Info | List | Highlight        fixed           Body19(19)   
  21        Body21    Info | List | Highlight        Joint21    Info | List | Highlight        fixed              Base(0)   
--------------------

入力引数

すべて折りたたむ

URDF または SDF ファイルの名前。string スカラーまたは文字ベクトルとして指定します。このファイルは有効な URDF ロボットの記述または SDF モデルの記述である必要があります。

メッシュ データをもつ付属のロボット モデル

ロボット モデル説明
"iiwa7.urdf"

KUKA LBR iiwa 7 R800 7 軸ロボット

"iiwa14.urdf"

KUKA LBR iiwa 14 R820 7 軸ロボットの URDF バージョン

"iiwa14.sdf"

KUKA LBR iiwa 14 R820 7 軸ロボットの SDF バージョン

"sawyer.urdf"

Rethink Robotics Sawyer 7 軸ロボット

メッシュ データがない付属のロボット モデル用のメッシュ データをダウンロードするには、Install Robotics System Toolbox Robot Library Data Support Packageを参照してください。

メッシュ データがない付属のロボット モデル

ロボット モデル説明
"abbIrb120.urdf"

ABB IRB 120 6 軸ロボット

"abbIrb120T.urdf"

ABB IRB 120T 6 軸ロボット

"abbIrb1600.urdf"

ABB IRB 1600 6 軸ロボット

"abbYuMi.urdf"

ABB YuMi 2 腕ロボット

"amrPioneer3AT.urdf"

Adept MobileRobots Pioneer 3-AT モバイル ロボット

"amrPioneer3DX.urdf"

Adept MobileRobots Pioneer 3-DX モバイル ロボット

"amrPioneerLX.urdf"

Adept MobileRobots Pioneer LX モバイル ロボット

"atlas.urdf"

Boston Dynamics ATLAS® ヒューマノイド ロボット

"clearpathHusky.urdf"

Clearpath Robotics Husky モバイル ロボット

"clearpathJackal.urdf"

Clearpath Robotics Jackal モバイル ロボット

"clearpathTurtleBot2.urdf"

Clearpath Robotics TurtleBot 2 モバイル ロボット

"fanucLRMate200ib.urdf"

FANUC LR Mate 200iB 6 軸ロボット

"fanucM16ib.urdf"

FANUC M-16iB 6 軸ロボット

"frankaEmikaPanda.urdf"

Franka Emika Panda 7 軸ロボット

"kinovaGen3.urdf"

KINOVA® Gen3 7 軸ロボットの Version 1

"kinovaGen3V12.urdf"

KINOVA® Gen3 7 軸ロボットの Version 2

"kinovaJacoJ2N6S200.urdf"

KINOVA JACO® 2 指 6 DOF ロボット (手首は非球面)

"kinovaJacoJ2N6S300.urdf"

KINOVA JACO® 3 指 6 DOF ロボット (手首は非球面)

"kinovaJacoJ2N7S300.urdf"

KINOVA JACO® 3 指 7 DOF ロボット (手首は非球面)

"kinovaJacoJ2S6S300.urdf"

KINOVA JACO® 3 指 6 DOF ロボット (手首は球面)

"kinovaJacoJ2S7S300.urdf"

KINOVA JACO® 3 指 7 DOF ロボット (手首は球面)

"kinovaJacoTwoArmExample.urdf"

KINOVA JACO® 3 指 6 DOF ロボット 2 台 (手首は非球面)

"kinovaMicoM1N4S200.urdf"

KINOVA MICO® 2 指 4 DOF ロボット

"kinovaMicoM1N6S200.urdf"

KINOVA MICO® 2 指 6 DOF ロボット

"kinovaMicoM1N6S300.urdf"

KINOVA MICO® 3 指 6 DOF ロボット

"kinovaMovo.urdf"

KINOVA MOVO® 2 腕モバイル ロボット

"kukaIiwa7.urdf"

KUKA LBR iiwa 7 R800 7 軸ロボット

"kukaIiwa14.urdf"

KUKA LBR iiwa 14 R820 7 軸ロボット

"quanserQArm.urdf"

Quanser QArm 4 DOF ロボット

"quanserQBot2e.urdf"

Quanser QBot 2e モバイル ロボット

"quanserQCar.urdf"

Quanser QCar モバイル ロボット

"rethinkBaxter.urdf"

Rethink Robotics Baxter 2 腕ロボット

"rethinkSawyer.urdf"

Rethink Robotics Sawyer 7 軸ロボット

"robotisOP2.urdf"

ROBOTIS OP2 ヒューマノイド ロボット

"robotisOpenManipulator.urdf"

ROBOTIS OpenMANIPULATOR 4 軸ロボット (グリッパー付属)

"robotisTurtleBot3Burger.urdf"

ROBOTIS TurtleBot 3 Burger ロボット

"robotisTurtleBot3Waffle.urdf"

ROBOTIS TurtleBot 3 Waffle ロボット

"robotisTurtleBot3WaffleForOpenManipulator.urdf"

ROBOTIS TurtleBot 3 Waffle ロボット (OpenMANIPULATOR 付属)

"robotisTurtleBot3WafflePi.urdf"

ROBOTIS TurtleBot 3 Waffle Pi ロボット

"robotisTurtleBot3WafflePiForOpenManipulator.urdf"

ROBOTIS TurtleBot 3 Waffle Pi ロボット (OpenMANIPULATOR 付属)

"universalUR3.urdf"

Universal Robots UR3 6 軸ロボット

"universalUR3e.urdf"

Universal Robots UR3e 6 軸ロボット

"universalUR5.urdf"

Universal Robots UR5 6 軸ロボット

"universalUR5e.urdf"

Universal Robots UR5e 6 軸ロボット

"universalUR10.urdf"

Universal Robots UR10 6 軸ロボット

"universalUR10e.urdf"

Universal Robots UR10e 6 軸ロボット

"universalUR16e.urdf"

Universal Robots UR16e 6 軸ロボット

"valkyrie.urdf"

NASA Valkyrie ヒューマノイド ロボット

"willowgaragePR2.urdf"

Willow Garage PR2 モバイル ロボット

"yaskawaMotomanMH5.urdf"

Yaskawa Motoman MH5 6 軸ロボット

例: "robot_file.urdf"

例: "robot_file.sdf"

データ型: char | string

URDF ロボット テキスト。string スカラーまたは文字ベクトルとして指定します。

例: "<?xml version="1.0" ?><robot name="min"><link name="L0"/></robot>"

例: "robot_file.txt","urdf"

データ型: char | string

SDF モデル テキスト。string スカラーまたは文字ベクトルとして指定します。

例: "<?xml version="1.0" ?><sdf version="1.6"><model name="min"><link name="L0"/></model></sdf>"

例: "robot_file.txt","sdf"

データ型: char | string

ロボット記述テキスト ファイルのファイル形式。string スカラーまたは文字ベクトルとして指定します。ロボット記述ファイルに必要な形式を明示的に指定するには、この引数を使用します。

例: "robot_file.txt","urdf"

例: "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 または SDF のインポート

すべて折りたたむ

メッシュ ファイルの相対検索パス。string スカラー、文字ベクトル、あるいは string スカラーまたは文字ベクトルの cell 配列として指定します。メッシュ ファイルは URDF または SDF ファイル内で指定する必要がありますが、MeshPath はこれらの指定されたファイルへの相対パスを定義します。

データ型: char | string | cell

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

データ型: char | string

複数のモデルが含まれる SDF からモデルを選択します。string スカラーまたは文字ベクトルとして指定します。

メモ

この名前と値のペアは、SDF モデルおよびテキストにのみ適用されます。

データ型: char | string

コード生成時にインポートされたロボットで許可される最大ボディ数。整数として指定します。MaxNumBodies を使用して、コード生成をサポートする関数内のインポートされたツリーに剛体を追加します。追加できるボディの数は、MaxNumBodies とインポートされたツリー rigidBodyTree.NumBodies のボディの数の差です。

メモ

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

Simscape Multibody モデルのインポート

すべて折りたたむ

指定された model 入力で閉連鎖を解除するかどうかを示します。"error" または "remove-joints" として指定します。"remove-joints" を指定した場合、結果の robot 出力ではチェーン クロージャ ジョイントが削除されます。それ以外の場合、関数はエラーをスローします。

データ型: char | string

指定された model 入力で、サポートされていないジョイントを固定ジョイントに変換するかどうかを示します。"error" または "convert-to-fixed" として指定します。"convert-to-fixed" を指定した場合、結果の robot 出力では、サポートされていないジョイントが固定ジョイントに変換されます。出力される rigidBodyTree オブジェクトでは、固定ジョイント、直進ジョイントおよび回転ジョイントのみがサポートされています。それ以外で、model にサポートされていないジョイントが含まれている場合、関数はエラーをスローします。

データ型: char | string

指定された model 入力で、拘束ブロックを削除するかどうかを示します。"error" または "remove" として指定します。"remove" を指定した場合、結果の robot 出力では、拘束が削除されます。それ以外で、model に拘束ブロックが含まれている場合、関数はエラーをスローします。

データ型: char | string

指定された model 入力で、可変慣性ブロックを削除するかどうかを示します。"error" または "remove" として指定します。"remove" を指定した場合、結果の robot 出力では、可変慣性が削除されます。それ以外で、model に可変慣性ブロックが含まれている場合、関数はエラーをスローします。

データ型: char | string

ロボット モデルの運動学およびダイナミクス関数の入出力データ形式。'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 入力の特定のコンポーネントに関する情報を取得するには、bodyInfobodyInfoFromBlock、または bodyInfoFromJoint を使用します。

ヒント

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

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

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

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

    • ユーザー指定の MeshPath

    • 現在のフォルダー

    • MATLAB® パス

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

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

  • URDF または SDF ファイル内のメッシュ パスからのファイル名が、MeshPath 入力引数に付加されます。

メッシュ ファイルがまだ見つからない場合、パーサーはメッシュ ファイルを無視して、ビジュアルのない rigidBodyTree オブジェクトを返します。

バージョン履歴

R2017a で導入