Pick and Place Robot using LinuxCNC and OpenCV

More
27 Feb 2018 04:59 #106600 by xerxesbear
Hi Forum,

I am currently building a pick and place(PNP) robot during my free time. The PNP's task is to pick up a cylinder from a moving conveyor belt and place it in a rectangular box with holes arranged in a matrix. Currently, I have it set up such that gcode is sent from the universal gcode sender .jar file and the assembly motion of the PNP is basically hard coded.

I would like to add a camera feature and use OpenCV that would be able to identify the holes on the box and tell the PNP to place the cylinders into the holes. I am currently trying to combine OpenCV and LinuxCNC together but have no clue how to start since I am just a mechanical engineer.

Sorry this became a long-winded message. Please provide me some advice or if anyone has done something like this, please point me in the right direction.

Mechanical Parts of the PNP:
Stepper motors to drive xyz motion
servo motor to drive grasping of claw
DRV8825 x3 + CNC shield
Lead Screws and Belt+Pulley to convert rotation to linear

Thank you
Cheers,
Jason

Please Log in or Create an account to join the conversation.

More
05 Mar 2018 13:17 #106951 by andypugh
This sounds like fun, but I am not sure how such a system would work.
What sort of output do you get from OpenCV? I know it has been mentioned on here in the past but can't recall the details.

I guess that OpenCV would run under Python and could then pass commands to LinuxCNC through the Python interface.

linuxcnc.org/docs/2.7/html/config/python-interface.html

I could see the Python issuing MDI commands such as
c.mdi("G0 A120") to correct the alignment of the part.

Picking from a moving conveyor sounds like a challenge. You could set your robot moving at conveyor speed, but it would not respond to any other inputs until it reached the finish point.
You might need to do the conveyor-synch in kinematics.

Though MDI can queue commands, so potentially you could issue a string of moves to
1) Catch up to the part on the conveyor
2) lower around the part (caculating the feed rate to account for the hypotenuse being longer)
3) Close the gripper while running at constant speed
4) Lift, at conveyor speed. Possibly an Arc move.

What I am saying is that the code that sends the motion commands will have to calculate a string of moves, as G-code only understands end-points.
The following user(s) said Thank You: nhanpham

Please Log in or Create an account to join the conversation.

Time to create page: 0.160 seconds
Powered by Kunena Forum