Home› Programming
Discussion
Back to discussions page
Minchan
Posts: 2 Recruit
Programming of Vision system |
757 views
|
Answered | |
/ Most recent by Ruben_Speybrouck
in Programming
|
10 comments |

in Programming
Is there any command as script to return some values like checking whether the object is on the area or not?
We are using UR robots.
We are using UR robots.
Tagged:
Best Answer
-
Annick_Mottard Posts: 147 Handy
@Minchan if you are using Robotiq's Wrist Camera, you can download and install a software package meant for use over Universal Robots (CB3.1 controllers only). This software package contains a Camera Locate feature that is able to perform part and feature detection. You can teach objects to the Wrist Camera within a Camera Locate node and use it in a Robot Program.
The Camera Locate feature adds a node in your Robot Program and acts as an ''If'' statement. When the program gets to the Camea Locate node, the Wrist Camera will look for the part taught in its predefined snapshot position (which consists of a robot position and a work plane). If the part is detected, the program will go and execute the commands in the Camera Locate node. If no part is detected, the program does not go within the Camera Locate node and continues with the following commands. Therefore, you can use this logic to verify if a part was indeed in the predefined work plane.
Feel free to post below if you have other questions.
I was wondering if the robot could continuously follow the object when it is moving.
The detected part's position is stored in the "object_location" variable. You do not need to define it, the Vision server updates its value when a part is detected by a Camera Locate node in a program. "object_location" is a pose that contains the position and orientation of the object relative to the base reference frame. The part's z-axis actually points downwards. Note that this feature is not documented and not supported as of today. Its name and function might change in the future.
Product Expert
Robotiq
[email protected]
I am trying to pick 4 parts off of a conveyor. After the 1st part is picked the output turns on and the remaining 3 parts get run onto the floor. I need the cam locate to run until the conveyor is empty of parts then turn on the output. I was trying to do this with an if: statement but cannot find the camera output for no parts present. Any help would be appreciated.
As of today, the Camera Locate node does not update any variable when it finds a part or not. I suggest you use your own variable (like a flag) inside the Camera Locate node that is set to True when the program enters the node, otherwise this variable should be False. You can then track if a part has been detected or no. If you know you have four parts, you can also verify with an incremented variable if the Camera found the part four times.
Hope this helps!
Product Expert
Robotiq
[email protected]
Pseudo code would look something like this.
found_part_flag = False
Camera Locate
found_part_flag = True
Increment number_of_times +1
if found_part_flag == False or number_of_times > 3
number_of_times = 0
run the conveyor
I'd also recommend just as a safeguard placing a sensor on the end of the conveyor that causes the conveyornto not be able to run if a part reaches the end. Are you running the conveyor in a thread or in the main program?
I want to read a QR code on a table. This QR code contains the part number of the part I want to find. Then I want to pass that part as an argument/parameter/variable for the cam locate function. How could I do this?
I have 100's of parts and hypothetically many different parts on the same table at the same time. So I need to be able to do something like this:
PARTNUMBER =part_01
cam_locate(PARTNUMBER):
- move to (X,Y,Z)
- gripper(close)
- move to (X,Y,Z)