0

I have imported a urdf model from Solidworks using SW2URDF plugin. The model loads correctly on Gazebo but looks weird on RVIZ, even while trying to teleoperate the robot, the revolute joint of the manipulator moves instead of the wheels. Is there anyone who has faced this issue before or has a solution to it? Here is how it looks on Gazebo  Model on Gazebo

Here is how it looks on RVIZ Model on RVIZ

Here is the URDF file of the Model:

<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com) 
     Commit Version: 1.6.0-1-g15f4949  Build Version: 1.6.7594.29634
     For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot
  name="final_assembly3">
  <link name="world" />
  <joint name="fixed" type="fixed">
     <parent link="world" />
     <child link="base_link" />
  </joint>

  <link
    name="base_link">
    <inertial>
      <origin
        xyz="0.14768 0.23303 0.22798"
        rpy="0 0 0" />
      <mass
        value="7.6442" />
      <inertia
        ixx="0.075629"
        ixy="3.85E-09"
        ixz="-9.5343E-08"
        iyy="0.14294"
        iyz="1.6837E-11"
        izz="0.081345" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/base_link.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/base_link.STL" />
      </geometry>
    </collision>
  </link>
  <link
    name="Wheel 1">
    <inertial>
      <origin
        xyz="-3.2558E-07 1.0722E-07 0.030838"
        rpy="0 0 0" />
      <mass
        value="0.5000" />
      <inertia
        ixx="0.00072916667"
        ixy="0.0000000"
        ixz="0.0000000"
        iyy="0.000625"
        iyz="0.0000000"
        izz="0.00072916667" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 1.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="0.89804 0.91765 0.92941 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 1.STL" />
      </geometry>
    </collision>
    <gravity>0</gravity> 
  </link>
  <joint
    name="Cont 1"
    type="continuous">
    <origin
      xyz="-0.0034084 -0.12798 0.10053"
      rpy="-1.5708 0 1.5708" />
    <parent
      link="base_link" />
    <child
      link="Wheel 1" />
    <axis
      xyz="0 0 1" />
  </joint>
  <link
    name="Wheel 2">
    <inertial>
      <origin
        xyz="-3.2557837015279E-07 1.07217308559227E-07 0.0308380289896838"
        rpy="0 0 0" />
      <mass
        value="0.5000" />
      <inertia
        ixx="0.00072916667"
        ixy="0.0000000"
        ixz="0.0000000"
        iyy="0.000625"
        iyz="0.0000000"
        izz="0.00072916667" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 2.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="0.898039215686275 0.917647058823529 0.929411764705882 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 2.STL" />
      </geometry>
    </collision>
   <gravity>0</gravity> 
  </link>
  <joint
    name="Cont 2"
    type="continuous">
    <origin
      xyz="0.29877 -0.32798 0.10053"
      rpy="1.5708 0 1.5708" />
    <parent
      link="base_link" />
    <child
      link="Wheel 2" />
    <axis
      xyz="0 0 1" />
  </joint>
  <link
    name="Wheel 3">
    <inertial>
      <origin
        xyz="-3.26336083100731E-07 1.07668861937249E-07 -0.0308380347831287"
        rpy="0 0 0" />
      <mass
        value="0.5000" />
      <inertia
        ixx="0.00072916667"
        ixy="0.0000000"
        ixz="0.0000000"
        iyy="0.000625"
        iyz="0.0000000"
        izz="0.00072916667" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 3.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="0.898039215686275 0.917647058823529 0.929411764705882 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 3.STL" />
      </geometry>
    </collision>
    <gravity>0</gravity> 
  </link>
  <joint
    name="Cont 3"
    type="continuous">
    <origin
      xyz="-0.0034084 -0.32798 0.10053"
      rpy="1.5708 0 1.5708" />
    <parent
      link="base_link" />
    <child
      link="Wheel 3" />
    <axis
      xyz="0 0 1" />
  </joint>
  <link
    name="Wheel 4">
    <inertial>
      <origin
        xyz="-3.26299866348911E-07 1.07652009542769E-07 0.0291707139063403"
        rpy="0 0 0" />
      <mass
        value="0.5000" />
      <inertia
        ixx="0.00072916667"
        ixy="0.0000000"
        ixz="0.0000000"
        iyy="0.000625"
        iyz="0.0000000"
        izz="0.00072916667" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 4.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="0.898039215686275 0.917647058823529 0.929411764705882 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Wheel 4.STL" />
      </geometry>
    </collision>
    <gravity>0</gravity> 
  </link>
  <joint
    name="Cont 4"
    type="continuous">
    <origin
      xyz="0.30046 -0.12798 0.10053"
      rpy="1.5708 0.62487 1.5708" />
    <parent
      link="base_link" />
    <child
      link="Wheel 4" />
    <axis
      xyz="0 0 1" />
  </joint>
  <gazebo>
    <plugin name="object_controller" filename="libgazebo_ros_planar_move.so">
      <commandTopic>cmd_vel</commandTopic>
      <odometryTopic>odom</odometryTopic>
      <odometryFrame>odom</odometryFrame>
      <odometryRate>50.0</odometryRate>
      <robotBaseFrame>base_footprint</robotBaseFrame>
    </plugin>
  </gazebo>
  <link
    name="New Static Link">
    <inertial>
      <origin
        xyz="0.0172790917411035 0.102994908792773 -0.000286417787769305"
        rpy="0 0 0" />
      <mass
        value="1.94401355435528" />
      <inertia
        ixx="0.00768941377852196"
        ixy="-0.0023016367314421"
        ixz="2.28881904576314E-05"
        iyy="0.00450259485431559"
        iyz="3.78227208152756E-05"
        izz="0.0103483641272583" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/New Static Link.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/New Static Link.STL" />
      </geometry>
    </collision>
    <gravity>0</gravity> 
  </link>
  <joint
    name="Fixed"
    type="fixed">
    <origin
      xyz="0.14768 -0.22798 0.33053"
      rpy="1.5708 0 -1.581" />
    <parent
      link="base_link" />
    <child
      link="New Static Link" />
    <axis
      xyz="0 1 0" />
  </joint>
  <link
    name="Arm">
    <inertial>
      <origin
        xyz="0.13229755761114 -0.000278839398755615 -0.0323012411261709"
        rpy="0 0 0" />
      <mass
        value="1.80462691606488" />
      <inertia
        ixx="0.00337104522287667"
        ixy="2.3173417802539E-05"
        ixz="-0.000161183912931026"
        iyy="0.0199987994056373"
        iyz="-1.64319461670501E-06"
        izz="0.0222082055539029" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Arm.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Arm.STL" />
      </geometry>
    </collision>
    <gravity>0</gravity> 
  </link>
  <joint
    name="Rev1"
    type="revolute">
    <origin
      xyz="0.06 0.18 -0.030782"
      rpy="0 0 0.18829" />
    <parent
      link="New Static Link" />
    <child
      link="Arm" />
    <axis
      xyz="0 0 1" />
    <limit
      lower="0"
      upper="0"
      effort="0"
      velocity="0" />
  </joint>
  <link
    name="Pris 1">
    <inertial>
      <origin
        xyz="0.0335816493728636 1.71749397870347E-07 0.0119354658625156"
        rpy="0 0 0" />
      <mass
        value="0.123182781546625" />
      <inertia
        ixx="3.77360992389157E-05"
        ixy="1.28183032967861E-11"
        ixz="-5.81374538385023E-06"
        iyy="0.000122947375330809"
        iyz="2.65123689114698E-10"
        izz="0.000144337931781889" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Pris 1.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Pris 1.STL" />
      </geometry>
    </collision>
    <gravity>0</gravity> 
  </link>
  <joint
    name="Pris 1"
    type="revolute">
    <origin
      xyz="0.1 0 -0.063391"
      rpy="3.1416 0 -1.9477" />
    <parent
      link="Arm" />
    <child
      link="Pris 1" />
    <axis
      xyz="0 0 1" />
    <limit
      lower="0"
      upper="0"
      effort="0"
      velocity="0" />
  </joint>
  <link
    name="Pris 2">
    <inertial>
      <origin
        xyz="1.8466057571942E-09 -5.55111512312578E-17 0.01"
        rpy="0 0 0" />
      <mass
        value="0.260668670250234" />
      <inertia
        ixx="7.94869252643328E-05"
        ixy="-2.07014852308951E-18"
        ixz="2.73993982613085E-18"
        iyy="0.00115947637560852"
        iyz="1.99348984198689E-09"
        izz="0.00122317832768109" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Pris 2.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Pris 2.STL" />
      </geometry>
    </collision>
   <gravity>0</gravity> 
  </link>
  <joint
    name="Pris 2"
    type="revolute">
    <origin
      xyz="-0.0014893 -0.078861 0.020827"
      rpy="0 0 0.90855" />
    <parent
      link="Pris 1" />
    <child
      link="Pris 2" />
    <axis
      xyz="0 0 0" />
    <limit
      lower="0"
      upper="0"
      effort="0"
      velocity="0" />
  </joint>
  <link
    name="Pris 3">
    <inertial>
      <origin
        xyz="-0.166565243027124 0.000967072198009372 0.0300000329001753"
        rpy="0 0 0" />
      <mass
        value="0.449710314809642" />
      <inertia
        ixx="0.00137456804218307"
        ixy="-4.43060167581936E-05"
        ixz="9.82391747567394E-10"
        iyy="0.002208699287522"
        iyz="-1.54947639651244E-09"
        izz="0.00315643719811711" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Pris 3.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://final_assembly3/meshes/Pris 3.STL" />
      </geometry>
    </collision>
   <gravity>0</gravity> 
  </link>
  <joint
    name="Pris 3"
    type="prismatic">
    <origin
      xyz="0.20514 0.030503 -0.039218"
      rpy="-1.5708 0 3.1416" />
    <parent
      link="Arm" />
    <child
      link="Pris 3" />
    <axis
      xyz="1 0 0" />
    <limit
      lower="0"
      upper="0"
      effort="0"
      velocity="0" />
  </joint>
  
</robot>

ROS version:ROS Melodic

Ubuntu 18.04

Nidhi
  • 69
  • 1
  • 9
  • Hello Nidhi, can you reduce the URDF to a minimum number of links and joints while still observing the problem? – J.P.S. Mar 22 '22 at 07:08
  • 1
    Also, I realize that there is no frame transformation published between `map` and `world`. Did you try to set the frame `world` as fixed frame in the global options of RViz? Alternatively, publish a transformation between `world` and `map` (with map as parent). I think, this is the solution to your problem. – J.P.S. Mar 22 '22 at 07:09
  • Thank you, it almost solved the problem, the only issue I am facing now is that one of the links is showing No Transform from [Part to world] – Nidhi Mar 22 '22 at 08:23
  • Can you also provide a screenshot for this particular message? I'm confused, since there is no `Part` or `Part to world` frame in the URDF. – J.P.S. Mar 22 '22 at 08:46
  • The part is Pris 2, by part I mean one of the links in the robot. Sorry for the misunderstanding. – Nidhi Mar 22 '22 at 09:12
  • It's something like : Pris 2 | No Transform from[Pris 2 to world]. This is the only link with this status error – Nidhi Mar 22 '22 at 09:14
  • Did you try looking up the tf-tree with rqt? – J.P.S. Mar 22 '22 at 10:22
  • I reproduced your situation and came across a bug in your URDF. Something seems wrong with your joints of type `revolute`. When I change them to `fixed`, it works. You might consider searching for a bug in these joints. – J.P.S. Mar 22 '22 at 11:28
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/243210/discussion-between-nidhi-and-j-p-s). – Nidhi Mar 23 '22 at 03:55

3 Answers3

0

So, I realized two problems:

First, you have to change the fixed frame in the global options of RViz to world or provide a transformation between map and world.

Second, your URDF seems broken. There is something wrong with your revolute-typed joints. Changing their type to fixed fixed the problem. I think, it's best if you ask a separate question with a minimal example regarding this second problem.

J.P.S.
  • 485
  • 4
  • 11
0

To be able to perform a correct visualization under rviz, you must change fixed frame from "map" to "world" or "base_link" depending on the reference you want to choose.

0

I had a similar issue. In my case I had nothing publishing on the topic /state which rviz expect to put together the part of your robot described in /robot_description. You should try looking if a joint_state_broadcaster is launched (it is what forward the joint state from gazebo to ROS)