choreonoidを自作ロボットのシミュレーションに活用しようとしています.
ロボットのモデルファイルとしてURDFモデルファイルを記述し,ロードしたところ,choreonoidのアイテムプロパティビューに表示される質量がモデルファイルに記述したリンクの質量の合計と異なることに気づきました.
問題を再現する方法
以下のURDFファイルをボディモデルの読み込みの方法で読み込みます.
このURDFファイルで質量があるのはlink1の0.3 kgのみですが,アイテムプロパティビューには1.300(1.3 kg)と表示されます.
<robot name="test_robot">
<link name="base_link"/>
<link name="link1">
<inertial>
<mass value="0.3"/>
<inertia ixx="0.2" iyy="0.2" izz="0.2" ixy="0" ixz="0" iyz="0"/>
</inertial>
<visual>
<geometry>
<box size="2 2 2"/>
</geometry>
</visual>
<collision>
<geometry>
<box size="2 2 2"/>
</geometry>
</collision>
</link>
<joint name="joint1" type="fixed">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="link1"/>
</joint>
</robot>
また,linkノードの説明にある「最も簡単なlinkノード」の数を変えるとアイテムプロパティビューの質量が1 kg変わるようです.
以下の例ではコメントを外して読み込みなおすと質量が1 kgから2 kgに変化します.
<robot name="test_robot">
<link name="base_link"/>
<!--
<link name="link1"/>
<joint name="joint1" type="fixed">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="link1"/>
</joint>
-->
</robot>
暫定的な処置
名前だけを持つノードを編集してロボットの運動にはほとんど影響を与えないであろう小さな質量(1 mg)を設定してみています.
(0 kgに設定した場合はエラーが出て読み込みに失敗しました.)
相談したいこと
- アイテムプロパティビューに表示される質量はURDFファイルで設定した質量と異なりますが,シミュレーションの計算で使われるモデルもURDFファイルの記述とは異なるものになってしまっているのでしょうか?
- (URDFファイルと計算に使われるモデルが異なる場合)シミュレーションで妥当な結果を得るために他にもすべきことはありますか?(慣性テンソルに小さな値を設定するなど)
なお,私はwindows11を使用しておりwslのubuntu 22.04.4 LTSにchoreonoid 2.2をインストールして使用しています.