Lite3 and X30 feet declare a singular inertia tensor on the links that take every ground contact

オープン
#12 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
領域
robotics

調査の方向性

Lite3/urdf/Lite3.urdf と X30/urdf/X30.urdf の指定された箇所にある足のリンクから始め、衝突ジオメトリと慣性の宣言を Lite3.xml および X30.xml と比較します。dont_collapse="true" の足首ジョイントと LIDAR_* リンクを確認します。URDF と MJCF の記述が一貫して有効な慣性を使用し、参照されている URDF preflight に合格すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

All four feet on both quadrupeds declare a mass and a collision sphere, and an
inertia tensor that no rigid body can have.

Lite3 (Lite3/urdf/Lite3.urdf:121, and FR/HL/HR at 224/326/428):

<link name="FL_FOOT">
  <collision><geometry><sphere radius="0.022"/></geometry></collision>
  <inertial><mass value="0.02"/>
    <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0"/></inertial>
</link>

A solid sphere of that radius at that mass is

I = (2/5) m r^2 = 0.4 * 0.02 * 0.022^2 = 3.872e-06 kg m^2

The declared tensor is all zeros -- eigenvalues (0, 0, 0), not positive
definite.

X30 (X30/urdf/X30.urdf:129, +237/346/454): mass 0.06, sphere radius 0.036,
diaginertia = 1e-12. The solid-sphere value is

0.4 * 0.06 * 0.036^2 = 3.1104e-05 kg m^2

so the declared value is 3.11e7 times too small. The four LIDAR_* links
carry mass 1e-05 with an all-zero tensor as well.

The correct values are computable from the links' own collision geometry --
the two numbers above -- so no CAD lookup is needed if the feet really are
approximately solid spheres.

One caveat worth stating, because it decides whether this matters. A
zero-inertia body on a fixed joint is harmless if the consumer merges it into
its parent. But the joint immediately below carries dont_collapse="true":

<joint name="FL_Ankle" type="fixed" dont_collapse="true">

which is an explicit instruction to importers not to merge it. So the model
asks for the foot to be kept as an independent body and gives it a singular
inertia. Whichever half is intended, the two disagree, and consumers differ on
what they do about it -- MuJoCo's compiler and Drake reject a non-PD tensor,
while some importers silently substitute a bounding-volume inertia and others
integrate it as-is.

Also worth noting the MJCF siblings repeat the same values (Lite3.xml
diaginertia="0.0 0.0 0.0", X30.xml 1e-12), so this is not a URDF-only
transcription slip and fixing one file would leave the other wrong. I checked
that specifically because I had expected the MJCF to be the recovery source.

Found while running a URDF preflight over published quadruped descriptions;
the checks are open source, so the arithmetic above is reproducible on your side
without adopting anything of ours.

主要言語
言語のデータがありません
スター
77
フォーク
14
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

似ている issue

Robotics の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。