diabolo_dynamics_step — DRIVE diabolo op

• データ種: table × matrix × matrix × scalar × table → table

• 呼び出し: import fullseye as fs; fs.ledger.diabolo_dynamics_step(state: 'dict', sticks_prev, sticks_now, dt: 'float', params: 'dict', *, plane_rule: 'str' = 'paper', rotation: 'str' = 'paper', flying_rule: 'str' = 'paper') -> 'dict' (実装を直接呼ぶなら import diabolo; diabolo.diabolo_dynamics_step(state: 'dict', sticks_prev, sticks_now, dt: 'float', params: 'dict', *, plane_rule: 'str' = 'paper', rotation: 'str' = 'paper', flying_rule: 'str' = 'paper') -> 'dict'、台帳から引くなら opsdrive.get("diabolo_dynamics_step"))

使い方

論文の解析模型を 1 ステップ進める(ディアボロ = 質点 + 補助の回転楕円体 + 重力)。

state = {"x", "v", "omega", "mode"}(mode は DIABOLO_STATES)。棒の組 = matrix (2, 3)。手順(本文の 1–4):

前進 Euler で x += v dt、v += g dt → 新しい楕円体 → 状態遷移 → 糸に乗っていて外に出たら最近点へ戻し、v_pull(変位/dt の内向き法線成分)を v_origin + v_edge で頭打ち(式 3)、張りつめの近く(間隔 > l − 5 cm)では面の規則(式 4)、外向きの法線速度を消す(本文は明記せず、公開実装に合わせた)→ 回転(式 2: ω_t = ω_{t−1} + μ Δ_string、Δ_string = d_R の増分、μ = μ_acc / μ_dec)。減衰係数は全部 1(公開実装の既定)。

選べる形(公開実装との比較用): plane_rule = "paper"(式 4: n_plane = x̂ × (x_L − x_R) の向きだけ残す)/ "code"(前後の成分だけ消す); rotation = "paper"(式 2、刻みに依らない望遠鏡和)/ "code"(Δω = k (Δd_R/dt − ω r)、k = 0.01。刻みを半分にすると ω が 2 倍になる); flying_rule = "paper"(図: s > c_F)/ "code"(棒を結ぶ面より上)。

返り {"x", "v", "omega", "mode", "s", "pulled", "v_pull_raw"}。Raises ValueError: 選択肢の綴り、知らない mode、dt ≤ 0、state の鍵の欠け、棒の組の形。

参考(サンプルデータ・文献)

• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。

• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。

• アルゴリズムの正典(著者・年)と用途は上記ファミリ使い方ガイドに記載。

実行できる例(この op を実際に呼ぶ検証済みサンプル)

• poc_diabolo_model_and_vision — py -3.11 examples/poc_diabolo_model_and_vision.py

型が繋がる次の op(table を入力に取れる)

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

同カテゴリ(diabolo)

diabolo_params · diabolo_spheroid · spheroid_closest · diabolo_simulate · diabolo_state_sequence · diabolo_throw_catch_truth · string_tension_static · string_tension_from_sag


*Provenance: diabolo.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。*

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