Page 1 of 1

### Creating a spring

Posted: 12 Feb 2014, 23:12
I have read your posts about using a prismatic joint to create a spring damper system and I am still unclear about how to do that, could you walk me through how you would use a prismatic joint to replicate a 12N/m spring with a rest length of .02 meters.

### Re: Creating a spring

Posted: 14 Feb 2014, 10:44
Hello,

For a spring, you have Hook's law:

F=k*x

where F is the force of a spring, k its constant, and x its displacement (or stretch/compression)

In V-REP, set your joint (let's suppose it's a prismatic joint) into torque/force mode, the motor enabled, the Control loop enabled, Position control (PID) selected, and Regulate torque/force selected. You can do all this in the joint dynamics properties.

In V-REP, with above settings, your joint will exert a force:

F=ctrl*maxForce

where maxforce is the max. torque/force item, and ctrl is a PID control:

ctrl=x*P+integratedErrors*I+(x-previous_x)*D

So, in case of a pure spring:

F=x*P*maxForce

so, k=P*maxForce. In your case, you could pick: maxForce=12 and P=1.

Cheers

### Re: Creating a spring

Posted: 09 May 2018, 11:24
hi
I tried this methond , and it shows a very strange graph.

The first strange thing is that the fig is supposed to plot a sin wave.
In the mean time, the amplitude descend fast along with time. The descend is bigger when simulation step time is bigger.
I set step time to 0.1ms, and get this fig. The descend is still unacceptable.

### Re: Creating a spring

Posted: 09 May 2018, 15:31
I've find another way slove this problem.

First disable the prismatic joint motor , we don't need the motor contorl.

Then create a threaded script with the following code:

Code: Select all

``````function sysCall_threadmain()
cyhandle=sim.getObjectHandle('Cylinder')
cyhandle0=sim.getObjectHandle('Cylinder0')
initPosition=sim.getObjectPosition(cyhandle,cyhandle0)
k=100