@tony_szklany - here’s a condensed version of my general advice on machine tending with a focus on tool and user frames.
Wherever possible, use joint-type waypoints.
Until I get to a move that will require cartesian coordinates, I prefer to use joint positions. They are 100% deterministic, always plan quickly, and aren’t affected by tool or user frames. This means there’s a reduced chance that you’ll crash something while setting things up. We use joint waypoints for the sequence of moves through the enclosure door. We also use joint waypoints for the ‘safe move’ to a clearance position above the first pick point. I only start using cartesian waypoints for the actual pick or place positions.
When you need cartesian waypoints, specify the arm config, and train your frames so Z is always up.
For the “last mile” moves (e.g the last 50-100mm long moves that make up your picking or placing sequence) you usually need to use cartesian waypoints. Cartesian positions allow you to handle actions programmatically (e.g. same approach/grasp/retract routine repeated over a grid), allow you to pick from the same point with two different grippers, or allow you to make small alterations to a single frame without having to retrain a bunch of waypoints.
When creating these waypoints I always specify an arm configuration (e.g. NUT, FUT, etc). This makes the motions between these waypoints deterministic.
I prefer to write my cartesian waypoints for picking or placing such that XYZ zeros correspond to the point exact point where the “pick” or “place” happens. For a pick waypoint and an above-the-pick waypoint I might have:
pick = p[0, 0, 0,180, 0, 43.257]
clear = p[0, 0, 100,180, 0, 43.257]
Notice that there are some ABC rotations in these waypoints – more on this later. Lately I’ve gotten in the habit of only creating the pick waypoint with XYZ = 0,0,0, and then using an incremental move to handle Z approach locations.
Importantly, when creating user and tool frames, I have found it easiest to create them in a way such that Z positive always moves the robot “up” and Z negative is always “down”. Of course, you can handle this in different ways, but I find that it messes with my mental model when my ABC offsets for either tool or user frames end up such that the robot moves any direction other than up when I jog using the pg up button.
Because you have two grippers, you will need two tool frames. Because you have the grid for picking from and the fixture in the mill, you’ll need at least two user frames. If your tool frames are trained perfectly (the physical geometry perfectly matches the tool frame offsets) you can get away with those four frames. If getting those tool frames “perfect” is a challenge, you can cheat by creating extra user frames for the combination of, for example, gripper A with the mill fixture and gripper b with the mill fixture.
If this helps, fantastic. If you’re still stuck, reach out again and I can try to be more specific.