ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

How to define joints in SolidWorks

asked 2014-06-18 21:22:34 -0600

anonymous user


updated 2014-06-19 15:59:29 -0600


I have a joint that is rotational controlled by a linear actuator as pictured:

image description

These actuators have feedback indicating their displacement which i would like to use as the feedback for control.

In my current model i excluded the linear actuators and described the simple rotational joint and used rotary encoders in the joints for feedback. Now that i have actuators with position feedback i would rather use that and control these lengths directly.

My question is how should I describe this in SolidWorks so that the URDF exported will imported nicely into RVIZ? I am not sure about the kinematic chain.


edit retag flag offensive close merge delete


NB: Updated image with member labels. To clarify the question, ow should I use the SW2URDF tool to describe this joint? What i am not sure about is that A and B have the same parent (C) but is A is also a child of B?

anonymous userAnonymous ( 2014-06-19 16:01:39 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2014-06-19 10:02:42 -0600

l0g1x gravatar image

updated 2014-09-13 00:16:21 -0600

Willow Garage has a nice SolidWorks Plugin for exporting URDF. Here is a link and check out everything in there:

EDIT I have actually tried doing something like this myself. What we are trying to do is called a closed loop joint. From reading around, URDF format does not support closed loop joints because the people who update it "see no need in implementing this functionality". From the using URDF in gazebo 1.9 tutorial: "URDF can not specify the pose of the robot itself within a world. It is also not a universal description format since it cannot specify joint loops (parallel linkages), and it lacks friction and other properties. Additionally, it cannot specify things that are not robots, such as lights, heightmaps, etc."

But on the positive side of things, SDF format seems like it supports closed loop joints. gazebo parallel mechanisms. Even though this post is taking about parallel mechanisms, it is essentially the same thing with trying to connect a child joint, back to its originating parent. More specifically to your scenario, inside of that gazebo parallel mechanisms link is another link to pr2's gripper. It is in sdf format already. In case you did not want to deal with sdf and stick with urdf, it is really easy to convert the urdf to sdf since gazebo already does it every time you load the model. (go to directory of your URDF) gzsdf print (yoururdf.URDF) > (yoursdfname).sdf is all you need.

And from my understanding, I believe you would want your joints set as revolute (in sdf) and just calculate the upper and lower limits (in radians) of how far up and down the actuator angles can go.

Let me know if you make any progress because I am also trying to get the closed loop joints to work. This is all I pretty much knew about it from the research I have done. Hope this gives you a head start.

EDIT 2: So I have actually been able to successfully define a (little bit more complicated than yours) closed loop joint linkage. The approach that I took may/may not be the most optimal way, but it definitely works since my model won't fall apart in gazebo now..

For your scenario, (assuming you are using the sw_urdf_exporter like i recommended):

  1. make the base of your robot mechanism the part that is in the most bottom right corner of your picture (so basically the 'non-moving' part), and call it base_link
  2. Next create a child off of the base_link you just created, for part A in your picture, and call it lets say "mech_top_link" and then call the joint name "mech_top_base_joint" (With joints, try to make them as specific to what two linkages they are jointing). Make sure you set the axis rotation type to revolute as well.
  3. Once mech_top_link is created, you can then add the ending to that arm (which is at the top right of ...
edit flag offensive delete link more


Thanks for the suggestion, but i was asking how i should setup the joints within the SW2URDF plugin. One thought i had is that i may need to add rotational joints at the top and bottom of B, as well as a prismatic joint in between.

anonymous userAnonymous ( 2014-06-22 21:33:20 -0600 )edit

That is a great insight, thanks for your help. I will be sure to post something as soon as i make progress! :)

anonymous userAnonymous ( 2014-08-05 16:33:47 -0600 )edit

answered 2014-06-19 02:03:24 -0600

Ken_in_JAPAN gravatar image

I think that you should export SolidWorks-model in Collada(*.dae) format. For example, An article is explained here( http://projectsfromhellandmore.blogsp... ). If you don't know urdf, please look over a base model of the turtlebot model (For example, /opt/ros/hydro/share/turtlebot_description/urdf/stacks/circles.urdf.xacro). I hope your work will go well.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2014-06-18 21:22:34 -0600

Seen: 3,940 times

Last updated: Sep 13 '14