LOG134 / R2R2R / Pixels to Motors
グリッパー組み込みパイプライン
01 URDFを発見する ✓
手動仮組みをやめた。mycobot_rosパッケージにURDFが存在した。ロボットアームと同じ手順で自動インポートできる。
find ~/mycobot_ros -name "*.urdf" | grep -i gripper → mycobot_description/urdf/adaptive_gripper/ mycobot_adaptive_gripper.urdf
02 package://パスを変換する ✓
Unity URDF ImporterはROSのパッケージ解決を持たない。ファイル名のみに書き換えた。
sed 's|package://mycobot_description/urdf/adaptive_gripper/||g' \ mycobot_adaptive_gripper.urdf \ > Assets/Models/gripper/adaptive_gripper.urdf 確認: <mesh filename="gripper_base.dae"/> ✓
03 Unity URDF Importerで読み込む ✓
右クリック → Import Robot from Selected URDF file。Axis Type: Y Axis。firefighterという名前でHierarchyに生成された。gripperにリネームしてlink6の子にした。
Hierarchy: link6 └─ gripper ← 追加 ├─ gripper_base ├─ gripper_left1/2/3 └─ gripper_right1/2/3
04 ArticulationBodyを削除する ✓
インポート時に付いたUrdfJointRevoluteとArticulationBodyがlink6の物理チェーンを壊した。Editorスクリプトで全削除した。
[MenuItem("R2R2R/Remove Gripper ArticulationBodies")] static void RemoveAll() { var gripper = GameObject.Find("gripper"); foreach (var c in gripper .GetComponentsInChildren<UrdfJointRevolute>()) Object.DestroyImmediate(c); foreach (var c in gripper .GetComponentsInChildren<ArticulationBody>()) Object.DestroyImmediate(c); }
05 J6に+30°オフセットを加える ✓
グリッパー取り付け後、再生中にlink6が約30°傾いた。MotionLogPlayerのCSV読み込み時に補正した。
for (int j = 0; j < 6; j++) { float angle = 0f; float.TryParse(cols[j + 2], out angle); if (j == 5) angle += 30f; // グリッパー座標系補正 angles[j] = angle; }
06 GripperControllerで開閉する ✓
URDFのmimic joint定義に従い6パーツを連動させる。InitialRotationを基準にQuaternionで回転させることでジンバルロックを回避した。Open Angle=35°で確定。
void ApplyAngle(float a) { left3.localRotation = left3Init * Euler(0, a, 0); left2.localRotation = left2Init * Euler(0, a, 0); left1.localRotation = left1Init * Euler(0, -a, 0); right3.localRotation = right3Init * Euler(0, -a, 0); right2.localRotation = right2Init * Euler(0, -a, 0); right1.localRotation = right1Init * Euler(0, a, 0); } public void Open() => _target = 0f; public void Close() => _target = openAngle; // 35°
← クリックで各ステップを展開
LOG134 結果
6 連動パーツ
+30° J6オフセット
35° Open Angle確定値
手動仮組み vs URDF自動インポート
項目 BEFORE 手動仮組み AFTER URDF自動
組み立て方法 Inspector手動ドラッグ URDFから自動生成
座標値 目視で調整・暫定値 URDF origin定義から取得
開閉制御 GripperBuilder.cs(未完) GripperController.cs(完成)
ArticulationBody 手動でlink6に接続 全削除・Transform制御に切替
再現性 低(手作業依存) 高(URDFから再生成可能)