notes
Tools

MuJoCo パラメータを機体構造から推算する

アルミ角パイプ + 板 + ボルト結合 + 既知モータの機体で、質量・慣性・摩擦・damping・armature・電気特性を datasheet と幾何から推算し、実測補正を最小化する手順

要点#

質量・慣性は CAD から、モータ特性は datasheet から、摩擦は材料表からそれぞれ推算し、実測で補正するのは friction と forcerange の 1-2 個 に留められる。ゼロから試行錯誤する必要はない。

推算できるもの#

1. Body の質量・慣性#

  • アルミ角パイプ (20mm×20mm×1.5mm): 断面積 111 mm² × 2700 kg/m³ = 0.3 kg/m
  • アルミ板 (2A2011): 厚さ t × 面積 × 2700. 例 200×200×1.5mm → 0.16 kg/枚
  • CAD (STEP) から: FreeCAD の "Mass Properties" で m と I_xyz が直接出る. Assembly の material を Al 2011 (2700 kg/m³) にしておく
  • 電子系: LiPo 4S 5000mAh ≈ 0.5 kg / モータ M2006 100g / M3508 400g / 基板 ~100g / ケーブル・ネジ ~10-15% 加算

2. Reflected inertia (<joint armature>)#

モータ回転子の慣性 × 減速比² が joint 側に効く。これを省くと加速が実機より速すぎて不安定。

モータJ_rotor [kg·m²]減速比 Narmature = J_rotor × N²
RoboMaster M2006 P36~2e-7362.6e-4
RoboMaster M3508 P19~2e-6197.2e-4
RoboMaster GM6020 (direct)~1.5e-411.5e-4
RobStride 03~1e-598.1e-4

3. モータ電気特性 (<dcmotor>)#

  • fibril_sim_models の preset を継承: class="fibril_sim_hw_robomaster_m2006_p36_nominal" など
  • 手書きなら nominal 値:
    • M2006 P36: resistance="0.46" motorconst="0.18 0.29" (Kt Ke), 電流上限 saturation="6.5 0 0"
    • M3508 P19: resistance="0.19" motorconst="0.30 0.39", saturation="10 0 0"
  • 電圧上限は使用バッテリ. S1: 22.2V, S2: 25.2V

4. Wheel の慣性#

  • 円板近似: I_wheel = 0.5 × m × r². 例: 50g × 5cm → 6.25e-5 kg·m²
  • 密度指定でも良い: <geom density="1100"> (ゴム), 2700 (アルミハブ)
  • <geom mass="X"> で直接指定してもよい

5. Wheel 摩擦#

タイプfriction="slide roll spin"
ゴムタイヤ on 合板 (競技床)"0.9 0.005 0.0001"
ゴムタイヤ on タイル"0.7 0.005 0.0001"
オムニホイール"1.0 0.05 0.0001" (side を意図的に低く)
メカナムホイール"0.5 0.5 0.0001" (両方向グリップ)
ラジコン用スポンジタイヤ"1.2 0.01 0.0001"

6. 接触剛性 (solref)#

  • ボルト固定・アルミ板同士: default "0.02 1" で問題なし
  • ゴムホイールで跳ねる: 柔らかく "0.04 1.2"
  • 硬い接触 (競技床) を正確にしたい: "0.01 1" + timestep 0.0005 に下げる

7. Joint damping#

機構damping [N·m·s/rad]
ラジアルボールベアリング のみ0.001-0.01
モータ内部粘性 (M2006 実測)0.02-0.05
ハーモニックドライブ0.1-0.3
ウォームギア (逆駆動不可)equality 制約で表現

8. forcerange (peak torque × gear)#

モータ peak torque を forcerange に入れる. 「burst OK なら定格 × 3」を目安。

モータ定格 [Nm]peak [Nm] (burst)
M2006 P361.03.0
M3508 P193.05-8
GM60201.22.5

推算しにくい (実測が必要)#

  • ギアバックラッシュ
  • モータ Kt の電流依存
  • タイヤの速度依存ローリング抵抗
  • 経時摩耗
  • 接触の湿度依存

実用手順 (SRC 系 3-omni の例)#

  1. CAD (STEP) を FreeCAD に読み込む → material=Al 2011 で mass properties → chassis mass ≈ 6-8 kg, I_zz を control テーブルにコピペ
  2. <inertial> を link ごとに手書き: <inertial pos="cx cy cz" mass="m" fullinertia="ixx iyy izz ixy ixz iyz"/> (CAD の値をそのまま)
  3. モータは preset class を include: <include file="package://fibril_sim_models/mujoco/actuator_presets.xml"/>
  4. armature を計算して入れる: J_rotor × N² を joint に
  5. friction は表から: オムニなら "1.0 0.05 0.0001"
  6. 試走: cmd_vel = 一定値 → 定常速度を実機と比較. 合わなければ friction[0] を上下 (実測補正 1)
  7. 加速時の pitch (前傾) が実機と違う → CoG 高さ or wheel damping を微調 (実測補正 2)

参考#

最終更新:

On this page