Inventor から URDF を作る 4 ルート
joint 設定済み CAD (Autodesk Inventor) から URDF に変換する選択肢と選び方
要点
Inventor で joint constraint を設定した assembly (.iam) を URDF に変換するには 4 つのルートがある。iLogic は必須ではない。何を優先するかで選ぶ。
| ルート | 自動化 | 環境 | 更新頻度が高い時 | 一発のとき |
|---|---|---|---|---|
| 1. iLogic スクリプト | ✅ | Windows + Inventor | ◎ | △ (書く手間) |
| 2. URDF exporter add-in | ✅ | Windows + Inventor + add-in | ○ | ○ |
| 3. STEP + 手作業 URDF | ❌ | Linux OK | × (毎回手作業) | ◎ |
| 4. Fusion 360 → fusion2urdf | ✅ | Fusion 360 | ○ | ○ |
1. iLogic スクリプト
中身: Inventor 内蔵の VB.NET ライク言語。assembly の joint constraint (Revolute / Prismatic / Cylindrical / etc.) を walk して URDF <joint> に変換する自作スクリプト。
Pro: joint 情報 (type / axis / origin) が 1 対 1 で保存される。CAD 更新後は再走行するだけ。 Con: Windows + Inventor 必須。スクリプトを書くコスト。
参考: GitHub で inventor iLogic URDF 検索。fusion2urdf の iLogic 版が Autodesk フォーラムに転がっている。
2. Inventor URDF Exporter Add-in
中身: サードパーティ製の add-in (Inventor2URDF 系)、iLogic を書かずに GUI から export できる。
Pro: 導入するだけ、書かない。 Con: 品質にバラつき、Inventor バージョン依存でメンテナンスされていないことも多い。試すコストは低いので選択肢としては残る。
3. STEP + 手作業 URDF
中身: 各 part を STEP (or STL) に export → URDF を手で書き、joint 位置を Inventor 上の測定値から転記する。
Pro:
- Inventor 不要 (Linux でも作業できる)
- 部分更新が容易
- Mesh を STL に軽量化しやすい (visual 用に低ポリ化、collision 用に凸包 生成)
Con: joint origin を CAD 上で 1 個ずつ測る手間。7 joints くらいなら 30 分〜1 時間。
手順:
- Inventor 側で各 part を 「joint 原点を part の origin にそろえた STEP」 として export (親 part の座標系で子 part の joint 位置を測って、それを子の原点にする)
- 各 STEP を FreeCAD or meshlab で STL に変換 (visual mesh 用)。collision 用に凸包 STL を別途生成すると軽い
- URDF を手で書く。joint
<origin xyz="..." rpy="...">は「親 link の座標系での子 link の位置」を入れる check_urdf/urdf_to_graphizで構造確認、RViz で display
4. Fusion 360 → fusion2urdf 系
中身: Inventor ipt/iam を Fusion 360 で開き直して、syuntoku14/fusion2urdf add-in で export。
Pro: fusion2urdf は OSS で成熟しており joint 対応良好。 Con: Autodesk アカウント + Fusion 360 の環境が要る。joint を再定義することがある (Fusion 側で set-up し直し)。
選び方
- iLogic を書ける環境と続けて使う予定がある → 1 (自動化の再現性が最強)
- iLogic を書きたくない、Fusion に触れる → 4
- Linux 側で手が空いてる、頻繁に更新しない → 3 (7 parts 程度なら 1h 以内)
- どうしても Inventor 上で完結させたい、add-in を試す余地あり → 2
joint 情報が既に正しい場合
Inventor で joint constraint が正しく設定してあるなら、その情報を「数値として書き写す」だけなので、CAD 側で joint を作り直す必要はない。手作業 URDF ルートでも Inventor 側の joint origin を測定値として使えばよい。
落とし穴
- 単位: Inventor は mm がデフォルト、URDF は m。全 origin を 0.001 倍する
- 座標系: Inventor の Z-up と URDF の Z-up は通常同じだが、part export 時に origin を意識しないと ずれる
- mimic joint: Inventor の gear / cam / belt constraint は URDF の
<mimic>に落とせない場合が多い。多くの exporter は rigid 化する。4-bar link は特に注意 - mesh のスケール: STL に export したときの単位を確認 (mm/m)。URDF
<mesh scale=...>で吸収するか、export 側で m に合わせる
関連
- ROS 2 URDF ドキュメント: https://docs.ros.org/en/jazzy/Tutorials/Intermediate/URDF/URDF-Main.html
check_urdf/urdf_to_graphiz— 静的検査