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