I am getting a similar segfault error in convertCloudToArray. I am
working on Ubuntu 10.10, 64-bit. I am using the latest libpcl-dev
installed from binaries. The same code ran ok when I used the
perception_pcl ros stack instead.
Below is the code I'm running
void pointCloudCallback(const sensor_msgs::PointCloud2::ConstPtr& cloud_in_msg)
{
PointCloudT::Ptr cloud_in_ptr = boost::make_shared<PointCloudT>();
pcl::fromROSMsg(*cloud_in_msg, *cloud_in_ptr);
pcl::IterativeClosestPoint<PointT, PointT> reg;
pcl::KdTreeFLANN<PointT>::Ptr tree =
boost::make_shared<pcl::KdTreeFLANN<PointT> > ();
reg.setRadiusSearch<PointT>(tree, 0.20, "f");
reg.setTransformationEpsilon (icp_tf_epsilon_);
reg.setMaxCorrespondenceDistance (icp_max_corresp_dist_);
reg.setMaximumIterations (icp_max_iterations_);
reg.setInputCloud (cloud_in_ptr);
reg.setInputTarget (cloud_in_ptr);
}
The call to setInputCloud produces this error:
Program received signal SIGSEGV, Segmentation fault.
0x01bdf3e7 in pcl::KdTreeFLANN<pcl::PointXYZRGB>::convertCloudToArray(pcl::PointCloud<pcl::PointXYZRGB>
const&) ()
from /usr/local/lib/libpcl_kdtree.so.1
This is the backtrace from gdb:
#0 0x01bdf3e7 in
pcl::KdTreeFLANN<pcl::PointXYZRGB>::convertCloudToArray(pcl::PointCloud<pcl::PointXYZRGB>
const&) ()
from /usr/local/lib/libpcl_kdtree.so.1
#1 0x01befb64 in
pcl::KdTreeFLANN<pcl::PointXYZRGB>::setInputCloud(boost::shared_ptr<pcl::PointCloud<pcl::PointXYZRGB>
const> const&, boost::shared_ptr<std::vector<int, std::allocator<int>
> const> const&) ()
from /usr/local/lib/libpcl_kdtree.so.1
#2 0x0806e243 in pcl::Registration<pcl::PointXYZRGB,
pcl::PointXYZRGB>::setInputTarget(boost::shared_ptr<pcl::PointCloud<pcl::PointXYZRGB>
const> const&) ()
#3 0x0805f266 in
kinect_pose_est::KinectPoseEst::pointCloudCallback(boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void>
> const> const&) ()
#4 0x08067d15 in
boost::detail::function::void_function_obj_invoker1<boost::function<void
()(boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> >
const> const&)>, void,
boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> >
const> >::invoke(boost::detail::function::function_buffer&,
boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> >
const>) ()
#5 0x08067dc9 in
ros::SubscriptionCallbackHelperT<boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void>
> const> const&,
void>::call(ros::SubscriptionCallbackHelperCallParams&) ()
#6 0x00d85b72 in ros::SubscriptionQueue::call (this=0xb4702840)
at /tmp/buildd/ros-diamondback-ros-comm-1.4.6/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/subscription_queue.cpp:164
#7 0x00dca34a in ros::CallbackQueue::callOneCB (this=0x8098010, tls=0xb4703080)
at /tmp/buildd/ros-diamondback-ros-comm-1.4.6/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/callback_queue.cpp:381
#8 0x00dcaa3f in ros::CallbackQueue::callAvailable (this=0x8098010,
timeout=...)
at /tmp/buildd/ros-diamondback-ros-comm-1.4.6/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/callback_queue.cpp:333
#9 0x00dd1010 in ros::SingleThreadedSpinner::spin (this=0xbfffe63c,
queue=0x8098010)
at /tmp/buildd/ros-diamondback-ros-comm-1.4.6/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/spinner.cpp:49
#10 0x00d55859 in ros::spin (s=...)
at /tmp/buildd/ros-diamondback-ros-comm-1.4.6/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/init.cpp:493
#11 0x00d55889 in ros::spin ()
at /tmp/buildd/ros-diamondback-ros-comm-1.4.6/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/init.cpp:488
#12 0x0806f64b in main ()
Thanks,
Ivan