Home› Programming
Discussion
Back to discussions page
Puolikas
Posts: 5 Apprentice
Moving plane feature like in CNC-machining |
1.4K views
|
Answered | |
/ Most recent by cobottiukko
in Programming
|
17 comments |

in Programming
Hi.
What is the best way to use the feature plane?
My rig is Universal Robots UR10, Robotiq wrist camera and Robotiq 2F140 Gripper.
I have a portable assembly station and I want to move it around, take it to storage and put it back in a different place etc.
Now what I have done is to make a plane feature, points representing the corners of the station. Then in program I choose the feature plane under the MoveL command. Everything going great when the program is very simple.
I get the problems when the program is complicated. I cannot use MoveJ command (cannot choose the plane feature). Then in palletizing when I make rectraction after I have gripped the part the added Waypoints make weird moves. Like they are calculated from the Base feature.
Everything is resolved when I know how to move the base feature origin to the work origin before programming.
This method is widely used in CNC-machining:

So we have the Machine origin and then we tell the Machine where the origin of the part is. Then if we tell the Machine to move to X0,Y0,Z0 it will go to the origin of the part, not the Machine origin. This is like using feature plane, but every move is automatically related to part origin. So if you just make a MoveL command X0,Y0,Z0 without choosing the feature plane, it should go to part origin, not to the base feature origin.
If you can help me with this I would be very thankful! At our company (Oulu University of Applied Sciences) we have 30 students, 10 groups, sharing 4 UR-robots. That means robot cells moves all the time and without easy way to move the origin of the program, students have to always show the moved waypoints all over again. That can be frustrating..
Please feel free to ask more specifics if you need.
/ Lassi Kaivosoja - Project Engineer OUAS
What is the best way to use the feature plane?
My rig is Universal Robots UR10, Robotiq wrist camera and Robotiq 2F140 Gripper.
I have a portable assembly station and I want to move it around, take it to storage and put it back in a different place etc.
Now what I have done is to make a plane feature, points representing the corners of the station. Then in program I choose the feature plane under the MoveL command. Everything going great when the program is very simple.
I get the problems when the program is complicated. I cannot use MoveJ command (cannot choose the plane feature). Then in palletizing when I make rectraction after I have gripped the part the added Waypoints make weird moves. Like they are calculated from the Base feature.
Everything is resolved when I know how to move the base feature origin to the work origin before programming.
This method is widely used in CNC-machining:

So we have the Machine origin and then we tell the Machine where the origin of the part is. Then if we tell the Machine to move to X0,Y0,Z0 it will go to the origin of the part, not the Machine origin. This is like using feature plane, but every move is automatically related to part origin. So if you just make a MoveL command X0,Y0,Z0 without choosing the feature plane, it should go to part origin, not to the base feature origin.
If you can help me with this I would be very thankful! At our company (Oulu University of Applied Sciences) we have 30 students, 10 groups, sharing 4 UR-robots. That means robot cells moves all the time and without easy way to move the origin of the program, students have to always show the moved waypoints all over again. That can be frustrating..
Please feel free to ask more specifics if you need.

/ Lassi Kaivosoja - Project Engineer OUAS
I think you can't use MoveJ in this case. MoveJ is a motion in Joint space, not in Cartesian space. It means, there is no x,y,z coordinate. The coordinates are in degrees for each joint for a MoveJ. You will also see that acceleration and speed are represented in degrees/second and degrees/sec2. It means MoveJ is neither in the Base coordinate. Asking the robot to put joint number 2 at 35 degrees, for example, it means it's always at the same place in space. That's why it look like in base coordinate because it's a fixed position in space. It's a fixed angle for each joint. The base is also in Cartesian space with X,Y and Z. To use Cartesian coordinates like X,Y,Z, I think you must use MoveL or MoveP.
Integration Coach
robotiq.com
[email protected]
Then your movej would just use those variable waypoints instead of fixed waypoints. This results in a program that is rather simple still, you have fixed points to go change if needed and a way to control your feature frame as well. In this example, I made the feature variable and used pose_add() to cause the feature frame to step down in 100 mm increments. Notice in the pose_add I am not using the feature but rather the features variable, I did this so that it will do more than 1 step down.
I'm familiar with this method but still not what I'm looking for. Some day I will figure this problem out and bring it to you guys.
/Lassi K.
Is this more along the line of what you are looking for?
Didn't know that you can do that.
So In the begining of the program I show the new base feature offset with trans_pose. I just need to make a jig which helps me to show the correct angle of the assembly station.
I'll get back to you when I have tested this out.
Thanks for your help.
Any updates? I feel like its a common need to move the cobot around and then reteach the base feature.
I'm using an UR5 CB3 with a wrist camera and a hand-e gripper in a palletization application. I think my question is somewhat similar to Puolikas's and that's why I put it here. The parts come from a conveyor belt, the robot has to put them in a box on the right side and after this box is full it has to move to the next box on the opposite side. The robot will have several applications with different parts and boxes. How do I program just one box and then move the program to a different position?
1. you make a point feature (name e.g. box1_corner) from installation to show where corner of the box is.
2. then start you box filling with MoveL-command and select from the command tab feature; base -> box1_corner_var
3. now under the MoveL-command make your moves
4. then make new point feature (name e.g. box2_corner)
5. copy the first MoveL-command and paste it where you need it
6. change the box1_corner_var -> box2_corner_var from the second MoveL-command
7. test with caution!
Start with a simple program then proceed to the actual program.
/ Lassi Kaivosoja, email: [email protected]
This is the same as the feature plane in Polyscope since like 3.7 or whenever Ur changed to defining origin->x axis -> y axis
Here you can see the idea: https://www.youtube.com/watch?v=Bs_MQslF_v8&t=14s All credits to Ralph W. Earl Company for this awesome video! ( @bcastets It would be nice if you could have same kind of video in youtube as a public video)
Below is also a good application video from our customer where robot is on mobile platform (EasyRobotics Flex) and the robot is moved in daily basis. "Reprogramming" is done by the Robotiq Copilot. Human just places the robot somewhere near the machine and rest is done automatically.
Application video: https://www.linkedin.com/posts/mrliljamo_robotti-astui-t%C3%B6ihin-purkamaan-tuotannon-activity-6780388942060539904-zqh7
Robotiq has a great learning platform where Contact offset function is explained in depht. https://elearning.robotiq.com/
Thank you for your suggestion. I will try to work a video to show a use case of Contact Offset function.
At the moment the best reference we have is probably our elearning video:
https://elearning.robotiq.com/course/view.php?id=7§ion=14