raisimTech / raisimLib

Visit www.raisim.com
http://www.raisim.com
Other
341 stars 91 forks source link

Anymal's y-axis movement limit method #349

Open jangmingyu opened 2 years ago

jangmingyu commented 2 years ago

Hello, I am trying to limit y by connecting the base of anymal to the world and again connecting the base to base_inertia to limit movement on the y-axis when learning anymal. The world and base are currently connected as Fixed, but we plan to connect them with prismatic in the future. Below is my current URDF.

[problem]

When I try to train through that URDF, I get an error. If you have any small comments, we would appreciate it.

<?xml version="1.0" encoding="utf-8"?>
<!-- =================================================================================== -->
<!--   Copyright 2019 ANYbotics, https://www.anybotics.com                               -->
<!-- =================================================================================== -->
<!-- This file contains the description of the ANYmal B robot. -->
<?xml version="1.0" ?>
<robot name="anymal">

    <!--
      Material colors
    -->

    <!-- Basic colors -->
    <material name="black">
        <color rgba="0.0 0.0 0.0 1.0"/>
    </material>
    <material name="blue">
        <color rgba="0.0 0.0 0.8 1.0"/>
    </material>
    <material name="green">
        <color rgba="0.0 0.8 0.0 1.0"/>
    </material>
    <material name="grey">
        <color rgba="0.2 0.2 0.2 1.0"/>
    </material>
    <material name="light_grey">
        <color rgba="0.4 0.4 0.4 1.0"/>
    </material>
    <material name="red">
        <color rgba="0.8 0.0 0.0 1.0"/>
    </material>
    <material name="white">
        <color rgba="1.0 1.0 1.0 1.0"/>
    </material>

    <!-- Material for the visual primitives -->
    <material name="anymal_material">
        <color rgba="0.7 0.7 0.7 1.0"/>
    </material>

    <link name="world">  </link>
    <link name="base">
        <visual>
            <geometry>
                <mesh filename="../meshes/anymal_base.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>     
    </link>

    <joint name="anymal_joint_base" type="fixed">
        <parent link="world"/>
        <child link="base"/>
        <origin rpy="0 0 0" xyz="0 0 0"/>
    </joint>

    <!-- Fixed joint to add dummy inertia link -->
    <joint name="base_to_base_inertia" type="fixed">
        <parent link="base"/>
        <child link="base_inertia"/>
        <origin rpy="0 0 0" xyz="0 0 0"/>
    </joint>

    <!-- Dummy inertia link, because KDL cannot have inertia on the base link -->
    <link name="base_inertia">
        <inertial>
            <origin rpy="0 0 0" xyz="-0.001960558279 -0.001413217745 0.050207125344"/>
            <mass value="16.793507758"/>
            <inertia ixx="0.217391101503" ixy="-0.00132873239126" ixz="-0.00228200226173" iyy="0.639432546734" iyz="-0.00138078263145" izz="0.62414077654"/>
        </inertial>
    </link>

    <!--
      Left-Fore leg
    -->

    <!-- high link -->
    <link name="LF_HIP">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_hip_l.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="0.064516258147 -0.003787101702 -0.000152184388"/>
            <mass value="1.42462064"/>
            <inertia ixx="0.00243023349564" ixy="-1.53023971e-05" ixz="-2.1819095354e-05" iyy="0.00230257239103" iyz="2.6473021273e-05" izz="0.0019806759227"/>
        </inertial>
    </link>
    <!-- Hip joint -->
    <joint name="LF_HAA" type="revolute">
        <parent link="base"/>
        <child link="LF_HIP"/>
        <origin xyz="0.277 0.116 0.0"/>
        <axis xyz="1 0 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Thigh link -->
    <link name="LF_THIGH">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_thigh_l.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <!-- KFE actuator -->
            <origin rpy="1.57079632679 0 0" xyz="0.0 0.07205 -0.25"/>
            <geometry>
                <cylinder length="0.11" radius="0.06"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="-0.003897968082 0.054226618537 -0.214583373795"/>
            <mass value="1.634976467"/>
            <inertia ixx="0.0120367944369" ixy="6.762065206e-05" ixz="0.000287806340448" iyy="0.0120643637939" iyz="-0.00140610131218" izz="0.00249422574881"/>
        </inertial>
    </link>
    <!-- Thigh joint -->
    <joint name="LF_HFE" type="revolute">
        <parent link="LF_HIP"/>
        <child link="LF_THIGH"/>
        <origin xyz="0.0635                    0.041                    0.0"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Shank link -->
    <link name="LF_SHANK">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_shank_l.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="0.030816858139 -0.004617229294 0.000893125713"/>
            <mass value="0.207204302"/>
            <inertia ixx="0.0002104880248" ixy="-5.6750980345e-05" ixz="1.0127699391e-05" iyy="0.000676270210023" iyz="-8.22869024e-07" izz="0.000545032674924"/>
        </inertial>
    </link>
    <!-- Shank joint -->
    <joint name="LF_KFE" type="revolute">
        <parent link="LF_THIGH"/>
        <child link="LF_SHANK"/>
        <origin xyz="0.0 0.109 -0.25"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>
    <!-- Shank to Adapter joint -->
    <joint name="LF_SHANK_TO_ADAPTER" type="fixed">
        <parent link="LF_SHANK"/>
        <child link="LF_ADAPTER"/>
        <origin rpy="0.0 0.0 0.0" xyz="0.1 -0.02 0.0"/>
    </joint>

    <!-- Adapter link -->
    <link name="LF_ADAPTER">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0.032"/>
            <geometry>
                <mesh filename="../meshes/anymal_foot.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <origin rpy="0 0 0" xyz="0 0 -0.160625"/>
            <geometry>
                <cylinder length="0.22125" radius="0.015"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="-8.66e-10 -1.472e-09 -0.244345749188"/>
            <mass value="0.140170767"/>
            <inertia ixx="0.00159938741862" ixy="-9.32e-13" ixz="1.039e-11" iyy="0.00159938741932" iyz="1.7563e-11" izz="5.4423177329e-05"/>
        </inertial>
    </link>
    <!-- Adapter to Foot joint -->
    <joint name="LF_ADAPTER_TO_FOOT" type="fixed">
        <parent link="LF_ADAPTER"/>
        <child link="LF_FOOT"/>
        <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 -0.32125"/>
    </joint>

    <!-- Foot link -->
    <link name="LF_FOOT">
        <collision>
            <origin xyz="0 0 0.02325"/>
            <geometry>
                <sphere radius="0.035"/>
            </geometry>
        </collision>
    </link>

    <!--
      Right-Fore leg
    -->

    <!-- Hip link -->
    <link name="RF_HIP">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_hip_r.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="0.064516258147 0.003787101702 -0.000152184388"/>
            <mass value="1.42462064"/>
            <inertia ixx="0.00243023349564" ixy="1.53023971e-05" ixz="-2.1819095354e-05" iyy="0.00230257239103" iyz="-2.6473021273e-05" izz="0.0019806759227"/>
        </inertial>
    </link>
    <!-- Hip joint -->
    <joint name="RF_HAA" type="revolute">
        <parent link="base"/>
        <child link="RF_HIP"/>
        <origin xyz="0.277 -0.116 0.0"/>
        <axis xyz="1 0 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Thigh link -->
    <link name="RF_THIGH">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_thigh_r.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <!-- KFE actuator -->
            <origin rpy="1.57079632679 0 0" xyz="0.0 -0.07205 -0.25"/>
            <geometry>
                <cylinder length="0.11" radius="0.06"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="-0.003897968082 -0.054226618537 -0.214583373795"/>
            <mass value="1.634976467"/>
            <inertia ixx="0.0120367944369" ixy="-6.762065206e-05" ixz="0.000287806340448" iyy="0.0120643637939" iyz="0.00140610131218" izz="0.00249422574881"/>
        </inertial>
    </link>
    <!-- Thigh joint -->
    <joint name="RF_HFE" type="revolute">
        <parent link="RF_HIP"/>
        <child link="RF_THIGH"/>
        <origin xyz="0.0635                    -0.041                    0.0"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Shank link -->
    <link name="RF_SHANK">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_shank_r.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="0.030816858139 0.004617229294 0.000893125713"/>
            <mass value="0.207204302"/>
            <inertia ixx="0.0002104880248" ixy="5.6750980345e-05" ixz="1.0127699391e-05" iyy="0.000676270210023" iyz="8.22869024e-07" izz="0.000545032674924"/>
        </inertial>
    </link>
    <!-- Shank joint -->
    <joint name="RF_KFE" type="revolute">
        <parent link="RF_THIGH"/>
        <child link="RF_SHANK"/>
        <origin xyz="0.0 -0.109 -0.25"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>
    <!-- Shank to Adapter joint -->
    <joint name="RF_SHANK_TO_ADAPTER" type="fixed">
        <parent link="RF_SHANK"/>
        <child link="RF_ADAPTER"/>
        <origin rpy="-0.0 0.0 -0.0" xyz="0.1 0.02 0.0"/>
    </joint>

    <!-- Adapter link -->
    <link name="RF_ADAPTER">
        <visual>
            <origin rpy="0 0 0.0" xyz="0 0 0.032"/>
            <geometry>
                <mesh filename="../meshes/anymal_foot.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <origin rpy="0 0 0" xyz="0 0 -0.160625"/>
            <geometry>
                <cylinder length="0.22125" radius="0.015"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="-8.66e-10 -1.472e-09 -0.244345749188"/>
            <mass value="0.140170767"/>
            <inertia ixx="0.00159938741862" ixy="-9.32e-13" ixz="1.039e-11" iyy="0.00159938741932" iyz="1.7563e-11" izz="5.4423177329e-05"/>
        </inertial>
    </link>
    <!-- Adapter to Foot joint -->
    <joint name="RF_ADAPTER_TO_FOOT" type="fixed">
        <parent link="RF_ADAPTER"/>
        <child link="RF_FOOT"/>
        <origin rpy="-0.0 0.0 -0.0" xyz="0.0 -0.0 -0.32125"/>
    </joint>

    <!-- Foot link -->
    <link name="RF_FOOT">
        <collision>
            <origin xyz="0 0 0.02325"/>
            <geometry>
                <sphere radius="0.035"/>
            </geometry>
        </collision>
    </link>

    <!--
      Left-Hind leg
    -->

    <!-- Hip link -->
    <link name="LH_HIP">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_hip_r.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="-0.064516258147 -0.003787101702 -0.000152184388"/>
            <mass value="1.42462064"/>
            <inertia ixx="0.00243023349564" ixy="1.53023971e-05" ixz="2.1819095354e-05" iyy="0.00230257239103" iyz="2.6473021273e-05" izz="0.0019806759227"/>
        </inertial>
    </link>
    <!-- Hip joint -->
    <joint name="LH_HAA" type="revolute">
        <parent link="base"/>
        <child link="LH_HIP"/>
        <origin xyz="-0.277 0.116 0.0"/>
        <axis xyz="1 0 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Thigh link -->
    <link name="LH_THIGH">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_thigh_r.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <!-- KFE actuator -->
            <origin rpy="1.57079632679 0 0" xyz="0.0 0.07205 -0.25"/>
            <geometry>
                <cylinder length="0.11" radius="0.06"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="0.003897968082 0.054226618537 -0.214583373795"/>
            <mass value="1.634976467"/>
            <inertia ixx="0.0120367944369" ixy="-6.762065206e-05" ixz="-0.000287806340448" iyy="0.0120643637939" iyz="-0.00140610131218" izz="0.00249422574881"/>
        </inertial>
    </link>
    <!-- Thigh joint -->
    <joint name="LH_HFE" type="revolute">
        <parent link="LH_HIP"/>
        <child link="LH_THIGH"/>
        <origin xyz="-0.0635                    0.041                    0.0"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Shank link -->
    <link name="LH_SHANK">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_shank_r.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="-0.030816858139 -0.004617229294 0.000893125713"/>
            <mass value="0.207204302"/>
            <inertia ixx="0.0002104880248" ixy="5.6750980345e-05" ixz="-1.0127699391e-05" iyy="0.000676270210023" iyz="-8.22869024e-07" izz="0.000545032674924"/>
        </inertial>
    </link>
    <!-- Shank joint -->
    <joint name="LH_KFE" type="revolute">
        <parent link="LH_THIGH"/>
        <child link="LH_SHANK"/>
        <origin xyz="-0.0 0.109 -0.25"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>
    <!-- Shank to Adapter joint -->
    <joint name="LH_SHANK_TO_ADAPTER" type="fixed">
        <parent link="LH_SHANK"/>
        <child link="LH_ADAPTER"/>
        <origin rpy="0.0 -0.0 -0.0" xyz="-0.1 -0.02 0.0"/>
    </joint>

    <!-- Adapter link -->
    <link name="LH_ADAPTER">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0.032"/>
            <geometry>
                <mesh filename="../meshes/anymal_foot.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <origin rpy="0 0 0" xyz="0 0 -0.160625"/>
            <geometry>
                <cylinder length="0.22125" radius="0.015"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="-8.66e-10 -1.472e-09 -0.244345749188"/>
            <mass value="0.140170767"/>
            <inertia ixx="0.00159938741862" ixy="-9.32e-13" ixz="1.039e-11" iyy="0.00159938741932" iyz="1.7563e-11" izz="5.4423177329e-05"/>
        </inertial>
    </link>
    <!-- Adapter to Foot joint -->
    <joint name="LH_ADAPTER_TO_FOOT" type="fixed">
        <parent link="LH_ADAPTER"/>
        <child link="LH_FOOT"/>
        <origin rpy="0.0 -0.0 -0.0" xyz="-0.0 0.0 -0.32125"/>
    </joint>

    <!-- Foot link -->
    <link name="LH_FOOT">
        <collision>
            <origin xyz="0 0 0.02325"/>
            <geometry>
                <sphere radius="0.035"/>
            </geometry>
        </collision>
    </link>

    <!--
      Right-Hind leg
    -->

    <!-- Hip link -->
    <link name="RH_HIP">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_hip_l.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="-0.064516258147 0.003787101702 -0.000152184388"/>
            <mass value="1.42462064"/>
            <inertia ixx="0.00243023349564" ixy="-1.53023971e-05" ixz="2.1819095354e-05" iyy="0.00230257239103" iyz="-2.6473021273e-05" izz="0.0019806759227"/>
        </inertial>
    </link>
    <!-- Hip joint -->
    <joint name="RH_HAA" type="revolute">
        <parent link="base"/>
        <child link="RH_HIP"/>
        <origin xyz="-0.277 -0.116 0.0"/>
        <axis xyz="1 0 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Thigh link -->
    <link name="RH_THIGH">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_thigh_l.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <!-- KFE actuator -->
            <origin rpy="1.57079632679 0 0" xyz="0.0 -0.07205 -0.25"/>
            <geometry>
                <cylinder length="0.11" radius="0.06"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="0.003897968082 -0.054226618537 -0.214583373795"/>
            <mass value="1.634976467"/>
            <inertia ixx="0.0120367944369" ixy="6.762065206e-05" ixz="-0.000287806340448" iyy="0.0120643637939" iyz="0.00140610131218" izz="0.00249422574881"/>
        </inertial>
    </link>
    <!-- Thigh joint -->
    <joint name="RH_HFE" type="revolute">
        <parent link="RH_HIP"/>
        <child link="RH_THIGH"/>
        <origin xyz="-0.0635                    -0.041                    0.0"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>

    <!-- Shank link -->
    <link name="RH_SHANK">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0"/>
            <geometry>
                <mesh filename="../meshes/anymal_shank_l.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <inertial>
            <origin rpy="0 0 0" xyz="-0.030816858139 0.004617229294 0.000893125713"/>
            <mass value="0.207204302"/>
            <inertia ixx="0.0002104880248" ixy="-5.6750980345e-05" ixz="-1.0127699391e-05" iyy="0.000676270210023" iyz="8.22869024e-07" izz="0.000545032674924"/>
        </inertial>
    </link>
    <!-- Shank joint -->
    <joint name="RH_KFE" type="revolute">
        <parent link="RH_THIGH"/>
        <child link="RH_SHANK"/>
        <origin xyz="-0.0 -0.109 -0.25"/>
        <axis xyz="0 1 0"/>
        <limit effort="80" lower="-6.28" upper="6.28" velocity="15"/>
        <dynamics damping="0.0" friction="0.0"/>
    </joint>
    <!-- Shank to Adapter joint -->
    <joint name="RH_SHANK_TO_ADAPTER" type="fixed">
        <parent link="RH_SHANK"/>
        <child link="RH_ADAPTER"/>
        <origin rpy="-0.0 -0.0 0.0" xyz="-0.1 0.02 0.0"/>
    </joint>

    <!-- Adapter link -->
    <link name="RH_ADAPTER">
        <visual>
            <origin rpy="0 0 -3.14159265359" xyz="0 0 0.032"/>
            <geometry>
                <mesh filename="../meshes/anymal_foot.dae" scale="0.001 0.001 0.001"/>
            </geometry>
        </visual>
        <collision>
            <origin rpy="0 0 0" xyz="0 0 -0.160625"/>
            <geometry>
                <cylinder length="0.22125" radius="0.015"/>
            </geometry>
        </collision>
        <inertial>
            <origin rpy="0 0 0" xyz="-8.66e-10 -1.472e-09 -0.244345749188"/>
            <mass value="0.140170767"/>
            <inertia ixx="0.00159938741862" ixy="-9.32e-13" ixz="1.039e-11" iyy="0.00159938741932" iyz="1.7563e-11" izz="5.4423177329e-05"/>
        </inertial>
    </link>
    <!-- Adapter to Foot joint -->
    <joint name="RH_ADAPTER_TO_FOOT" type="fixed">
        <parent link="RH_ADAPTER"/>
        <child link="RH_FOOT"/>
        <origin rpy="-0.0 -0.0 0.0" xyz="-0.0 -0.0 -0.32125"/>
    </joint>

    <!-- Foot link -->
    <link name="RH_FOOT">
        <collision>
            <origin xyz="0 0 0.02325"/>
            <geometry>
                <sphere radius="0.035"/>
            </geometry>
        </collision>
    </link>
</robot>
jhwangbo commented 2 years ago

Can you simulate it without training? You have to first check if the URDF is working

jangmingyu commented 1 year ago

Thanks for your reply. Again, sorry for the late reply. I've been proceeding as you said, but I'm having more difficulties than I thought, so I'm going to proceed in a different way. So I would like to ask if there is any possibility that the contents will come out differently.

1. Install linear rails on both sides of "animal_model", fix them with "animal_model", and then move the linear rails according to the movement of "animal_model" to implement movement in the z-axis direction.

2. In order to proceed with the contents of No. 1, it seems that the linear rail must operate passively with "anymal_model" operation without special control input. However, since raisim knows that each joint has a torque value, it knows that it implements linear motion by applying separate control torque values ​​to the linear rails. But I want to implement linear motion with the power of "anymal_model". So, I searched for data and found that if I set the "Effort" of the linear rail joint to 0 in URDF, the linear rail is passively acted upon by the motion or force of "anymal_model".

I would like to know if the above method solves the problem and if there is a passive joint implementation in raism. Any additional comments to help with this would be greatly appreciated.