OpenMV based visul sorter

Hi,

First off, the OpenMv cam, code and such components are totally new for me, electronics repair, soldering etc are not.
Also i am able to make all sorts of mechanical parts of different materials.
This was background.

I am in need of a sorting machine, the parts that i wish to sort are all marked on one side by letters stamped into them, parts are from metal.
I already have a separate machine to ensure that the products coming into the camera view in direction for the camera to see the stamped letters.

Since i have no experience with the cam and OpenMV products at all, so i have some questions.

I have two options to make the mechanical side of the sorter.

  1. i will construct a motorized conveyor where the belt has evenly spaced separators to ensure that the products are with the same spacing on the belt.
    So the belt is moving with a constant speed. Is the cam able to pick up the letters on the fly? How much time the product needs to be seen by the camera for it to register the product. (product is about at 10 mm in size and the letter height is about 2 mm).
    So the products are moving on the line. Lets say we will have 10 different marking options on the products but we would like to separate 4 different types of those 10 individually.
    So my first idea would be to use either pneumatic jets or DC Solenoid pushers to kick the product off the belt into separate bins.
    Would this work code wise and with which type of motor, stepper or servo.
    As i wrote, the belt would have separators so cam registers letters CCC on the product, the belt, which is in continuous movement moves down the line and the program enables the kicker with either time related logic, or motor steps related positioning.

  2. second option would be to 3d print a revolver based turning mechanism which moves constantly at the speed where the camera is able to register the letters and then kick the products out from the revolver sockets.

Is the cam able to recognize the letters when they are upside down?

Just to be clear, the main idea is to build a machine that will be fed cylindrical objects with 10 mm in diameter and about 20 mm length in front of the camera, there will be around 10 different marking variations stamped on to the objects, like BMC; DFG; AEW and i will need to get 4 of those variations sorted to individual bins and the rest of the 6 will go to a separate bin, most prob by falling off the line by gravity.

Hope someone will take the time to expand the OpenMV fan base by including me and giving a bit of advice.

Thanks in advance,

K

Hi, the thing that will work the best if you can attach apriltags or qrcodes to the productions and then sort using these. They are much easier for machine vision cameras to detect. If you switch to using those then the main problems you will encounter will be related to optics. Focusing on such small parts will be hard.

Um, typically, what you want to do is is the realm of very high end professional camera systems… how close can you mount the camera? That will make this easier.

Hi, the thing that will work the best if you can attach apriltags or qrcodes to the productions and then sort using these. They are much easier for machine vision cameras to detect. If you switch to using those then the main problems you will encounter will be related to optics. Focusing on such small parts will be hard.

Um, typically, what you want to do is is the realm of very high end professional camera systems… how close can you mount the camera? That will make this easier.

Hi,

As the products is fed on to the belt or into the revolver sockets, i can put a 1 mm polycarbonade clear glass in front of the camera. So the product will be fed into the same distance from the camera, 3 to 30 mm stable spacing between the lens is doable with ease.

I see. So, you should mock up a system with the camera and see if you can resolve good picture quality with how you want to mount it. Please find the right optics that work for you. Once you can get good images you can then work on the vision code part. If you can’t get good images first then there’s not much you can do.

OK. Lets assume that the visual side will be ok, the camera will be able to capture a good image and the products will be recognized. What would You recommend coding/hardware wise. The motor that drives the belt for example, what would make more sense, servo or stepper and what would be more logical to code.
If the product is recognized, track the belt driver motor steps amount X, after that enable I/O output Nr1 for 0,5sec.
Or wait for the servo to turn 457 degrees or pulses then enable IO output Nr1 ?

Will it be able to code it as i want, constant movement on the line and then I/O s will be enabled according to captured recognitions down the line?

Hi, if the motor control needs to be really precise we recommend using an Arduino to sync up.

We’re working on an interface library to connect the OpenMV Cam to the Arduino which will be out soon to make this easy to hookup.

If motor control isn’t that precise and can be done after taking a picture you can have the OpenMV Cam do eveything.