notes
ProjectUrdf dynamics

サイドカーファイル仕様案 (actuators.yaml)

URDF に書けない物理特性 (アクチュエータ・摩擦・ばね) を URDF の joint 名をキーに持つ YAML の設計

要点#

URDF の joint 名を結合キーに、アクチュエータ・摩擦・ばね模型と各値の由来 (provenance) を持つ YAML。物理特性のみを持ち、配線・運用設定 (base.yaml) とは責務を分ける。

構造#

version: 1
robot: <URDF の robot name と一致。lint で検査>

joints:
  <URDF joint 名>:
    actuator:
      motor: <型番>
      torque_constant: <Nm/A>
      rotor_inertia: <kg m^2、モータ軸換算>
      direction: <1 | -1、実機回転方向と URDF 軸符号の対応>
    encoder:
      counts_per_rev: <逓倍後 counts。データシート由来>
      mounted_on: motor | joint    # 適用する比とバックラッシュ可視性が変わる
    transmission:
      stages:                      # モータ → 出力の変換段を順に列挙
        - { type: planetary, ratio: <比> }
        - { type: belt, ratio: <比> }
        - { type: ballscrew, lead: <m/rev> }  # 直動変換段。URDF が prismatic なら必須 (lint)
      efficiency: <0-1>
    calibration_scale: <≈1.0。実測合わせの残差。provenance 必須、1 から乖離で lint warn>
    friction:
      model: coulomb_viscous
      coulomb_pos: <Nm>
      coulomb_neg: <Nm>
      viscous: <Nm s/rad>
    spring:            # 任意。ガススプリング・カウンタバランス
      model: linear
      k: <N/m>
      preload: <N>
    provenance:
      source: datasheet | identified | estimated
      date: <YYYY-MM-DD>
      log: <同定に使ったログのパス>
      nrmse: <交差検証の一致率>
      model_hash: <同定時のモデル git hash>

standalone_axes:       # URDF に属さない軸 (ベンチ単体同定の置き場)
  <軸名>: (joints と同じ構造)

設計判断#

  1. 結合キーは URDF joint 名。lint が「サイドカーにあるが URDF に無い」 「モータ未定義の関節」を機械検査できる
  2. base.yaml との分離基準: 物理特性 (不変・同定/データシート由来) → サイドカー。配線・運用 (CAN ID、運用リミット、ゲイン) → base.yaml
  3. provenance を値とセットで保持。初期値は datasheet、同定が上書き。 「この値いつの?」に常に答えられる
  4. standalone_axes は軸単体同定モードの結果置き場。URDF 化されたら joints 側へキー移動するだけで引き継げる
  5. 単位は SI 固定 (規約で明記)。スキーマは JSON Schema で repo に置き fibril_config_gen check の検査対象に含める
  6. エンコーダゲインは導出量。counts_per_rev × 変換段の積 × calibration_scale から生成器が計算してファームに渡す。 一体ゲインとして手書きすると減速比が動力学側 (反映慣性 J·N²) と 二重管理になるため、要素分解を正とする。減速器 type は比率計算には 不要だが、効率非対称・バックドライブ可否・バックラッシュ見込みの 判断材料として記録する

内容的には MJCF がネイティブに書ける情報の URDF 世界への後付けに相当する。

関連#

最終更新:

On this page