05-19-2010 02:47 PM
Is it possible to do force control instead of motion control with ImagingLab? Where can I find some related readings, or instructions, etc?
Sorry for asking so many questions... but thanks!
06-03-2010 04:46 PM
Hello,
Could you give a little more insight into what you mean by force control? Are you wanting to measure force at the end effector and vary the speed/position based upon the force feedback? If so, then you would need to either have a sensor at the end effector in order to read the force back into LabVIEW and adjust the position accordingly, or write a DENSO PAC program to do this and control the execution of that PAC program from LabVIEW. Movement commands built-in to the ImagingLab's Library are position based (absolute, relative, etc).
06-04-2010 09:01 AM
Pehaps you can clarify. The Denso is capable of what is called 'current limiting' functions; this equates to compliance control (sometimes called soft servo, or force control). This allows the Denso to set, as a numeric value, a maximum allowable force applied on any combination of axies. The result is the robot will use only xx% of its power to insert a part (or whatever the operation is), and the arm becomes 'pliable' at its joints. However, there is no direct translation to tell the robot that, 1kgF is the desired max force for a move; we can only use a % of the max current draw per axis. These are libraries built into the Denso.
See the referenced libraries in my Denso code below.
To my knowledge, they are not currently directly accessiable via LabVIEW. However, you can have LabVIEW run a program resident in the Denso controller, and that program can contain all force/compliance control related moves; then end and return programming control back to the primary LabVIEW program. Also, some of the compliance control/force control is accomplished simply be setting parameters in the Denso, which I belive there is already a VI in place to get/set those parameter values.
Hope this helps!
06-07-2010 09:27 AM
09-17-2010 04:31 AM
Hello!
I have the same problem: I'm trying to vary the z position in order to apply a constant normal force at the end effector.
So I'm using an ATI load cell, I read the normal force into Labview and with a PID controller I adjust the z position. This method works very well if I'm not moving the arm along x-y. The problem is that I would like, for example, to move the end effector of 100 mm along x and in the meanwhile adjust the z position to keep the force constant; but if I give as command a displacement along x or y, in the meanwhile I'm not able to update the z value and so I can't control the force. Is there a way to update the z value when the robot is performing a movement along x and y?
I tried to give some small displacements, like giving increments of 0,1 mm to perform the whole movements, and this can solve the problem, but then I can't control the speed so well..
I'm wondering if there is a smarter way to do it. Do you have any suggestion?
Thank you very much,
Carmine
09-17-2010 04:57 AM
Hallo Carmine,
if I understand correctly you need to feedback the sensor values into the motion planning,
i.e. a "closed loop". There is a function in the DENSO controller which is referred to as
"compliance control". It lets you configure parameters to have a limited force on joints
and basically on x-y-z axis as well. But as the function uses the current values of the
servos its precesion is quite limited. For the scara z-axis it works well, for the 5/6 axis
models it is much harder to use.
But there is a new function called "Slave Move" which is available since May 2010. This
function allows you to send position data every 8 ms and practically overriding the motion
planning of the controller. If you have access to a robot kinematics and motion planning
library you can thus setup a closed loop by feeding back the sensor data into the motion
planning. In my understanding this function is not yet implemented in the current version
of the ImagingLab library but please check with ImagingLab to clarify.
If you are interested in the "Slave Move" function I can make it available for you.
Cheeers,
Alexander
09-17-2010 05:16 AM
Hi Alexander,
I knew about the "compliance control" but for our applications we need an high precision, so we are using an external load cell. Anyway, the feedback closed loop works very well if I'm not moving the robot along x-y; for example, if I have a compliant material on top, I can reach the right z position in order to have the force that I required. I have a problem when I perform a movement: for example, I need to perform an x displacement of 100 mm, with constant force of 0,5 N. So, when I start the force closed loop, at the beginning the z position is the right one necessary to have 0,5 N at the end effector; when the x movement start, I can't update the z position anymore in order to keep the force constant: the z position remains the same until the movement is complete.
In my opinion the problem is that when I perform a movement, when the movement is not complete I can't come back inside the loop and update the z position; I have to wait until I reach the final position.
If with the "Slave Mode" function, I can override the motion before the motion is complete (so I can update the z position also if the robot is still performing his movement along x or y axis) I'm really interested to it!
Thank you very much,
Best Wishes,
Carmine