static_contact_force_lp — DRIVE locomotion op

• Datenarten: points × normals × vector × scalar × scalar → table

• Aufruf: import fullseye as fs; fs.ledger.static_contact_force_lp(contacts, normals, com, mass, mu, gravity: 'float' = 9.81, n_facets: 'int' = 8) -> 'dict' (die Implementierung direkt: import locomotion; locomotion.static_contact_force_lp(contacts, normals, com, mass, mu, gravity: 'float' = 9.81, n_facets: 'int' = 8) -> 'dict'; aus dem Register: opsdrive.get("static_contact_force_lp"))

• GPU: nein (nur CPU-Referenzimplementierung)

Verwendung

Statische Kontaktkraftverteilung unter linearisierten Reibkegeln (scipy.optimize.linprog).

> Die ausführliche Beschreibung unten ist der Originaltext — Zusammenfassung und Überschriften sind übersetzt.

静的な接触力の配分。各接触 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.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• walking_ops_tour — py -3.11 examples/walking_ops_tour.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

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

Gleiche Kategorie (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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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