Robotics
Inventor Joint の親子と位置合わせ
Inventor の Joint は対称な関係で URDF のような親子は無い。API の OccurrenceOne/Two は選択順。joint 原点の合わせ方 (原点・アライメント・反転・値 0) と URDF の parent/child・rest pose への対応。
要点: Inventor の Joint に親子は無い。2 部品の joint 原点 (座標系) を重ねる対称な関係で、区別は「1 番目に選んだ側 (OccurrenceOne)」と「2 番目 (OccurrenceTwo)」だけ。URDF の親子は木構造で必須なので、選択順の規約か変換側の反転で決める。
Inventor 側
選択順と OccurrenceOne / Two
| 項目 | 1 番目の選択 | 2 番目の選択 |
|---|---|---|
| API | AssemblyJoint.OccurrenceOne、Definition.OriginOne | OccurrenceTwo、OriginTwo |
| 配置時に動く側 | 動く (固定されていなければ) | 動かない |
| 値の正方向 | AngularPosition は「1 番目の origin の方向 (Z) まわり」 |
Inventor は解くときに両方を同等に扱う。1 番目を固定していれば 2 番目が動く。「親」を決めているわけではない。
ジョイントダイアログの「接続」と「位置合わせ」
| 区画 | 選ぶもの | 決まるもの |
|---|---|---|
| 接続 1 / 接続 2 | 各部品の形状 1 つ (円筒面・円形エッジ・平面・頂点) | joint 原点の位置と Z 軸 (回転軸 / 直動軸)。ここで選んだ 2 つの座標系が重なる |
| 接続 の 反転 | ボタン | 2 番目の Z を逆向きに重ねる。部品が裏返しに付いたときに押す |
| ギャップ / オフセット | 数値 | Z 方向の隙間 (Rigid / Rotational) |
| 位置合わせ 1 / 位置合わせ 2 | 各部品の平面・エッジ・軸 1 つ | joint 座標系の X 軸。2 つの参照が平行になる姿勢が 値 0 |
| 位置合わせ の 反転 | ボタン | X を 180° 回す。値 0 の姿勢が反対側になる |
接続だけ指定した場合、X 軸 (値 0 の向き) は Inventor が決める。Rotational の角度 0 を「アームが水平」等の意味ある姿勢にしたければ、その姿勢で平行になる面を位置合わせに選ぶ。Slider では位置合わせが回り止めそのもの。
joint 原点 (origin) の合わせ方
各 origin は座標系 1 個 (原点 + Z 軸 + X 軸)。
- 原点と Z 軸: 選んだ形状から推定される。円筒面 → 軸が Z、原点は面の端の円中心。円形エッジ → 円中心、Z は面法線。平面 → 面法線が Z、原点はカーソル位置に応じて中心・頂点・辺中点
- アライメント (Align): X 軸を決める。両側で面かエッジを 1 つずつ追加選択する。指定しなければ Inventor が決める
- 反転 (Flip): 2 番目の Z を逆向きにして重ねる。部品が裏返しに付いたら押す
- ギャップ (Gap): Z 方向のオフセット (Rigid / Rotational)
Joint は OriginOne の座標系を OriginTwo の座標系に一致させる。一致した状態が joint 値 0。Rotational の角度、Slider の距離はこの 0 からの量で、Limits (制限) の開始・終了も同じ値で指定する。
値の確認と変更
- ブラウザで joint をダブルクリック → 「制限」タブに 開始 / 現在 / 終了
- 「ドライブ」で値を掃引できる
- 保存時の値が 0 でないことは普通にある (組んだときの姿勢のまま)
URDF 側
| URDF | 意味 |
|---|---|
parent / child | 木構造。child link の座標系 = joint 座標系 (q = 0 のとき) |
<origin> | parent link 座標系から見た joint 座標系 |
<axis> | joint 座標系での軸方向。正方向は右ねじ (revolute) / 軸方向 (prismatic) |
| q = 0 | 設計者が決める。Inventor の joint 値 0 に合わせるのが自然 |
URDF は閉ループを表せない。1 つの link に親は 1 つ。
対応の取り方
- 親子: 「OccurrenceOne = child、OccurrenceTwo = parent」と決めると、Inventor で 動く部品を先に、土台側を後に 選んで joint を作れば一致する。逆に作ってしまった joint は変換側で反転する (parent / child、姿勢、値の符号を入れ替える)
- 位置合わせ (rest pose): URDF の q = 0 を Inventor の値 0 に取る。CAD の保存姿勢が値 v なら、child を軸まわりに −v だけ戻した姿勢が rest pose。limit はそのまま写せる
- 正方向: OriginOne の Z の向きは選択した形状の面法線や円筒軸の向きに依存し、目視では分からない。joint を実際に +δ 動かして親子の相対姿勢の変化から決めるのが確実 (詳細: Inventor から iLogic で URDF を出す)
- base: Inventor で固定 (Ground) する部品を URDF の base_link にする。固定は 1 部品だけにする。他の部品を固定すると joint が解けなくなる
よくある食い違い
- 土台側を先に選んで joint を作った → 変換で親子が逆になり、link が木に繋がらない
- 保存姿勢が joint 中間位置 → 値 0 に戻さないと URDF の 0 が limit 範囲外になる
- Rotational の Limits を 開始 > 終了 で入れた → 範囲は同じだが、変換側で min/max に並べ替える必要がある
- Mate 拘束と Joint を混ぜた → Joint だけが URDF に出る。Mate で繋いだ部品は孤立するか、Joint が単独で動かなくなる
関連
最終更新: