static_contact_force_lp — DRIVE locomotion op

• Data kinds: points × normals × vector × scalar × scalar → table

• Call: import fullseye as fs; fs.ledger.static_contact_force_lp(contacts, normals, com, mass, mu, gravity: 'float' = 9.81, n_facets: 'int' = 8) -> 'dict' (implementation को सीधे call करना हो तो import locomotion; locomotion.static_contact_force_lp(contacts, normals, com, mass, mu, gravity: 'float' = 9.81, n_facets: 'int' = 8) -> 'dict', registry से लेना हो तो opsdrive.get("static_contact_force_lp"))

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

Linearised friction cones के अंतर्गत static contact-force वितरण (scipy.optimize.linprog)।

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

静的な接触力の配分。各接触 i の力を、摩擦錐を n_facets 角の多角錐で内側から近似した生成ベクトル g_ik = n_i + μ·t_ik(t_ik は接平面の単位ベクトルを等角に回したもの)の非負結合 f_i = Σ_k λ_ik g_ik で表し、静的な釣り合い

Σ f_i + m·g = 0, Σ (p_i − c) × f_i = 0 (g = (0, 0, −gravity))

を満たす λ ≥ 0 を線形計画で探す。目的は 法線力の最大値の最小化(荷重を均す)に、接線力の L1 和を 1e-3 の重みで足したもの(足どうしで押し合う内力 = 解の不定さを消す)。

• 多角錐は錐の内側(頂点が錐面の上)なので、ここで実行可能なら真の摩擦錐でも実行可能。逆は n_facets が小さいと成り立たない(縁の近くは保守的)。

• 平地(法線がすべて +z)では、μ > 0 なら「解がある ⇔ COM の地面への射影が支持多角形の内側」(接線力は z = 0 の点で水平な軸のまわりのモーメントを作れない)。com_support_margin と突き合わせる門が tests にある。

• contacts (N, 3) [m]、normals (N, 3)(正規化する。外向き = 地面から足へ)、com (3,) [m]、mass [kg] > 0、mu ≥ 0(0 なら摩擦なし = 法線だけ)。

• 返り値 {"feasible", "forces" (N, 3) [N] か None, "normal" (N,), "tangential" (N,), "max_normal", "residual"(釣り合いの残差 [N]、[N·m]), "status", "message"}。解が無ければ feasible = False、力は None。

空の入力(contacts が 0 要素)は ValueError で拒否する。

English: friction cones are replaced by inscribed n_facets-sided pyramids, so a feasible answer here is feasible for the true cone. The LP minimises the largest normal force plus 1e-3 x the L1 tangential force. On flat ground with mu > 0, feasibility is equivalent to the COM projection lying inside the support polygon.

संदर्भ (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 करते हैं)

• walking_ops_tour — py -3.11 examples/walking_ops_tour.py

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

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

इसी category के (locomotion)

contact_points · com_from_silhouette · support_polygon · com_support_margin · gait_phase · support_line_margin · lipm_capture_point · capture_margin


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

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