7 int pcd_save_interval = 0;
8 std::string target_frame;
9 private_nh.
param<
int>(
"pcd_save_interval", pcd_save_interval, 0);
10 private_nh.
param<std::string>(
"target_frame", target_frame,
"toposens");
16 if (pcd_path_ ==
"") pcd_path_ = std::string(get_current_dir_name()) +
"/" +
"toposens.pcd";
23 store_ = boost::make_shared<XYZINCloud>();
25 store_->header.frame_id = target_frame;
37 ROS_WARN(
"No pointcloud data to save.");
48 catch (pcl::io::IOException &e)
58 for (
auto it = msg->points.begin(); it != msg->points.end(); ++it)
60 pcl::PointXYZINormal pt = *it;
61 store_->points.push_back(pt);
Timer createTimer(Rate r, Handler h, Obj o, bool oneshot=false, bool autostart=true) const
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
void _accumulate(const XYZINCloud::ConstPtr &msg)
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val) const
void toPCL(const ros::Time &stamp, std::uint64_t &pcl_stamp)
ros::Subscriber cloud_sub_
static const std::string kPointCloudTopic
Logging(ros::NodeHandle nh, ros::NodeHandle private_nh)
void save(const ros::TimerEvent &event)
int savePCDFile(const std::string &file_name, const sensor_msgs::PointCloud2 &cloud, const Eigen::Vector4f &origin=Eigen::Vector4f::Zero(), const Eigen::Quaternionf &orientation=Eigen::Quaternionf::Identity(), const bool binary_mode=false)
boost::mutex store_mutex_