Torsion-bar suspension URDF.

asked 2019-06-22 10:34:47 -0500

Jayadev gravatar image

updated 2019-06-22 10:40:38 -0500

Hello ROSurfers, I've been working on a simulation project. Simulating suspension is pretty straight forward, but since I'm looking for proper visualization of the suspension system, writing the URDF is getting quite a problem. "Chassis" has been fixed to the 'base_link", "Swingarm" (child) is joined to "Chassis" (parent), "RSusCyl" (child) is joined to "Swingarm" (parent), "RSusPiston" (child) is joined to "Chassis" (parent) and now I want a prismatic joint between "RSusCyl" and "RSusPiston" to complete the suspension kinematics. I'm not able to figure out a way to do this. I would greatly appreciate suggestions.

Here is how the suspension looks. image description

tf image description

Here is the URDF.

<robot name="ssav" xmlns:xacro="">

    <xacro:include filename="$(find ssav_description)/urdf/links_joints.xacro"/>
    <!-- <xacro:include filename="$(find ssav_description)/urdf/ssav_parameters.xacro"/> -->

    <m_link_box name="base_link" origin_rpy="0 0 0" origin_xyz="0 0 -0.01"
    size="0.5 0.5 0.01" mass="1024"
    ixx="170.667" ixy="0" ixz="0"
    iyy="170.667" iyz="0"

    <m_joint name="base_link_Chassis" type="revolute" axis_xyz="0 0 1" origin_rpy="0 0 0" origin_xyz="0 -0.44 0.554569"
    limit_e="1000.0" limit_l="0.0" limit_u="0.0" limit_v="0.0"
    parent="base_link" child="Chassis"/>

    <m_link_mesh name="Chassis" origin_rpy="1.57 0 0" origin_xyz="0 0 0"
    meshscale="0.001 0.001 0.001" mass="157.633"
    ixx="13.235" ixy="0" ixz="0" 
    iyy="13.235" iyz="0" 

    <m_joint name="Chassis_RSusSwingarm" type="revolute" axis_xyz="0 1 0" origin_rpy="0 0 0" origin_xyz="0.95 0 -0.175"
    limit_e="1000.0" limit_l="-0.6" limit_u="0.4" limit_v="0.5"
    parent="Chassis" child="RSusSwingarm"/>

    <m_link_mesh name="RSusSwingarm" origin_rpy="1.57 0 0" origin_xyz="-0.95 0 0.175"
    meshscale="0.01 0.01 0.01" mass="15.633"
    ixx="12.679" ixy="0" ixz="0"
    iyy="12.679" iyz="0"

    <m_joint name="RSusSwingarm_RSusCyl" type="revolute" axis_xyz="0 1 0" origin_rpy="0 0 0" origin_xyz="0.043271 0 0.078915"
    limit_e="1000.0" limit_l="-0.4" limit_u="0.4" limit_v="0.5"
    parent="RSusSwingarm" child="RSusCyl"/>

    <m_link_mesh name="RSusCyl" origin_rpy="1.57 0 0" origin_xyz="-0.993271 0 0.096085"
    meshscale="0.01 0.01 0.01" mass="1.633"
    ixx="12.679" ixy="0" ixz="0"
    iyy="12.679" iyz="0"

    <m_joint name="Chassis_RSusPiston" type="revolute" axis_xyz="0 1 0" origin_rpy="0 0 0" origin_xyz="0.786124 0 0.034958"
    limit_e="1000.0" limit_l="-0.4" limit_u="0.4" limit_v="0.5"
    parent="Chassis" child="RSusPiston"/>

    <m_link_mesh name="RSusPiston" origin_rpy="1.57 0 0" origin_xyz="-0.786124 0 -0.034958"
    meshscale="0.01 0.01 0.01" mass="1.633"
    ixx="12 ...
edit retag flag offensive close merge delete


URDF does not support closed loops unfortunately so this system cannot be described. If you're just interested in visualisations then it can be done using SDF format and gazebo.

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2019-06-22 11:42:43 -0500 )edit

I had guessed it and it's unfortunate. I hope this will be added in the future updates. Thank you, by the way, for confirming.

Jayadev gravatar image Jayadev  ( 2019-06-23 07:01:08 -0500 )edit