Robot model scaling (URDF format)

Hi everyone,

I would like to scale up the robot by for example 100 (from m to cm)? I tried to scale up the mesh and the link length in URDF but the robot doesn’t behave as expected. Can anyone give a hint to scale up the robot properly? Thanks alot!

Hi @tran.nguyenle,

Can you provide some more info on how exactly did you try to scale? Did you scale and changed masses and inertia tensors to be in grams instead of kg? Did you also scale the gravity to be 980 cm/s^2 instead of 9.8 m/s^2?

Hi @vmakoviychuk, thanks for your quick reply. I am using the franka_panda.udrf provided in the Isaac gym package. For example, I scaled the meshes and the link length by 20 as shown below. In this URDF file, I didn’t find any mass or inertia tensor tag to scale. Where should I scale the masses and inertia tensors btw? Also, I don’t want to scale the gravity just the robot itself since I also include other objects in the env. Is it possible to do so?

<link name="panda_link1">
        <mesh filename="package://franka_description/meshes/visual/link1.dae" scale="20 20 20"/>
        <mesh filename="package://franka_description/meshes/collision/link1.obj" scale="20 20 20"/>
  <joint name="panda_joint1" type="revolute">
    <safety_controller k_position="100.0" k_velocity="40.0" soft_lower_limit="-2.8973" soft_upper_limit="2.8973"/>
    <origin rpy="0 0 0" xyz="0 0 6.66"/>
    <parent link="panda_link0"/>
    <child link="panda_link1"/>
    <axis xyz="0 0 1"/>
    <dynamics damping="200.0"/>
    <limit effort="87" lower="-2.8973" upper="2.8973" velocity="2.1750"/>

Hi @tran.nguyenle,

Your URDF doesn’t have any mass and inertia information it means that the density specified in asset_options would be used to calculate them. The default value is 1000 kg/m^3, but if you switched to g/cm^3 the default value would be 1000 larger than it should be, it should be 1 g/cm^3. You can also specify density per link in the URDF file. Try this value to start with and don’t forget about setting gravity 980 cm/s^2 as well.

But I don’t think it’ll work well with scaling some objects in the scene, and not scaling other. Physics would be inconsistent, all the objects need to use the same units.

1 Like