Torque control
Torque control
How would I adjust a joint so that it operates in torque control?
Thanks
Thanks
Re: Torque control
EDIT: make sure you read this section.
Hello,
Double-click your joint icon in the scene hierarchy. This opens the joint properties dialog. There, make sure your joint is in "force/torque mode". Then, click "show dynamic parameters" to open the dynamic properties dialog for that joint. There, check "motor enabled" and uncheck "Position control enabled". Set a very high target velocity (e.g. 99999). Now your joint will be controlled with the indicated force/torque. If your joint has no load, or a very small load, then it might reach the target velocity in one simulation step.
You can adjust that value programmatically with simSetJointForce
Cheers
Hello,
Double-click your joint icon in the scene hierarchy. This opens the joint properties dialog. There, make sure your joint is in "force/torque mode". Then, click "show dynamic parameters" to open the dynamic properties dialog for that joint. There, check "motor enabled" and uncheck "Position control enabled". Set a very high target velocity (e.g. 99999). Now your joint will be controlled with the indicated force/torque. If your joint has no load, or a very small load, then it might reach the target velocity in one simulation step.
You can adjust that value programmatically with simSetJointForce
Cheers
-
- Posts: 1
- Joined: 14 Feb 2013, 19:09
Re: Torque control
Won't this only apply torque in one direction? If the torque needs to be applied in the other direction won't you need to set the velocity the other direction? Or can you set a negative torque?
Re: Torque control
You can't set a negative torque; you have to swap the sign of the velocity.
Re: Torque control
I have attempted to control a joint using "torque control" as you explained, but I am not getting the desired behavior. Using a standard open loop controller on a three link pendulum, it seems that the momentum created by the velocity saturation caused the joints to "pulse." I have also attempted to alter the source code in the dynamics plugin.
At line 1376 in ConstraintDyn.cpp, I changed the two lines:
to be:
using the max force variable for a quick hack. I am still observing a pulsing behavior in the joints. Any suggestions?
At line 1376 in ConstraintDyn.cpp, I changed the two lines:
Code: Select all
dJointSetHingeParam(_odeConstraint,dParamFMax,_simGetDynamicMotorMaxForce(joint)*torqueScaling); //********** SCALING
dJointSetHingeParam(_odeConstraint,dParamVel,vel);
Code: Select all
dJointAddHingeTorque (_odeConstraint, simGetDynamicMotorMaxForce(joint)*torqueScaling);
Re: Torque control
Hello betaUser,
Can you send us a simple example scene that illustrates this?
Please send it to info coppeliarobotics com
Thanks
Can you send us a simple example scene that illustrates this?
Please send it to info coppeliarobotics com
Thanks
Re: Torque control
Hey there,
I'm trying to use torque mode to control a joint, and I'm having an issue. Namely, if I make an inverted pendulum, I can't seem to be able to stop it from falling over. I set the velocity to 0, and the force to 1,000,000, and it still slowly falls down. Is this just integration error or something? Should I be unconcerned?
Thanks!
I'm trying to use torque mode to control a joint, and I'm having an issue. Namely, if I make an inverted pendulum, I can't seem to be able to stop it from falling over. I set the velocity to 0, and the force to 1,000,000, and it still slowly falls down. Is this just integration error or something? Should I be unconcerned?
Thanks!
Re: Torque control
Hello Nikolaus,
You probably want to use your joint in position control mode.
Or, if you want to directly control the force/torque exerted, then you will have to turn up the velocity to a high value, then regulate the force/torque. Remember that the physics engines do not operate like reality, and it can help to read the respective documentations. What basdically happens is:
1) the engine will apply the specified torque/force to the joint
2) if the load on the joint is very small, the maximum velocity will be reached in one simulation step. And the joint will stay at that maximum velocity
3) if the load on the joint is high, the joint will accelerate, until the maximum velocity is reached
So you see it doesn't make any sense to use the joint with zero velocity (unless you want to simulate friction in a passive joint)
From V-REP 3.0.2 to be released around mid-March 2013, you will be able to directly write low-level joint controllers in Lua.
Cheers
You probably want to use your joint in position control mode.
Or, if you want to directly control the force/torque exerted, then you will have to turn up the velocity to a high value, then regulate the force/torque. Remember that the physics engines do not operate like reality, and it can help to read the respective documentations. What basdically happens is:
1) the engine will apply the specified torque/force to the joint
2) if the load on the joint is very small, the maximum velocity will be reached in one simulation step. And the joint will stay at that maximum velocity
3) if the load on the joint is high, the joint will accelerate, until the maximum velocity is reached
So you see it doesn't make any sense to use the joint with zero velocity (unless you want to simulate friction in a passive joint)
From V-REP 3.0.2 to be released around mid-March 2013, you will be able to directly write low-level joint controllers in Lua.
Cheers
Re: Torque control
Hi Marc!
Thanks a lot for the great work.
As far as I understand from the discussion above, there is no explicit way to control a robot joint in a purely torque control mode?
For instance, I just calculate some task-specific torques (without concerning max velocity etc.) and implement it to actuators.
Is that possible?
Thanks a lot for the great work.
As far as I understand from the discussion above, there is no explicit way to control a robot joint in a purely torque control mode?
For instance, I just calculate some task-specific torques (without concerning max velocity etc.) and implement it to actuators.
Is that possible?
Re: Torque control
Hello Husnu,
yes, that is possible.
If you want a pure torque control, then:
Cheers
yes, that is possible.
If you want a pure torque control, then:
- enable the joint motor (check Motor enabled)
- disable the joint position control (uncheck Control loop enabled)
- set a very high target velocity for that joint (which will never be reached)
- then you can adjust the torque via the API with simSetJointForce.
Cheers