PointT cleanup

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

PointT cleanup

Radu B. Rusu
Administrator
In light of the new awesome changes (see
http://point-cloud-library-pcl-mailing-list.967500.n3.nabble.com/no-commit-tc2026681.html#none :) ), I think it's time
to have a discussion about the various different PointT types that PCL should support natively.

A reason to compact them (though this is _not_ the aim necessarily - we don't want to sacrifice functionality just
because GCC is memory/CPU hungry), is the following:

template class pcl::SegmentDifferences<pcl::PointXYZ>;
template class pcl::SegmentDifferences<pcl::PointXYZI>;
template class pcl::SegmentDifferences<pcl::PointXYZRGBA>;
template class pcl::SegmentDifferences<pcl::PointXYZRGB>;
template class pcl::SegmentDifferences<pcl::InterestPoint>;
template class pcl::SegmentDifferences<pcl::PointNormal>;
template class pcl::SegmentDifferences<pcl::PointXYZRGBNormal>;
template class pcl::SegmentDifferences<pcl::PointXYZINormal>;
template class pcl::SegmentDifferences<pcl::PointWithRange>;
template class pcl::SegmentDifferences<pcl::PointWithViewpoint>;

All point types supported that contain XYZ data need to be instantiated like that.

So, do we need:

  * PointXYZRGB ? It has rgb as a float. If we make sure that our XYZ+RGB producers change to uint32 (see PointXYZRGBA),
can we remove this?

  * PointXYZRGBNormal + PointXYZINormal - in which situations do we need XYZ, RGB, and normals in the same point type?
For what operations I mean. Is this because we don't want to pass PointXYZRGBA/PointXYZI + Normal separately?


If the above are used heavily, then of course, it doesn't make sense to remove them. It does make sense to think
carefully though whenever we add new point types that represent the same thing. For example adding a pcl::Narf36 makes a
lot of sense as it's a brand new point type representing a new feature. However, it shouldn't make sense to add
pcl::PointXYZIRGBANormalRange :)

Thanks,
Radu.
--
http://pointclouds.org
_______________________________________________
[hidden email] / http://pointclouds.org
https://code.ros.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: PointT cleanup

Dejan Pangercic
Hi Radu,
>  * PointXYZRGB ? It has rgb as a float. If we make sure that our XYZ+RGB producers change to uint32 (see PointXYZRGBA),
> can we remove this?
When you say "producers", who or what exactly do you refer to?
Otherwise I am in favor of  proposed change.

>  * PointXYZRGBNormal + PointXYZINormal - in which situations do we need XYZ, RGB, and normals in the same point type?
> For what operations I mean. Is this because we don't want to pass PointXYZRGBA/PointXYZI + Normal separately?
In our case we are just developing a brand new descriptor that is
based on ColorCHLAC (makes living off of RGB field) and GRSD (needs
XYZ and Normal) and it is just very convenient to get one PointCloud
with all necessary fields in your callback and then compute the whole
descriptor in one loop. Having received all these point types
separately and then concatenating them is probably not hard to
implement but just less convenient.


cheers, d.
--
MSc. Dejan Pangercic
PhD Student/Researcher
Intelligent Autonomous Systems Group
Technische Universität München
Telephone: +49 (89) 289-26908
E-Mail: [hidden email]
WWW: http://ias.cs.tum.edu/people/pangercic
_______________________________________________
[hidden email] / http://pointclouds.org
https://code.ros.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: PointT cleanup

Radu B. Rusu
Administrator


On 12/07/2010 03:28 PM, Dejan Pangercic wrote:
> Hi Radu,
>>   * PointXYZRGB ? It has rgb as a float. If we make sure that our XYZ+RGB producers change to uint32 (see PointXYZRGBA),
>> can we remove this?
> When you say "producers", who or what exactly do you refer to?
> Otherwise I am in favor of  proposed change.

Producers = camera/laser drivers, etc.

>
>>   * PointXYZRGBNormal + PointXYZINormal - in which situations do we need XYZ, RGB, and normals in the same point type?
>> For what operations I mean. Is this because we don't want to pass PointXYZRGBA/PointXYZI + Normal separately?
> In our case we are just developing a brand new descriptor that is
> based on ColorCHLAC (makes living off of RGB field) and GRSD (needs
> XYZ and Normal) and it is just very convenient to get one PointCloud
> with all necessary fields in your callback and then compute the whole
> descriptor in one loop. Having received all these point types
> separately and then concatenating them is probably not hard to
> implement but just less convenient.

Sounds good. Let's keep this one if it's useful.

Cheers,
Radu.
--
http://pointclouds.org
_______________________________________________
[hidden email] / http://pointclouds.org
https://code.ros.org/mailman/listinfo/pcl-users