hand_interaction unaligned array assertion
I'm trying to run the detecthands (without skeleton) demo from mit-ros-pkg, and while it runs fine on my laptop (running Ubuntu 10.04 for x86_64) it crashes when I run it on the PC on our robot (which runs Ubuntu 10.10 for i686). Both of them have ROS Diamondback installed.
The demo fails by failing an assertion related to Eigen object alignment, which by reading the backtrace seems to correspond to the "Cause 2" in [1]. This is an issue that arises when using STL containers together with fixed-size vectorizable Eigen objects. In this case, it is raised when push back is called on a std::vector<pcl::PointCloud<pcl::PointXYZ> >
, which I guess in turn uses such kind of Eigen objects. See the full gdb backtrace below for more information.
Given the above, I'm not sure if this is an issue that should be treated at the hand_interaction package level or at the pcl package level (or even elsewhere). Any idea or suggestion?
Please ask if I'm missing any important detail.
[1] [Explanation of the assertion on unaligned arrays](http://eigen.tuxfamily.org/dox/UnalignedArrayAssert.html)
Full gdb backtrace:
pre blob time: 0.016093 very few points no hands detected
pre blob time: 0.015678 very few points no hands detected
detecthands: /opt/ros/diamondback/stacks/geometry/eigen/include/Eigen/src/Core/DenseStorage.h:69: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 16>::plain_array() [with T = float, int Size = 4, int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(array) & 0xf) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox/UnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
pre blob time: 0.016067
Program received signal SIGABRT, Aborted.
0x0012e416 in __kernel_vsyscall ()
(gdb) bt
#0 0x0012e416 in __kernel_vsyscall ()
#1 0x02329941 in raise () from /lib/libc.so.6
#2 0x0232ce42 in abort () from /lib/libc.so.6
#3 0x023228e8 in __assert_fail () from /lib/libc.so.6
#4 0x0805cfaf in plain_array (this=0x80d1228) at /opt/ros/diamondback/stacks/geometry/eigen/include/Eigen/src/Core/DenseStorage.h:69
#5 DenseStorage (this=0x80d1228) at /opt/ros/diamondback/stacks/geometry/eigen/include/Eigen/src/Core/DenseStorage.h:105
#6 PlainObjectBase (this=0x80d1228) at /opt/ros/diamondback/stacks/geometry/eigen/include/Eigen/src/Core/PlainObjectBase.h:371
#7 Matrix (this=0x80d1228) at /opt/ros/diamondback/stacks/geometry/eigen/include/Eigen/src/Core/Matrix.h:293
#8 Quaternion (this=0x80d1228) at /opt/ros/diamondback/stacks/geometry/eigen/include/Eigen/src/Geometry/Quaternion.h:231
#9 pcl::PointCloud<pcl::PointXYZ>::PointCloud (this=0x80d1228) at /opt/ros/diamondback/stacks/perception_pcl/pcl/include/pcl/point_cloud.h:81
#10 0x0805fd10 in construct (this=0xbfffee48, __position=..., __x=...) at /usr/include/c++/4.4/ext/new_allocator.h:105
#11 std::vector<pcl::PointCloud<pcl::PointXYZ>, std::allocator<pcl::PointCloud<pcl::PointXYZ> > >::_M_insert_aux (this=0xbfffee48, __position=..., __x=...) at /usr/include/c++/4.4/bits/vector.tcc:330
#12 0x08057403 in push_back (cloud=..., clouds=..., nearcents=...) at /usr/include/c++/4.4/bits/stl_vector.h:741
#13 getNearBlobs2 (cloud=..., clouds=..., nearcents=...) at /home/pekee/ros_overlay ...