Fixes from converting from pcl-1.7, incomplete

This commit is contained in:
William Woodall 2013-07-08 16:36:28 -07:00 committed by Paul Bovbel
parent 9d08dd5198
commit a931106c5b
11 changed files with 54 additions and 29 deletions

View File

@ -49,6 +49,9 @@
#include <dynamic_reconfigure/server.h> #include <dynamic_reconfigure/server.h>
#include "pcl_ros/FeatureConfig.h" #include "pcl_ros/FeatureConfig.h"
// PCL conversions
#include <pcl_conversions/pcl_conversions.h>
namespace pcl_ros namespace pcl_ros
{ {
namespace sync_policies = message_filters::sync_policies; namespace sync_policies = message_filters::sync_policies;
@ -147,7 +150,7 @@ namespace pcl_ros
input_callback (const PointCloudInConstPtr &input) input_callback (const PointCloudInConstPtr &input)
{ {
PointIndices indices; PointIndices indices;
indices.header.stamp = input->header.stamp; indices.header.stamp = pcl_conversions::fromPCL(input->header).stamp;
PointCloudIn cloud; PointCloudIn cloud;
cloud.header.stamp = input->header.stamp; cloud.header.stamp = input->header.stamp;
nf_pc_.add (cloud.makeShared ()); nf_pc_.add (cloud.makeShared ());

View File

@ -37,8 +37,12 @@
#ifndef pcl_ros_IMPL_TRANSFORMS_H_ #ifndef pcl_ros_IMPL_TRANSFORMS_H_
#define pcl_ros_IMPL_TRANSFORMS_H_ #define pcl_ros_IMPL_TRANSFORMS_H_
#include <pcl_conversions/pcl_conversions.h>
#include "pcl_ros/transforms.h" #include "pcl_ros/transforms.h"
using pcl_conversions::fromPCL;
using pcl_conversions::toPCL;
namespace pcl_ros namespace pcl_ros
{ {
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
@ -99,7 +103,7 @@ transformPointCloudWithNormals (const std::string &target_frame,
tf::StampedTransform transform; tf::StampedTransform transform;
try try
{ {
tf_listener.lookupTransform (target_frame, cloud_in.header.frame_id, cloud_in.header.stamp, transform); tf_listener.lookupTransform (target_frame, cloud_in.header.frame_id, fromPCL(cloud_in.header).stamp, transform);
} }
catch (tf::LookupException &e) catch (tf::LookupException &e)
{ {
@ -133,7 +137,7 @@ transformPointCloud (const std::string &target_frame,
tf::StampedTransform transform; tf::StampedTransform transform;
try try
{ {
tf_listener.lookupTransform (target_frame, cloud_in.header.frame_id, cloud_in.header.stamp, transform); tf_listener.lookupTransform (target_frame, cloud_in.header.frame_id, fromPCL(cloud_in.header).stamp, transform);
} }
catch (tf::LookupException &e) catch (tf::LookupException &e)
{ {
@ -162,7 +166,7 @@ transformPointCloud (const std::string &target_frame,
tf::StampedTransform transform; tf::StampedTransform transform;
try try
{ {
tf_listener.lookupTransform (target_frame, target_time, cloud_in.header.frame_id, cloud_in.header.stamp, fixed_frame, transform); tf_listener.lookupTransform (target_frame, target_time, cloud_in.header.frame_id, fromPCL(cloud_in.header).stamp, fixed_frame, transform);
} }
catch (tf::LookupException &e) catch (tf::LookupException &e)
{ {
@ -177,7 +181,9 @@ transformPointCloud (const std::string &target_frame,
transformPointCloud (cloud_in, cloud_out, transform); transformPointCloud (cloud_in, cloud_out, transform);
cloud_out.header.frame_id = target_frame; cloud_out.header.frame_id = target_frame;
cloud_out.header.stamp = target_time; std_msgs::Header header;
header.stamp = target_time;
cloud_out.header = toPCL(header);
return (true); return (true);
} }
@ -193,7 +199,7 @@ transformPointCloudWithNormals (const std::string &target_frame,
tf::StampedTransform transform; tf::StampedTransform transform;
try try
{ {
tf_listener.lookupTransform (target_frame, target_time, cloud_in.header.frame_id, cloud_in.header.stamp, fixed_frame, transform); tf_listener.lookupTransform (target_frame, target_time, cloud_in.header.frame_id, fromPCL(cloud_in.header).stamp, fixed_frame, transform);
} }
catch (tf::LookupException &e) catch (tf::LookupException &e)
{ {
@ -208,7 +214,9 @@ transformPointCloudWithNormals (const std::string &target_frame,
transformPointCloudWithNormals (cloud_in, cloud_out, transform); transformPointCloudWithNormals (cloud_in, cloud_out, transform);
cloud_out.header.frame_id = target_frame; cloud_out.header.frame_id = target_frame;
cloud_out.header.stamp = target_time; std_msgs::Header header;
header.stamp = target_time;
cloud_out.header = toPCL(header);
return (true); return (true);
} }

View File

@ -46,9 +46,10 @@
#include <sensor_msgs/PointCloud2.h> #include <sensor_msgs/PointCloud2.h>
// PCL includes // PCL includes
#include <pcl/PointIndices.h> #include <pcl_msgs/PointIndices.h>
#include <pcl/ModelCoefficients.h> #include <pcl/ModelCoefficients.h>
#include <pcl/point_types.h> #include <pcl/point_types.h>
#include <pcl_conversions/pcl_conversions.h>
#include "pcl_ros/point_cloud.h" #include "pcl_ros/point_cloud.h"
// ROS Nodelet includes // ROS Nodelet includes
#include <nodelet/nodelet.h> #include <nodelet/nodelet.h>
@ -60,6 +61,8 @@
// Include TF // Include TF
#include <tf/transform_listener.h> #include <tf/transform_listener.h>
using pcl_conversions::fromPCL;
namespace pcl_ros namespace pcl_ros
{ {
//////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////
@ -75,7 +78,7 @@ namespace pcl_ros
typedef PointCloud::Ptr PointCloudPtr; typedef PointCloud::Ptr PointCloudPtr;
typedef PointCloud::ConstPtr PointCloudConstPtr; typedef PointCloud::ConstPtr PointCloudConstPtr;
typedef pcl::PointIndices PointIndices; typedef pcl_msgs::PointIndices PointIndices;
typedef PointIndices::Ptr PointIndicesPtr; typedef PointIndices::Ptr PointIndicesPtr;
typedef PointIndices::ConstPtr PointIndicesConstPtr; typedef PointIndices::ConstPtr PointIndicesConstPtr;
@ -157,7 +160,7 @@ namespace pcl_ros
{ {
if (cloud->width * cloud->height != cloud->points.size ()) if (cloud->width * cloud->height != cloud->points.size ())
{ {
NODELET_WARN ("[%s] Invalid PointCloud (points = %zu, width = %d, height = %d) with stamp %f, and frame %s on topic %s received!", getName ().c_str (), cloud->points.size (), cloud->width, cloud->height, cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName (topic_name).c_str ()); NODELET_WARN ("[%s] Invalid PointCloud (points = %zu, width = %d, height = %d) with stamp %f, and frame %s on topic %s received!", getName ().c_str (), cloud->points.size (), cloud->width, cloud->height, fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName (topic_name).c_str ());
return (false); return (false);
} }

View File

@ -46,7 +46,8 @@
#define PCL_ROS_PUBLISHER_H_ #define PCL_ROS_PUBLISHER_H_
#include <ros/ros.h> #include <ros/ros.h>
#include <pcl/ros/conversions.h> #include <sensor_msgs/PointCloud2.h>
#include <pcl/conversions.h>
namespace pcl_ros namespace pcl_ros
{ {

View File

@ -204,25 +204,25 @@ pcl_ros::Feature::input_surface_indices_callback (const PointCloudInConstPtr &cl
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.", " - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.",
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), cloud_surface->header.stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str (), cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), fromPCL(cloud_surface->header).stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str (),
indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ()); indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ());
else else
NODELET_DEBUG ("[input_surface_indices_callback]\n" NODELET_DEBUG ("[input_surface_indices_callback]\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.", " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.",
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), cloud_surface->header.stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str ()); cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), fromPCL(cloud_surface->header).stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str ());
else else
if (indices) if (indices)
NODELET_DEBUG ("[input_surface_indices_callback]\n" NODELET_DEBUG ("[input_surface_indices_callback]\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.", " - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.",
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ()); indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ());
else else
NODELET_DEBUG ("[input_surface_indices_callback] PointCloud with %d data points, stamp %f, and frame %s on topic %s received.", cloud->width * cloud->height, cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str ()); NODELET_DEBUG ("[input_surface_indices_callback] PointCloud with %d data points, stamp %f, and frame %s on topic %s received.", cloud->width * cloud->height, fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str ());
/// ///
@ -394,9 +394,9 @@ pcl_ros::FeatureFromNormals::input_normals_surface_indices_callback (
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.", " - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.",
getName ().c_str (), getName ().c_str (),
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), cloud_surface->header.stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str (), cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), fromPCL(cloud_surface->header).stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str (),
cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), cloud_normals->header.stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str (), cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), fromPCL(cloud_normals->header).stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str (),
indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ()); indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ());
else else
NODELET_DEBUG ("[%s::input_normals_surface_indices_callback]\n" NODELET_DEBUG ("[%s::input_normals_surface_indices_callback]\n"
@ -404,9 +404,9 @@ pcl_ros::FeatureFromNormals::input_normals_surface_indices_callback (
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.", " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.",
getName ().c_str (), getName ().c_str (),
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), cloud_surface->header.stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str (), cloud_surface->width * cloud_surface->height, pcl::getFieldsList (*cloud_surface).c_str (), fromPCL(cloud_surface->header).stamp.toSec (), cloud_surface->header.frame_id.c_str (), pnh_->resolveName ("surface").c_str (),
cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), cloud_normals->header.stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str ()); cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), fromPCL(cloud_normals->header).stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str ());
else else
if (indices) if (indices)
NODELET_DEBUG ("[%s::input_normals_surface_indices_callback]\n" NODELET_DEBUG ("[%s::input_normals_surface_indices_callback]\n"
@ -414,16 +414,16 @@ pcl_ros::FeatureFromNormals::input_normals_surface_indices_callback (
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.", " - PointIndices with %zu values, stamp %f, and frame %s on topic %s received.",
getName ().c_str (), getName ().c_str (),
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), cloud_normals->header.stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str (), cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), fromPCL(cloud_normals->header).stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str (),
indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ()); indices->indices.size (), indices->header.stamp.toSec (), indices->header.frame_id.c_str (), pnh_->resolveName ("indices").c_str ());
else else
NODELET_DEBUG ("[%s::input_normals_surface_indices_callback]\n" NODELET_DEBUG ("[%s::input_normals_surface_indices_callback]\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n" " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.\n"
" - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.", " - PointCloud with %d data points (%s), stamp %f, and frame %s on topic %s received.",
getName ().c_str (), getName ().c_str (),
cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), cloud->header.stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (), cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), cloud_normals->header.stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str ()); cloud_normals->width * cloud_normals->height, pcl::getFieldsList (*cloud_normals).c_str (), fromPCL(cloud_normals->header).stamp.toSec (), cloud_normals->header.frame_id.c_str (), pnh_->resolveName ("normals").c_str ());
/// ///
if ((int)(cloud->width * cloud->height) < k_) if ((int)(cloud->width * cloud->height) < k_)

View File

@ -37,6 +37,7 @@
#include <sensor_msgs/PointCloud2.h> #include <sensor_msgs/PointCloud2.h>
#include <pcl/common/io.h> #include <pcl/common/io.h>
#include <pcl/point_types.h> #include <pcl/point_types.h>
#include <pcl_conversions/pcl_conversions.h>
#include "pcl_ros/transforms.h" #include "pcl_ros/transforms.h"
#include "pcl_ros/impl/transforms.hpp" #include "pcl_ros/impl/transforms.hpp"

View File

@ -50,6 +50,7 @@ Cloud Data) format.
#include <rosbag/view.h> #include <rosbag/view.h>
#include <pcl/io/io.h> #include <pcl/io/io.h>
#include <pcl/io/pcd_io.h> #include <pcl/io/pcd_io.h>
#include <pcl_conversions/pcl_conversions.h>
#include "pcl_ros/transforms.h" #include "pcl_ros/transforms.h"
#include <tf/transform_listener.h> #include <tf/transform_listener.h>
#include <tf/transform_broadcaster.h> #include <tf/transform_broadcaster.h>

View File

@ -48,9 +48,11 @@
#include <ros/ros.h> #include <ros/ros.h>
#include <sensor_msgs/Image.h> #include <sensor_msgs/Image.h>
#include <sensor_msgs/PointCloud2.h>
#include <pcl/io/io.h> #include <pcl/io/io.h>
#include <pcl/io/pcd_io.h> #include <pcl/io/pcd_io.h>
#include <pcl/point_types.h> #include <pcl/point_types.h>
#include <pcl_conversions/pcl_conversions.h>
/* ---[ */ /* ---[ */
int int
@ -74,7 +76,7 @@ main (int argc, char **argv)
{ {
pcl::toROSMsg (cloud, image); //convert the cloud pcl::toROSMsg (cloud, image); //convert the cloud
} }
catch (std::runtime_error e) catch (std::runtime_error &e)
{ {
ROS_ERROR_STREAM("Error in converting cloud to image message: " ROS_ERROR_STREAM("Error in converting cloud to image message: "
<< e.what()); << e.what());

View File

@ -42,8 +42,11 @@
#include <ros/ros.h> #include <ros/ros.h>
//Image message //Image message
#include <sensor_msgs/Image.h> #include <sensor_msgs/Image.h>
#include <sensor_msgs/PointCloud2.h>
//pcl::toROSMsg //pcl::toROSMsg
#include <pcl/io/pcd_io.h> #include <pcl/io/pcd_io.h>
//conversions from PCL custom types
#include <pcl_conversions/pcl_conversions.h>
//stl stuff //stl stuff
#include <string> #include <string>
@ -59,7 +62,7 @@ public:
{ {
pcl::toROSMsg (*cloud, image_); //convert the cloud pcl::toROSMsg (*cloud, image_); //convert the cloud
} }
catch (std::runtime_error e) catch (std::runtime_error &e)
{ {
ROS_ERROR_STREAM("Error in converting cloud to image message: " ROS_ERROR_STREAM("Error in converting cloud to image message: "
<< e.what()); << e.what());

View File

@ -48,6 +48,7 @@
#include <pcl/io/io.h> #include <pcl/io/io.h>
#include <pcl/io/pcd_io.h> #include <pcl/io/pcd_io.h>
#include <pcl/point_types.h> #include <pcl/point_types.h>
#include <pcl_conversions/pcl_conversions.h>
#include "pcl_ros/publisher.h" #include "pcl_ros/publisher.h"

View File

@ -15,6 +15,8 @@
<buildtool_depend>catkin</buildtool_depend> <buildtool_depend>catkin</buildtool_depend>
<run_depend>pcl_conversions</run_depend>
<run_depend>pcl_msgs</run_depend>
<run_depend>pcl_ros</run_depend> <run_depend>pcl_ros</run_depend>
<export> <export>