3

For a company I need to make a conveyor belt with a camera to identify the objects that pass along (and to pick up these objects with a robot).

They insist to use C#, as it is the company guidelines. Currently I've already coded on how to read the objects and then I (for now) manually export the point cloud to .XYZ format (it seems the easiest format).

The objects are recognizable, so I would like to go to the next step: identifying the objects.

But I am stuck on how to go further. I would like to match the object scanned with an object in my database. When googling I find PCL (Point Cloud Library), but it only works in C++

Are there any alternatives for PCL that are ready to use? I am new to programming so it will be almost impossible for me to translate PCL from C++ to C#.

Any help will be greatly appreciated.

Please keep in mind: I am only a mechanical engineering student and I just recently taught myself the basics of C# for this project.

anderas
  • 5,744
  • 30
  • 49
Nvdk
  • 31
  • 2

1 Answers1

0

You have multiple options. As you said, you are using a camera, so you have a 2D image. But PCL is for working with 3D point clouds. You'd better go for image 2D descriptors like SIFT or SURF.

But if the objects are easily recognizable like a black circle or rectangle within a white background, you can do it with corner descriptors and then find the matching of corners of the current image of the camera and the database image.

At the end, if you would like to work with PCL, you can use it inside your C# code. The only thing to do is to create a wrapper. It is not that much hard. A wrapper is a just an intermediate project which let's you call c++ functions from within your C# code. Here you can find a simple tutorial.

There is also a program that le's a wrapper automatically: A Code Generator for Creating Two-Ways Bridges between Native World and .NET World. But I have not used it.