Added option to save pointclouds in binary and binary compressed format

This commit is contained in:
Mitchell Wills 2015-02-16 17:57:55 -05:00 committed by Paul Bovbel
parent d7adb41971
commit 10727ec650

View File

@ -63,6 +63,8 @@ class PointCloudToPCD
private:
std::string prefix_;
bool binary_;
bool compressed_;
public:
string cloud_topic_;
@ -86,12 +88,30 @@ class PointCloudToPCD
ss << prefix_ << cloud->header.stamp << ".pcd";
ROS_INFO ("Data saved to %s", ss.str ().c_str ());
pcl::io::savePCDFile (ss.str (), *cloud, Eigen::Vector4f::Zero (),
Eigen::Quaternionf::Identity (), false);
pcl::PCDWriter writer;
if(binary_)
{
if(compressed_)
{
writer.writeBinaryCompressed (ss.str (), *cloud, Eigen::Vector4f::Zero (),
Eigen::Quaternionf::Identity ());
}
else
{
writer.writeBinary (ss.str (), *cloud, Eigen::Vector4f::Zero (),
Eigen::Quaternionf::Identity ());
}
}
else
{
writer.writeASCII (ss.str (), *cloud, Eigen::Vector4f::Zero (),
Eigen::Quaternionf::Identity (), 8);
}
}
////////////////////////////////////////////////////////////////////////////////
PointCloudToPCD ()
PointCloudToPCD () : binary_(false), compressed_(false)
{
// Check if a prefix parameter is defined for output file names.
ros::NodeHandle priv_nh("~");
@ -105,6 +125,24 @@ class PointCloudToPCD
<< prefix_);
}
priv_nh.getParam ("binary", binary_);
priv_nh.getParam ("compressed", compressed_);
if(binary_)
{
if(compressed_)
{
ROS_INFO_STREAM ("Saving as binary compressed PCD");
}
else
{
ROS_INFO_STREAM ("Saving as binary PCD");
}
}
else
{
ROS_INFO_STREAM ("Saving as binary PCD");
}
cloud_topic_ = "input";
sub_ = nh_.subscribe (cloud_topic_, 1, &PointCloudToPCD::cloud_cb, this);