notes
Robotics

ケーブルハーネスの自動配線の考え方

配線を「通してよい道のネットワーク」と「線の割り当て」と「束の中の並べ方」に分けて解く. 多品種流の整数計画, 交渉による混雑解消 (PathFinder), Cosserat rod による形の確認

要点: 自動配線は 1 本ずつ空間の最短路を引くより, 「道のネットワークを先に決め, その上で全部の線を同時に割り当て, 最後に束の中の並びと曲げを決める」の 3 段に分けると, 束がまとまり形がそろう.

3 段の分け方#

段決めるもの解き方の例同じ分け方の分野
1. 道のネットワーク線を通してよい経路 (フレームに沿った区間, 分岐してよい点, 関節をまたぐ所)構造の稜線・面からの一定距離の線, 人が描いた道, 骨格 (medial axis)CAD の harness 設計 (CATIA / NX は bundle segment と branch point を先に引く)
2. 割り当て (global routing)どの線がどの区間を通るか, どこで分岐するか多品種流の整数計画 (MILP), 交渉による混雑解消 (PathFinder)VLSI / FPGA の global routing
3. 束の中 (detailed routing)区間の中での線の並び順, 角の丸め, 固定具の位置区間ごとの並び (track assignment), 曲げ半径での丸め, 一定間隔の固定VLSI の detailed routing, PCB の配線層

空間の格子で 1 本ずつ引く方法では, 束ねるのは「既に引いた線の近くを安くする」重みに頼る. 線を引く順番で結果が変わり, 曲げや重なりは後から直すことになる.

段 2 の定式化: 多品種流 + 固定費#

道のネットワークを有向グラフ , 区間 の長さを とする. つなぐ組 (線) ごとに流量 1 を流す.

  • : 線 が区間 を通るか
  • : 区間 を 1 本でも使うか (束の区間を作るか)
  • (固定費) が束ねる報酬になる. 同じ区間を何本で使っても は 1 回分なので, まとめて通すほど安い
  • は区間に通せる束の太さ (断面積) の上限. は線の外径
  • 分岐する電源線などの多端子は, 端子の 1 つを根にして各端子への流れを作り, 区間の使用 をネットごとにまとめる (Steiner 木). 分岐点の口数の上限は節点の次数の制約で書ける
  • 系統を分ける (電源と信号を同じ区間に入れない) は の形の制約

Karlsson, Åblad, Hermansson ら (Chalmers, 2023) は長さ・束ねる報酬・通したい領域を目的に入れ, 決定的な方法で配線の形の候補を出して Pareto 前線を近似した. 産業規模の 3D の例 3 つで数秒〜数分 (根拠: arXiv:2311.09061, Computer-Aided Design 169 (2024)). 同じグループの修士論文は MILP と Lagrange 緩和 (劣勾配法) で上界と下界を出している (Optimization of Cable Harness Routing). 配線図の形と 3D の位置を 1 つの MILP にまとめた例もある (arXiv:2603.08157).

段 2 の別解: 交渉による混雑解消 (PathFinder)#

McMurchie と Ebeling (1995) の FPGA 配線法. 全部の線を一度は資源の取り合いを許して引き, 取り合いの多い所の値段を上げて引き直すことを繰り返す.

  • : 元の値段 (長さ)
  • : 履歴. 取り合いがあった回ごとに増える
  • : 今の取り合いの数に応じた係数

引く順番に結果が左右されにくい. MILP が大きすぎるときの代わりになる (根拠: PathFinder の解説).

出口のまわりと束を分けて引く#

束を縦横 (軸に平行) にそろえ, 角と角の間を 2R (R は最小曲げ半径) 空けると, 曲げ半径は守れる. ただし出口が狭い所にあると, 2R のまっすぐな長さが取れず, 大回りになるか角がきつくなる.

部分引き方同じ分け方の分野
出口のまわり (出口から一定距離)斜めを許した格子の最短路 → 直線に間引く → 曲げ半径が入らない角を曲線 (ベジェ) に置き換えるPCB の fanout / breakout (BGA の下は斜めや細い線で外へ出す)
その外 (束)状態を (ボクセル, 進む向き) にした Dijkstra. 曲がる手は「曲がって 2R まっすぐ進む」までVLSI の Manhattan routing
  • 2 つのつなぎ方: 縦横の探索を「出口のまわりの全部のボクセル」から始めてよいことにし, 各ボクセルの初期値をそこまでの格子の最短路の重みにする (多始点の Dijkstra). 終わりも同じ
  • つなぎ目の角: 縦横は始めに 2R まっすぐ進む, 出口の方へ戻る向きでは始めない. これが無いと, つなぎ目で角が詰まるか折り返す
  • 出口のまわりで縦横の探索に「自由に曲がる手」を足す方法は, 曲げ半径を見ずに角を作るので, 後で丸めきれない角が増える
  • 出口のまわりは, 出口そのものでなく, 出口からまっすぐ出した先の点から測る (長く下ろしてから曲がる出口がある)
  • 丸めきれない角を 3 次ベジェ曲線に置き換える方法は, 両端の点と向きを決めると, 両端が近く向きが大きく違う所で曲率半径 R を守れない. 「円弧 - 直線 - 円弧」(Dubins 経路の CSC) なら半径 R を守る形を直接作れる. 両端を辺の途中にも取ると候補が増える

分岐の部品 (継ぎ・端子台) を置く所#

  • 分岐を部品 (WAGO などのレバー式の継ぎ) でする場合, 部品の位置を「つながる端子までの距離の合計が最小」で決めると, 束から離れた角に置かれやすい. 線は部品から各端子へ別々に出る
  • 先に部品なしで木 (Steiner 木) を引き, その分岐点を部品の目標にして, 目標から一定距離以内の取り付け面だけから選ぶと, 部品が束の上に乗る
  • 分岐点が取り付け面から遠い (宙で分かれる) ときは目標を使わない. 一番近い面に寄せると, 線が長くなることがある

動く所#

  • 関節をまたぐ線は, 道のネットワークに「またぐ区間」(ケーブルキャリア, 回転部の巻き取り) を置き, その区間の長さを関節の可動範囲から決める
  • たるんだ部分の形 (重力・曲げ剛性) は Cosserat rod のモデルで計算できる. Fraunhofer の IPS Cable Simulation はこれを使い, 格子で探した経路をこのモデルで細かく直す (Fraunhofer ITWM, Chalmers)

関連#

最終更新:

On this page