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 缺少鍵、棒的組合形狀錯誤。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
• poc_diabolo_model_and_vision — py -3.11 examples/poc_diabolo_model_and_vision.py
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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.