Robotics StackExchange | Archived questions

RGBD Field of View and mesh intersection surface

I'm trying to get the intersection surface area between an RGBD sensor FOV and a mesh model since I want to use these surfaces to fasten the development of reconstruction algorithm and then use the algorithm and apply it in Gazebo simulation

It is similar to the intersection surface of two models as it is shown in the following image link: image link , but instead of the sphere, I have the FOV (Quadrahedron shape) and instead of the cube model, I have another model shape

The blue part of the cube surface shown in the third part of the image is the intersection surface needed to be found

is there a function in PCL or other libraries that can find the intersection surface between a RGBD camera FOV and a mesh model? Could someone point me towards any related things?

Asked by Randa on 2015-08-16 14:38:53 UTC

Comments

Can you illustrate this in a diagram ? What do you mean ?

Asked by Tarek on 2015-08-17 07:13:19 UTC

Answers

How do you define an intersection between a pointcloud and a mesh? A mesh is just a set of points without any structure so the only way to define an intersection would to check which points of the pointcloud are also corners of your mesh that's most probably not what you want.

Could you maybe add an image to show what you mean?

Asked by NEngelhard on 2015-08-17 03:36:19 UTC

Comments

I missed explaining the problem .. I edited my question, I want to use a tool that can find the intersection surface between the FOV of an RGBD camera and a CAD model without using RGBD pointcloud

Asked by Randa on 2015-08-17 04:12:09 UTC

Without delving into math too much, as points in a point cloud do not have a length or area, it is impossible to compute an intersection with a mesh. It sounds like what you want is getting all points of a point cloud that are less than a certain epsilon distance away from the surface of a mesh. I'm not sure there is a implementation available that directly allows for this, but the point-to-plane metric commonly employed when performing ICP is very similar, so having a look at PCL's registration module might be worth a shot.

/edit: After your clarification, it sounds like pcl frustum_culling might be useful. As a polygon mesh in PCL internally uses a point cloud for it's vertices, you should be able to get the vertices inside the Kinect camera frustum by using the frustum culling filter.

Asked by Stefan Kohlbrecher on 2015-08-17 03:40:13 UTC

Comments

I missed explaining the problem .. I edited my question, I want to use a tool that can find the intersection surface between the FOV of an RGBD camera and a CAD model without using RGBD pointcloud

Asked by Randa on 2015-08-17 04:14:30 UTC

See update above.

Asked by Stefan Kohlbrecher on 2015-08-18 01:14:50 UTC

Stefan, does pcl's frustum culling filter all the points inside the frustum volume regardless of their visibility ? Or does it take into consideration any occlusion, and keep only the directly visible points ?

Asked by Tarek on 2015-08-18 10:56:20 UTC

It only uses points, and points do not obstruct each other as they are infinitesimally small. What you can do of course is render the scene from the view point of your Kinect and then process the resulting image in some way. Plus side is that this is super fast as GPUs do that all the time ;)

Asked by Stefan Kohlbrecher on 2015-08-19 04:16:57 UTC

That's a big tricky then. I know gazebo does something similar, I don't know exactly how. I think they get an image rendered from the view point and construct the point cloud. It would be better to utilise an existing tool or library, rather than re-creating this functionality.

Asked by Tarek on 2015-08-20 00:45:31 UTC

Thanks Stefan and Tarek for the suggestions

Asked by Randa on 2015-08-21 07:38:20 UTC

Try http://www.vtk.org/ or http://www.cgal.org/

Asked by Tarek on 2015-08-18 03:02:12 UTC

Comments