Hi Jim,

There are a couple of ways to simulate a spring in gazebo.  One example in ros uses a transmission as a "spring-like controller" (see http://ros-users.122217.n3.nabble.com/Flexible-amp-remote-transmission-td1929619.html#a1937295 for an example of a torsional spring).  Alternatively, you can use a joint constraint to do the same thing.  To simulate a linear spring, you can define a prismatic joint with both upper and lower limits equal to 0.  This means any constraint violation produces an error correction force which is essentially the amount of constraint violation (x) multiplied by ODE's ERP parameter / dt (k).

Note that using a joint constraint to simulate spring will actually update joint force and compute equivalent compression distance within the same time step, whereas using a transmission controller as given in the example above, the spring force applied is computed using spring stretch from the last time step.

If you want to use the joint constraint approach, I recommend testing on a very simple setup and verifying the spring constant / forces first.

Hope this helps.
John

On Sun, Jan 23, 2011 at 3:57 PM, Jim Rothrock <jimrothrock52@gmail.com> wrote:

I have created a URDF file for a four-wheel-drive vehicle and am beginning to use it with Gazebo. Each shock absorber is a prismatic joint. Simulating the damping of a shock is easy; just set the joint's damping factor in a dynamics block. However, I don't know how to simulate the spring component of a shock. My only idea so far is to write a ROS node that subscribes to the joint's position topic. The node's loop gets the position, computes a force via Hooke's law, then applies a corresponding wrench to the joint. Is there a better way to simulate a spring in Gazebo? It seems that someone would have needed to simulate a shock absorber by now, but my searches didn't turn up any examples.
--
Jim Rothrock | jimrothrock52@gmail.com
Sent from my Android phone


_______________________________________________
ros-users mailing list
ros-users@code.ros.org
https://code.ros.org/mailman/listinfo/ros-users