PCL graph-based registration

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view

PCL graph-based registration

Dear pcl developers,

recently I added few classes to the registration module
related to graph-based registration. I've already had a
feedback from Jochen and now I'd want to hear your comments,
so that I could correct what's wrong and add new features.

- First, a brief overview:

The core class is GraphRegistration, which adds a new vertex to the graph
when the user calls addPointCloud (). Then, the registration of the graph is
implemented in computeRegistration () by the concrete subclasses,
e.g. PairwiseGraphRegistration.
I think that now ELCH and LUM could derive from GraphRegistration.

The graph is managed by GraphHandler and it is basically
a boost::graph (see http://www.boost.org/doc/libs/1_44_0/libs/graph/doc/index.html)
with some more requirements (maybe too much??).
The global optimization is performed by a concrete subclass of GraphOptimizer.

- Now, some observations:

1) GraphRegistration doesn't subclass PCLBase, mainly because the latter
works on one single input, while the former on a sequence of clouds.
Possible solutions:
  * make a lighter version of PCLBase w/o members and derive both PCLBase
and GraphRegistration from that
  * don't care about that - GraphRegistration is somehow the "PCLBase" class
for graph-based registration classes.

2) Do we need GraphOptimizer? Could we perform all the numerical stuffs into
GraphRegistration? Actually, I think that GraphOptimizer could be use
to better define how the numerical optimization should be performed:
for instance, a user-defined graph could be populated by GraphRegistration,
but you need a user-defined GraphOptimizer to optimize it!

3) Do we need GraphHandler? Could we simply typedef the required boost::graph
functions into the PCL namespace?


PCL-developers mailing list
[hidden email]
Reply | Threaded
Open this post in threaded view

Re: PCL graph-based registration

This post has NOT been accepted by the mailing list yet.
Dear Nicola,

I'm using your implementation for GraphRegistration. Firstly, Thank you very much for giving it to the community, all this effort is very appreciated. I only wanted to say, that it would be nice if the class was a more commented. I couldn't found in the API (http://docs.pointclouds.org/trunk/classpcl_1_1_graph_registration.html#details) any information about the template arguments of the class. Fortunately, I was able to found this post and other references. However, adding some lines in the comments of the class might be useful. Also, in the begging is not very clear the procedure to use it. I think that doxygen allows you to insert pieces of code as examples (As in the LUM API page http://docs.pointclouds.org/trunk/classpcl_1_1registration_1_1_l_u_m.html#details).

Thank you very much again,

Pablo R.S.