braid_from_trajectories — DRIVE braidpath op

• 資料種類:any → table

• 呼叫: import fullseye as fs; fs.ledger.braid_from_trajectories(trajectories, obstacles=None, angle=0.1, jitter='auto')(要直接呼叫實作,import braidpath; braidpath.braid_from_trajectories(trajectories, obstacles=None, angle=0.1, jitter='auto');從台帳取用則 opsdrive.get("braid_from_trajectories"))

• GPU:無(僅 CPU 參考實作)

用法

由平面軌跡群(以及靜止障礙物的點)建構辮字(交叉符號的序列)。

假設每個步長內為直線運動,在投影軸 x' = x cos θ + y sin θ 上求相鄰兩股交換順序的時刻(以閉式求出;相對運動也是直線,零點至多 1 個),並依時間順序寫成字母。左邊的股從下方(y' 較小的一側) 穿過到右邊則為 +i(逆時針半扭轉),從上方穿過則為 −i。

★投影的三重點:在網格的對稱運動中(例如 2 台夾著障礙物點作點對稱運動等),3 股保持在一條直線上一起旋轉, 在任何角度下 3 個交叉都同時發生。jitter="auto" 僅在這種情況下為每股加上一個固定的小偏移(最小距離 × JITTER_FRACTION,方向取黃金角)並重新計算。偏移遠小於最小距離,因此辮不變(由門檢驗確認)。

Parameters

trajectories : numpy 的 (K, T, 2) = [x, y],或 list 形式的網格路徑(各台的 (row, col) 序列)/ 規劃器的 dict(paths)。

obstacles : (M, 2) 的點,可選。每個孔以 1 個點代表(取孔內的任何點,類都不變)。

angle : 投影軸的角度 [rad]。類的判定(homotopy_class_compare)與角度無關,但字本身會變。

jitter : "auto" 或偏移的大小(0 = 不偏移,上限為最小距離的 1 %)。

Returns

dict: word(int 的一維陣列)、n_strands、n_agents、start_order / end_order(依位置順序的股編號)、times(各字母的時刻,以步長為單位)、angle、jitter(使用的偏移)、clearance(股之間的最小距離)。

Raises

ValueError:兩股到達同一點(碰撞沒有辮)、jitter=0 時出現三重點(TriplePointError)、形狀不對、NaN。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• poc_braid_homotopy_classes — py -3.11 examples/poc_braid_homotopy_classes.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同類別(braidpath)

braid_reduce · braid_artin_images · dynnikov_coordinates · dynnikov_act · braid_equivalent · homotopy_class_compare · pairwise_winding · homotopy_shortest_paths


*Provenance: braidpath.py — DRIVE 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.