How to pick up 2 workpieces using dual grippers
Hello koch,
You can try to use multiple tool coordinate systems. In fact, grasping generally uses the coordinate system, and a robot usually automatically allocates nearly 20 tool coordinates. Generally, when we need “TOOL_1” to grab, we will use sentences like “SET OUT [1]==True”, which is a signal action that can be found in the properties of the robot, and “OUT[1]” corresponds to “TOOL_1”, “OUT[2]” corresponds to “TOOL_2”, and so on. So you just need to move the coordinates of “TOOL_2” to the second chuck, and then use “SET OUT [2]==True” to solve the function of grabbing different components with two heads.
Here I attach a demo I made myself, hoping to help you.
double chuck.vcmx (2.1 MB)
Where did you establish your “Gripper-TCP” as TOOL[1] and “Suction-TCP” as TOOL[2]?
I have my coordinates for my two TCP tool frames set, but cannot connect them back to the robot signals.
In fact, if you are using a standard robot, he is usually set up automatically with the robot controller and does not need to be set up separately, you just need to capture the coordinate frame from TOOL1 to TOOL16 to the position you want to be the gripper.
If you are using a non-standard robot that you have created yourself, you can implement them via scripts or plugins, for the plugin part you can visit the following two links
Here I specifically talk to you about the part with scripts, specifically, it is actually the specific process of these two plugins done manually.
Performing a crawl is actually done in vc in a number of ways, when you want him to be connected to the robot signals you can do so:
- add a python script;
from vcScript import *
def OnSignal( signal ):
pass
def OnRun():
# Example listening on robot port 100
while exe.DigitalOutputSignals.input(100) != True:
delay(0.0001)
cont.grab(compsignal.Value)
comp = getComponent()
exe = comp.findBehaviour('Executor')
cont = comp.findBehaviour('GraspContainer')
compsignal = comp.findBehaviour('ComponentSignal')
- Create a ray sensor, a component signal and a component container at the end and connect the signal to the script.
Once this is done, you can use Set OUT[100] == True to grab it, note that while is used here because it’s listening to the robot’s (or actuator’s to be exact) port, and if it’s listening to any other model you can use triggerCondition to achieve this, which places the simulation lag.
Thank you so much (This post is mine)