obstacle_fit_doublet — DRIVE swarmflow op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.obstacle_fit_doublet(field, speed=None, upstream_only: 'bool' = False, exclude_margin: 'float' = 1.25, min_explained: 'float' = 0.5, min_radius=None) -> 'dict' (implementation को सीधे call करना हो तो import swarmflow; swarmflow.obstacle_fit_doublet(field, speed=None, upstream_only: 'bool' = False, exclude_margin: 'float' = 1.25, min_explained: 'float' = 0.5, min_radius=None) -> 'dict', registry से लेना हो तो opsdrive.get("obstacle_fit_doublet"))

उपयोग

velocity field पर cylinder के चारों ओर potential flow u − i v = U (1 − R²/(z − z_c)²) fit करता है (implementation 2, 2-D nonlinear least squares)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

未知数は (x_c, y_c, R², U)。出発点は 2 つ: stagnation_from_centerline と、格子の節点を中心の候補にした粗い探索(U を固定すると模型は R² について 1 次なので閉形式で解ける)。説明できる割合の大きい方を採る。円の exclude_margin 倍より内側の格子は使わない(格子へ移す核が壁をまたいで速さを均すため)—— 推定し直して 3 回回す。upstream_only なら衝突点より上流(x < x_c − R)の格子だけで当てはめる(「当たる前に」分かるか)。

判定: 一様流だけの模型(u, v が定数)の残差 RSS₀ に対して、円柱の模型で減った割合 1 − RSS₁/RSS₀(乱れのうち円柱で説明できる割合)が min_explained 以上、半径が min_radius(既定 = 格子の間隔 2 つ)以上、中心が場の中 —— の 3 つで detected。否定の判定(障害物なし)はこの割合が小さいことで出る。

★半径の下限は解像の限界: swarm_field_from_tracks の格子は個体の間隔 s ごとなので、既定では R < 2s の障害物を「ある」と言わない。拒否が正当なことは実測で確かめた(一様に撒いた粒子、R = 0.6 m: R/s ≈ 5 で中心・半径とも 2 % 以内、R/s ≈ 2.5 で 5 % 以内、R/s ≈ 1.2 で半径が 48 % 小さく出る)。

Returns:

dict: center・radius・speed・stagnation・explained・detected・n_used・rms_residual

(m/s)・rms_null(m/s)。

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_swarm_obstacle_from_flow — py -3.11 examples/poc_swarm_obstacle_from_flow.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

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

इसी category के (swarmflow)

sph_kernel · sph_density_pressure · swarm_simulate · swarm_render_overhead · swarm_field_from_tracks · swarm_field_from_piv · potential_flow_cylinder · velocity_deficit_map


*Provenance: swarmflow.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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