swatbotics / apriltags-cpp

C++ port of the AprilTags library, using OpenCV (and optionally, CGAL)
110 stars 89 forks source link

Problems with ROS Kinetic and OpenCV3 #9

Open rshanor opened 7 years ago

rshanor commented 7 years ago

52d849f6-7d8e-11e6-980c-5927dcea8b5b

mzucker commented 7 years ago

I'm not running ROS Kinetic, and I don't use this package on a GPU-enabled PC. Can you get a stack trace from a debugger to find out where in our code the crash is actually happening?

kubark42 commented 7 years ago

I see this same GPU error. It's on an Intel Joule, so no CUDA or GPU enabling. Moreover, this seems like a ROS problem only since I can run apriltags-cpp on an OpenCV stream.

It looks like the ROS version is trying to grab some OpenCV 3 stuff, even though it was compiled against OpenCV 2. This might be because it's pulling in dependencies from OCV3 through CMakeLists.txt.

Stack dump follows:

(gdb) bt
#0  0x00007f657fa620da in cv::_InputArray::getMat_(int) const ()
   from /opt/ros/kinetic/lib/libopencv_core3.so.3.1
#1  0x00007f6580bc750f in cv::adaptiveThreshold(cv::_InputArray const&, cv::_OutputArray const&, double, int, int, int, double) () from /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.1
#2  0x00007f657e47caf1 in TagDetector::getQuads_MZ (this=this@entry=0x1419420, images=..., 
    quads=std::vector of length 0, capacity 0)
    at /home/cyphy/Documents/apriltags-cpp/src/TagDetector.cpp:363
#3  0x00007f657e47e609 in TagDetector::process (this=0x1419420, orig=..., 
    opticalCenter=..., detections=std::vector of length 0, capacity 0)
    at /home/cyphy/Documents/apriltags-cpp/src/TagDetector.cpp:1511
#4  0x00000000004603ca in ImageCallback(boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&) ()
#5  0x00000000004793eb in boost::detail::function::void_function_invoker1<void (*)(boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&), void, boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&>::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&) ()
#6  0x00007f655c3a1a99 in image_transport::RawSubscriber::internalCallback(boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&, boost::function<void (boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&)> const&) ()
   from /opt/ros/kinetic/lib//libimage_transport_plugins.so
#7  0x00007f657f2efbac in boost::detail::function::void_function_obj_invoker1<boost::function<void (boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&)>, void, boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> >::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const>) () from /opt/ros/kinetic/lib/libimage_transport.so
#8  0x00007f655c3a9623 in ros::SubscriptionCallbackHelperT<boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&, void>::call(ros::SubscriptionCallbackHelperCallParams&) () from /opt/ros/kinetic/lib//libimage_transport_plugins.so
#9  0x00007f657f0575cd in ros::SubscriptionQueue::call() ()
   from /opt/ros/kinetic/lib/libroscpp.so
#10 0x00007f657f001cf0 in ros::CallbackQueue::callOneCB(ros::CallbackQueue::TLS*) ()
   from /opt/ros/kinetic/lib/libroscpp.so
#11 0x00007f657f0030f3 in ros::CallbackQueue::callAvailable(ros::WallDuration) ()
   from /opt/ros/kinetic/lib/libroscpp.so
#12 0x00007f657f05b691 in ros::SingleThreadedSpinner::spin(ros::CallbackQueue*) ()
   from /opt/ros/kinetic/lib/libroscpp.so
#13 0x00007f657f04072b in ros::spin() () from /opt/ros/kinetic/lib/libroscpp.so
#14 0x0000000000464618 in main ()
davelkan-zz commented 7 years ago

any progress on this?