locomotion op• 数据种类:points × normals × vector × scalar × scalar → table
• 调用: import fullseye as fs; fs.ledger.static_contact_force_lp(contacts, normals, com, mass, mu, gravity: 'float' = 9.81, n_facets: 'int' = 8) -> 'dict'(要直接调用实现,import locomotion; locomotion.static_contact_force_lp(contacts, normals, com, mass, mu, gravity: 'float' = 9.81, n_facets: 'int' = 8) -> 'dict';从台账取用则 opsdrive.get("static_contact_force_lp"))
• GPU:无(仅 CPU 参考实现)
线性化摩擦锥下的静态接触力分配(scipy.optimize.linprog)。
> 以下的详细说明为原文 —— 摘要与标题已翻译。
静的な接触力の配分。各接触 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.
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
• walking_ops_tour — py -3.11 examples/walking_ops_tour.py
table 作为输入)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.