![見出し画像](https://assets.st-note.com/production/uploads/images/66252870/rectangle_large_type_2_be87086807d667dedcf357731862bd7f.png?width=800)
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](https://assets.st-note.com/production/uploads/images/66247271/picture_pc_ac5fa6dab5a11c6e2f88ebd104ded18e.png?width=800)
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](https://assets.st-note.com/production/uploads/images/66247484/picture_pc_ce6734a07b30c125e4f4b9224a17ba8e.png?width=800)
(3) メニュー「Edit → Project Settings → Physics」の「Solver Type」に「Temporal Gauss Seidel」を指定。
「Solver Type」で選択可能なソルバーは、次のとおりです。ソルバーは関節の動きや重複するRigidbody間の接触の管理など、多くの物理演算の相互作用を決定します。
・Projected Gauss Seidel : デフォルトのPhysXソルバー。
・Temporal Gauss Seidel : デフォルトのソルバーによって引き起こされる関節の不安定な動作を防止。
![画像3](https://assets.st-note.com/production/uploads/images/66248271/picture_pc_f9654636b6bdf02af037c09e3bfbce99.png?width=800)
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](https://assets.st-note.com/production/uploads/images/66248867/picture_pc_d3fcd7550e3ec389050e41986feb44bf.png?width=800)
(5) 「Y Axis」「VHACD」を指定して、「Import URDF」をクリック。
![画像5](https://assets.st-note.com/production/uploads/images/66248952/picture_pc_941605d8dddaeb4f5593be9a5a94e97e.png?width=800)
・Select Axis Type : メッシュファイルの方向。
・Select Convex Decomposer : 衝突メッシュ分解で使用するアルゴリズムを選択。
Hierarchyウィンドウに「niryo_one」が追加されます。
![画像6](https://assets.st-note.com/production/uploads/images/66249254/picture_pc_2dddad047af9448b15a95558eb862b74.png?width=800)
5. ロボットモデルの確認
Hierarchyウィンドウの「niryo_one」の「リンク」は、次のような階層構造になっています。
・niryo_one
・world
・base_link
・shoulder_link
・arm_link
・elbow_link
・forearm_link
・wrist_link
・hand_link
![画像12](https://assets.st-note.com/production/uploads/images/66269982/picture_pc_87efd645b7d4d4688cb8d2df4867a759.png?width=800)
◎ niryo_one
「niryo_one」は以下のコンポーネントを持ちます。
・UrdfRobot
・Controller
![画像14](https://assets.st-note.com/production/uploads/images/66270105/picture_pc_6fc06a42e1207ba9fcd08fd4bc7e3454.png?width=800)
◎ base_link
「base_link」は以下のコンポーネントを持ちます。
・UrdfLink
・ArticulationBody
・UrdfJointFixed
![画像15](https://assets.st-note.com/production/uploads/images/66270153/picture_pc_d8565cca88c40c81ff2e9cc7823d79a3.png?width=800)
◎ その他のリンク
その他のリンクは以下のコンポーネントを持ちます。
・UrdfLink
・ArticulationBody
・UrdfJointRevolute
![画像13](https://assets.st-note.com/production/uploads/images/66270025/picture_pc_0e0edd38624180be1c28cdcc04f36b06.png?width=800)
6. ロボットモデルの動作確認
ロボットモデルの動作確認してみます。
(1) 「niryo_one/world/base_link」の「Articulation Body」の「Immovable」をチェック。
リンクの座標が固定され、台座が動かなくなります。
![画像11](https://assets.st-note.com/production/uploads/images/66251428/picture_pc_d2663e9160f90aa430115e4064005ae5.png?width=800)
(2) 「niryo_one」の「Controller」を以下のように設定。
キーボードでの動作確認で適用する力を指定しています。
![画像12](https://assets.st-note.com/production/uploads/images/66251602/picture_pc_201fdfd7f105e244b9ef604ce5a5570d.png?width=800)
・Control : PositionControl
・Stiffness : 剛性
・Damping : 減衰
・Force Limit : 力の制限
・Speed : 速度
・Torque : トルク
・Acceleration : 加速度
・High Light Color : 選択したリンクの色
関節が滑らないようにするには、StiffnessとDampingを増やします。関節に力を適用できるようにするには、Force Limitを増やします。
(3) Playボタンでシーンを開始。
操作方法は、次のとおりです。
・左右キー : 操作する関節(ArticulationBody)を選択。
・上下キー : 関節(ArticulationBody)を時計回りと反時計回りに回転。
![画像12](https://assets.st-note.com/production/uploads/images/66252664/picture_pc_b209ea27d22e246c80b814adb6abb3e2.png?width=800)
次回
この記事が気に入ったらサポートをしてみませんか?