I'm trying to figure out how to do something with irPickTool (which I admit I'm not terribly familiar with). This is a conveyor-tracking pick, with an irVision job triggering every Xmm of conveyor motion (no part sensor).
The parts sometimes come in oversized, and are rejected by the irVision job. But now, the customer would like to get the actual measurements of the parts, passed or rejected, sent to the cell PLC over GOs. I'm trying to figure out if this is even feasible.
To start with, I can't get any measurement data if the Blob Finder tool rejects a part for being oversized. My current thought is that I can open up the Blob parameters, and add some Measurement Output tools. But this still means that irPickTool will "see" a valid part from irVision and start calling the Pick program chain.
So, how can I "hijack" PickTool's call chain without breaking everything? I can add an IF statement to check VR[1].MEAS[1] in the Pick program, but if I just skip the pick moves, that'll leave the part in the PickTool queue, as I understand it, so I'd have to add something to dequeue that part. But all the buffering takes place in the black-box KAREL programs, so I'm sort of wandering around blindly here.
I suppose a really "hacky" solution would be to let the robot carry out the Pick program, and just use an IF-THEN to block the gripper if the part measurement is too large. That would let irPickTool recover naturally, but it really feels like a last-resort option.