最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

importrobot

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

構文

robot = importrobot(filename)
robot = importrobot(URDFtext)
[robot,importInfo] = importrobot(model)
___ = importrobot(___,Name,Value)

説明

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

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

[robot,importInfo] = importrobot(model) は、Simscape™ Multibody™ モデルをインポートして、等価の robotics.RigidBodyTree オブジェクトおよび importInfo 内のインポートに関する情報を返します。出力される RigidBodyTree オブジェクトでは、固定ジョイント、直進ジョイント、回転ジョイントのみがサポートされています。その他のジョイント タイプ、拘束ブロック、可変慣性を使用するモデルをインポートするには、Simscape Multibody モデルのインポートの名前と値のペアを使用してください。

___ = importrobot(___,Name,Value) は、Name,Value ペア引数によって指定されている追加のオプションを提供します。上記のいずれかの構文を使用してください。変換元が URDF ファイルか Simscape Multibody モデルかによって、一定の名前と値のペアのみが適用されます。

すべて折りたたむ

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

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

     NumBodies: 10
        Bodies: {1x10 cell}
          Base: [1x1 robotics.RigidBody]
     BodyNames: {1x10 cell}
      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'

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

既存の Simscape™ Multibody™ ロボット モデルを、robotics.RigidBodyTree オブジェクトとして Robotics System Toolbox™ にインポートします。

Simscape™ Multibody™ モデルを開きます。これはヒューマノイド ロボットのモデルです。

open_system('sm_import_humanoid_urdf.slx')

モデルをインポートします。

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

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

作成された robotics.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)   
--------------------

ロボットを Figure ウィンドウに表示します。表示される座標系に基づいて、ヒューマノイドの完全な形状を確認できます。

show(robot)

ans = 
  Axes (Primary) with properties:

             XLim: [-0.5000 0.5000]
             YLim: [-0.5000 0.5000]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [0.1300 0.1100 0.7750 0.8150]
            Units: 'normalized'

  Show all properties

入力引数

すべて折りたたむ

URDF ファイルの名前。string スカラーまたは文字ベクトルとして指定します。このファイルは有効な URDF ロボットの記述でなければなりません。

例: "robot_file.urdf"

データ型: char | string

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

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

データ型: char | string

Simscape Multibody モデル。モデル ハンドル、string スカラー、または文字ベクトルとして指定します。

データ型: double | char | string

名前と値のペアの引数

オプションのコンマで区切られた Name,Value 引数のペアを指定します。ここで、Name は引数名、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

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

URDF ファイルのインポート

すべて折りたたむ

メッシュ ファイルの相対検索パス。string スカラー、文字ベクトル、あるいは string スカラーまたは文字ベクトルの cell 配列として指定します。メッシュ ファイルは URDF ファイル内で指定しなければなりませんが、MeshPath はこれらの指定されたファイルの相対パスを定義します。この関数を使用すると、URDF インポーターは、指定されているすべての相対パスを使用して、URDF で指定されているメッシュ ファイルを検索します。

データ型: char | string | cell

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

出力引数

すべて折りたたむ

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

メモ

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

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

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

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

ヒント

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

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

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

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

    • ユーザー指定の MeshPath

    • 現在のフォルダー

    • MATLAB® パス

    • URDF ファイルを含むフォルダー

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

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

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

R2017a で導入