ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

PCL filter nodelet crashes [closed]

asked 2012-09-12 11:39:35 -0500

jdlangs gravatar image

updated 2014-01-28 17:13:38 -0500

ngrennan gravatar image

I'm running a sequence of pcl filter nodelets (StatisticalOutlier -> VoxelGrid) and we are seeing frequent, spontaneous crashes. Oddly, it seems only this combination causes the crash, with only a single filter, or the reverse input/output order working fine.

I have a launch and bag file (attached) that produce a crash which has been confirmed on two machines. Provided a sanity check passes, how can I forward this to appropriate place as a bug report?

<launch>
  <node pkg="nodelet" type="nodelet" name="pcl_filter_manager" args="manager"/>

  <!-- Outlier filter -->
  <node pkg="nodelet" type="nodelet" name="outlier_filter"
        args="load pcl/StatisticalOutlierRemoval pcl_filter_manager" >
    <param name="mean_k" type="int" value="2" />
    <param name="stddev" type="double" value="0.2" />
    <param name="negative" type="bool" value="false" />

    <remap from="outlier_filter/input" to="umdetc/cloud" />
    <remap from="outlier_filter/output" to="cloud_filter1" />
  </node>

  <!-- Voxel grid filter -->
  <node pkg="nodelet" type="nodelet" name="voxel_filter"
        args="load pcl/VoxelGrid pcl_filter_manager">
    <param name="leaf_size" type="double" value="0.01" />

    <remap from="voxel_filter/input" to="cloud_filter1" />
    <remap from="voxel_filter/output" to="cloud_filtered"/>
  </node>
</launch>

#0  0xace1346b in flann::KDTreeSingleIndex<flann::L2_Simple<float> >::computeBoundingBox(std::vector<flann::KDTreeSingleIndex<flann::L2_Simple<float> >::Interval, std::allocator<flann::KDTreeSingleIndex<flann::L2_Simple<float> >::Interval> >&) () from /opt/ros/fuerte/lib/libpcl_surface.so.1.5
#1  0xace13585 in flann::KDTreeSingleIndex<flann::L2_Simple<float> >::buildIndex() () from /opt/ros/fuerte/lib/libpcl_surface.so.1.5
#2  0xb42c38f2 in pcl::KdTreeFLANN<pcl::PointXYZ, flann::L2_Simple<float> >::setInputCloud(boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> const> const&, boost::shared_ptr<std::vector<int, std::allocator<int> > const> const&) ()
   from /opt/ros/fuerte/lib/libpcl_kdtree.so.1.5
#3  0xad229e09 in pcl::search::KdTree<pcl::PointXYZ>::setInputCloud(boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> const> const&, boost::shared_ptr<std::vector<int, std::allocator<int> > const> const&) ()
   from /opt/ros/fuerte/lib/libpcl_filters.so.1.5
#4  0xad2acc30 in pcl::StatisticalOutlierRemoval<sensor_msgs::PointCloud2_<std::allocator<void> > >::applyFilter(sensor_msgs::PointCloud2_<std::allocator<void> >&) () from /opt/ros/fuerte/lib/libpcl_filters.so.1.5
#5  0xad1d8e3e in pcl::Filter<sensor_msgs::PointCloud2_<std::allocator<void> > >::filter(sensor_msgs::PointCloud2_<std::allocator<void> >&) ()
   from /opt/ros/fuerte/lib/libpcl_filters.so.1.5
#6  0xad4963ea in pcl_ros::StatisticalOutlierRemoval::filter (this=0x80ca1a0, 
    input=..., indices=..., output=...)
    at /tmp/buildd/ros-fuerte-perception-pcl-1.2.3/debian/ros-fuerte-perception-pcl/opt/ros/fuerte/stacks/perception_pcl/pcl_ros/include/pcl_ros/filters/statistical_outlier_removal.h:79
#7  0xad410c40 in pcl_ros::Filter::computePublish (this=0x80ca1a0, input=..., 
    indices=...)
    at /tmp/buildd/ros-fuerte-perception-pcl-1.2.3/debian/ros-fuerte-perception-pcl/opt/ros/fuerte/stacks/perception_pcl/pcl_ros/src/pcl_ros/filters/filter.cpp:68
#8  0xad411a7a in pcl_ros::Filter::input_indices_callback (this=0x80ca1a0, 
    cloud=..., indices=...)
    at /tmp/buildd/ros-fuerte-perception-pcl-1.2.3/debian/ros-fuerte-perception-pcl/opt/ros/fuerte/stacks/perception_pcl/pcl_ros/src/pcl_ros/filters/filter.cpp:229
#9  0xad413fb3 in operator() (a2=..., p=<optimized out>, this=<optimized out>, 
    a1=...) at /usr/include/boost/bind/mem_fn_template.hpp:280
#10 operator()<boost::_mfi::mf2<void, pcl_ros::Filter, const boost::shared_ptr<const sensor_msgs::PointCloud2_<std::allocator<void> > >&, const boost::shared_ptr<const pcl::PointIndices_<std::allocator<void> > >&>, boost::_bi::list1<const boost::shared_ptr<const sensor_msgs::PointCloud2_<std::allocator<void> > >&> > (
    a=<synthetic ...
(more)
edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by jdlangs
close date 2015-06-24 10:00:14.508283

Comments

Can you provide a backtrace?

dejanpan gravatar image dejanpan  ( 2012-09-12 13:24:43 -0500 )edit

How would I get this? stdout, even with output="screen" on all nodes, shows only the roslaunch notification of a dead process.

jdlangs gravatar image jdlangs  ( 2012-09-13 03:21:50 -0500 )edit

Added. It's crashing in the pcl Outlier filter itself.

jdlangs gravatar image jdlangs  ( 2012-09-13 07:27:35 -0500 )edit

Sorry for a late reply. If you have not been able to resolve the issue, can you please send me a link to the bag file and tell me which version of Ubuntu/ROS/PCL are you using? D.

dejanpan gravatar image dejanpan  ( 2012-09-20 14:35:09 -0500 )edit
jdlangs gravatar image jdlangs  ( 2012-09-24 06:45:40 -0500 )edit

I am using Fuerte on Ubuntu 12.04 and the default install of PCL (1.5). I wasn't able to try 1.6 since the unstable pcl_ros package doesn't include the nodelets. I vaguely remember seeing some crash fixes for KDTree in the 1.6 changelists so maybe this is a non-issue after upgrading

jdlangs gravatar image jdlangs  ( 2012-09-24 06:47:32 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2013-01-23 10:31:56 -0500

dangr gravatar image

I seem to be unable to leave a comment, but I'm having a similar issue. I've traced it to the StatisticalOutlierRemoval filter getting an input of size 0. For some reason this causes the nodelet manager to crash. Using the launch file below, I can trigger a crash by putting my hand in from of an attached sls (Primesense Xtion Pro).

<launch>
  <arg name="device" value="1@3" />
  <node pkg="nodelet" type="nodelet" name="nodelet_manager" 
        args="manager"> 
  </node>
  <node pkg="nodelet" type="nodelet" name="driver" 
        args="load openni_camera/driver nodelet_manager">
    <param name="device_id" value="$(arg device)" />
  </node>
  <node pkg="nodelet" type="nodelet" name="rectify_depth"
        args="load image_proc/rectify nodelet_manager --no-bond">
    <remap from="image_mono"  to="depth/image_raw" />
    <remap from="image_rect"  to="depth/rectified_raw" />
    <param name="interpolation" value="0" />
  </node>
  <node pkg="nodelet" type="nodelet" name="points_xyz"
        args="load depth_image_proc/point_cloud_xyz nodelet_manager --no-bond">
    <remap from="image_rect" to="depth/rectified_raw"/> 
    <remap from="points" to="rectified_points"/>
    <param name="~no_data_depth_in_mm" value="5000" />
  </node>
  <node pkg="nodelet" type="nodelet" name="pointcloud_clipper" 
        args="load pcl/PassThrough nodelet_manager" >
    <remap from="~input" to="rectified_points" />
    <remap from="~output" to="clipped_points" />
    <param name="~filter_field_name" value="z" />
    <param name="~filter_limit_min" value="0.0" />
    <param name="~filter_limit_max" value="1.5" />
    <param name="~input_frame" value="/openni_depth_optical_frame" />
  </node>
  <node pkg="nodelet" type="nodelet" name="outlier_removal" 
        args="load pcl/StatisticalOutlierRemoval nodelet_manager" >
    <remap from="~input" to="clipped_points" />
    <remap from="~output" to="filtered_points" />
    <param name="~stddev" value="1" />
  </node>
</launch>
edit flag offensive delete link more
-1

answered 2012-10-25 01:02:09 -0500

devmax gravatar image

So I'm having the same exact problem with the Alvar AR Tag Detection library..did you end up finding a solution to this?

edit flag offensive delete link more

Comments

Unfortunately, no. We've been able to manage without running the filters. I still think the best chance will be the upgrade to PCL 1.6. Hopefully groovy will do the upgrade as I've noticed other problems with 1.5 besides this one.

jdlangs gravatar image jdlangs  ( 2012-10-25 04:36:33 -0500 )edit

So for me this error pops up when I use the ar_track_alvar on images from my AR Drone. A minimal run of the system causes it, so is there anything you suggest I can do to avoid the error? Thank you so much...

devmax gravatar image devmax  ( 2012-10-25 06:27:49 -0500 )edit
1

We didn't see a crash when we reversed the filter order ( Voxel -> Outlier -> output ). But other than that I have no suggestions but to wait for the pcl upgrades to make it into ROS.

jdlangs gravatar image jdlangs  ( 2012-10-26 09:22:48 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2012-09-12 11:39:35 -0500

Seen: 1,558 times

Last updated: Jan 23 '13