見出し画像

ROS入門 (22) - UnityでURDFを読み込む

Unityで「URDF」を読み込む方法をまとめました。

・Unity 2020.3
・URDF Importer 0.5.0

前回

1. URDF

URDF」 (Unified Robot Description Format)は、ロボットの構造を記述するためのXMLのフォーマットです。モデルの「外観」だけでなく、「リンク」や「慣性」などのを表すことができます。

「URDF」は「リンク」を「関節」で繋ぎ合わせたツリー構造になります。1つの「関節」に対して親の「リンク」は1つしか指定できません。最上位の「リンク」がロボットの基準位置になります。

・リンク : ロボットの1つの部品(台座や車輪など)。
・関節 : 2つのリンクを接続し、どう動くことができるかを定義。

画像1

2. URDF Importer

URDF Importer」は、URDF形式で定義されたロボットをUnityシーンにインポートするためのパッケージです。

3. URDF Importerのインストール

「URDF Importer」のインストール手順は、次のとおりです。

(1) Unityのメニュー「Window → Package Manager」で「Package Manager」を開く。
(2) 「Package Manager」で「+ → Add Package from Git URL」を選択し、以下のURLを入力し、「Add」ボタンを押す。

https://github.com/Unity-Technologies/URDF-Importer.git?path=/com.unity.robotics.urdf-importer
画像2

(3) メニュー「Edit → Project Settings → Physics」の「Solver Type」に「Temporal Gauss Seidel」を指定。
「Solver Type」で選択可能なソルバーは、次のとおりです。ソルバーは関節の動きや重複するRigidbody間の接触の管理など、多くの物理演算の相互作用を決定します。

・Projected Gauss Seidel : デフォルトのPhysXソルバー。
・Temporal Gauss Seidel : デフォルトのソルバーによって引き起こされる関節の不安定な動作を防止。

画像3

4. URDFのインポート

「Unity Robotics Hub」に含まれるロボットアーム「Niryo One」のURDFを読み込んでみます。

(1) Unityプロジェクトの作成。
(2) 「Unity Robotics Hub」リポジトリのクローン。

 $ git clone https://github.com/Unity-Technologies/Unity-Robotics-Hub.git

(3) 「Unity Robotics Hub」リポジトリの
「tutorials/pick_and_place/PickAndPlaceProject/Assets/URDF/niryo_one」をUnityプロジェクトのAssetsにコピー。
(4) URDFファイル「Assets/niryo_one/niryo_one」を右クリックし、「Import Robot from Selected URDF」をクリック。

画像4

(5) 「Y Axis」「VHACD」を指定して、「Import URDF」をクリック。

画像5

・Select Axis Type : メッシュファイルの方向。
・Select Convex Decomposer : 衝突メッシュ分解で使用するアルゴリズムを選択。

Hierarchyウィンドウに「niryo_one」が追加されます。

画像6

5. ロボットモデルの確認

Hierarchyウィンドウの「niryo_one」の「リンク」は、次のような階層構造になっています。

・niryo_one
 ・world
  ・base_link
   ・shoulder_link
    ・arm_link
     ・elbow_link
      ・forearm_link
       ・wrist_link
        ・hand_link

画像12

◎ niryo_one
「niryo_one」は以下のコンポーネントを持ちます。

・UrdfRobot
・Controller

画像14

◎ base_link
「base_link」は以下のコンポーネントを持ちます。

・UrdfLink
・ArticulationBody
・UrdfJointFixed

画像15

◎ その他のリンク
その他のリンクは以下のコンポーネントを持ちます。

・UrdfLink
・ArticulationBody
・UrdfJointRevolute

画像13

6. ロボットモデルの動作確認

ロボットモデルの動作確認してみます。

(1)  「niryo_one/world/base_link」の「Articulation Body」の「Immovable」をチェック。
リンクの座標が固定され、台座が動かなくなります。

画像11

(2) 「niryo_one」の「Controller」を以下のように設定。
キーボードでの動作確認で適用する力を指定しています。

画像12

・Control : PositionControl
・Stiffness : 剛性
・Damping : 減衰
・Force Limit : 力の制限
・Speed : 速度
・Torque : トルク
・Acceleration : 加速度
・High Light Color : 選択したリンクの色

関節が滑らないようにするには、StiffnessDampingを増やします。関節に力を適用できるようにするには、Force Limitを増やします。

(3) Playボタンでシーンを開始。
操作方法は、次のとおりです。

・左右キー : 操作する関節(ArticulationBody)を選択。
・上下キー : 関節(ArticulationBody)を時計回りと反時計回りに回転。

画像12

次回



この記事が気に入ったらサポートをしてみませんか?