-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rosmake errors #2
Comments
The first problem is related to SSE, dvo uses it in several places. What CPU do you have? The SSE support is detected in dvo_core/CMakeLists.txt using rosbuild_check_for_sse() I don't know if it is still supported in Groovy. The second problem seems to be that TransformTFToEigen is in Groovy now lower case transformTFToEigen, replacing all occurences should solve the problem. |
The CPU is Intel i5. Here's the info for one of the processors: processor : 0 Looks like sse and sse2 are enabled. |
BTW the second problem was fixed by replacing Transform with transform. Thanks. |
I guess you can replace ${SSE_FLAGS} in the cmakelists with -msse3 for now |
I still get the same error with -msse3. |
Can you add these flags to the dvo_ros cmakelists as well (copy the 4 lines from dvo_core) |
OK rosmake completes successfully in groovy now. Here is what one needs to do:
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO Thanks Christian! Hui |
Turns out we can't close this thread yet. When I set the ros_build_type to debug, I get the following compilation errors. /home/xylo/workspace/dvo/dvo_core/src/core/rgbd_image_sse.cpp:214:9: error: ‘interpolateBilinearWithDepthBufferSse’ was not declared in this scope And if I just ignore them and run camera_tracker, once run_dense_tracking is selected, seg fault happens, when executing this line "__m128i _inputi = _mm_load_si128((__m128i*) input_ptr);" from SurfacePyramid::convertRawDepthImageSse. Still sse related... Thoughts? Thanks a lot! Hui |
for the debug build type the sse flags are not enabled, you have to add a set(CMAKE_CXX_FLAGS_DEBUG to CMakeLists.txt, maybe there is a way in cmake to set these flags for all build types |
Oops, forgot about the flags. |
can you start it in the debugger, i.e., roscd dvo_ros and tell me where the segfault occurs |
Program received signal SIGSEGV, Segmentation fault. |
hm, there seems to be a problem in converting the raw depth image to float. can you please remove the -O3 flag for the Debug build and build+debug again, so we can get the exact line? and can you post the content of one image message published by the openni node (all fields except the data). In the debugger type "bt" to get a stacktrace and maybe include it as well. thanks. |
This is from the topic /camera/depth/image: header: And from the topic /camera/depth/image_raw: header: Output from the debugger (with -O3 removed, and bt): "Program received signal SIGSEGV, Segmentation fault.
Thanks! |
hm slowly I'm running out of ideas. Can you first of all replace the call to convertRawDepthImageSse(...) in dvo_ros/src/camera_tracker.cpp with convertRawDepthImage(...). If this is working, change back to the SSE version and add the following line to the function in dvo_core/src/core/surface_pyramid.cpp: std::cerr << (((unsigned long)input_ptr) & 15 == 0) ? "pointer is aligned" : "pointer is not aligned" << std::endl; and report the output. |
Continued... #25 0xb7d44598 in message_filters::SimpleFilter<sensor_msgs::Image_<std::allocator > >::signalMessage(ros::MessageEvent<sensor_msgs::Image_<std::allocator > const> const&) () |
Using convertRawDepthImage(): Program received signal SIGSEGV, Segmentation fault. |
ok somehow all the SSE functions are not working for you. Can you please add the output testing whether the pointer is aligned or not (see my last comment)? |
Build error after adding the output testing: /home/xylo/workspace/dvo/dvo_core/src/core/surface_pyramid.cpp: In static member function ‘static void dvo::core::SurfacePyramid::convertRawDepthImageSse(const cv::Mat&, cv::Mat&, float)’: |
ok I shouldn't program without compiling at least once :) this should work: bool aligned = (((unsigned long)input_ptr) & 15) == 0; |
pointer is not aligned |
ok so this is the problem, does this also happen with -O2 or -O3? which gcc version do you use? |
I use 4.6.3. |
And the same with -O2 or -O3. |
I have the same gcc version, when I run "make VERBOSE=1" in dvo_core I get the following gcc call for the surface_pyramid.cpp: Building CXX object CMakeFiles/dvo_core.dir/src/core/surface_pyramid.o can you compare the flags to yours, I guess you don't have -mfpmath=sse ? seems like something enables aligned memory allocation in fuerte rosbuild by default and this piece is missing in your case... |
I don't have -mfpmath=sse. Building CXX object CMakeFiles/dvo_core.dir/src/core/surface_pyramid.cpp.o |
And adding the flag in cmakelist doesn't help. |
hm, I'm somewhat out of ideas :( what is your opencv version? some things you can try (involving some hacking):
sorry for all the trouble |
opencv 2.4.5 I'll give them a try. Thanks Christian :) |
Hi |
1 similar comment
Hi |
I had the same issue 3 years ago, and spent hours on trying to fix it. Wish I could be of more help |
Hello,
I use groovy, and with rosmake dvo_ros, I get the following errors. Any idea? Thanks!
[ 33%] Building CXX object CMakeFiles/dvo_ros.dir/src/camera_dense_tracking.cpp.o
In file included from /home/xylo/workspace/dvo/dvo_core/include/dvo/core/surface_pyramid.h:24:0,
from /home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp:27:
/usr/lib/gcc/i686-linux-gnu/4.6/include/mmintrin.h:32:3: error: #error "MMX instruction set not enabled"
In file included from /home/xylo/workspace/dvo/dvo_core/include/dvo/core/surface_pyramid.h:25:0,
from /home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp:27:
/usr/lib/gcc/i686-linux-gnu/4.6/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled"
In file included from /home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp:33:0:
/home/xylo/workspace/dvo/dvo_ros/include/dvo_ros/util/util.h: In function ‘void dvo_ros::util::tryGetTransform(Eigen::Affine3d&, tf::TransformListener&, std::string, std::string, double)’:
/home/xylo/workspace/dvo/dvo_ros/include/dvo_ros/util/util.h:57:3: error: ‘TransformTFToEigen’ is not a member of ‘tf’
/home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp: In member function ‘void dvo_ros::CameraDenseTracker::handlePose(const PoseWithCovarianceStampedConstPtr&)’:
/home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp:176:3: error: ‘TransformTFToEigen’ is not a member of ‘tf’
/home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp: In member function ‘void dvo_ros::CameraDenseTracker::publishTransform(const Header&, const Affine3d&, std::string)’:
/home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp:317:3: error: ‘TransformEigenToTF’ is not a member of ‘tf’
/home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp: In member function ‘void dvo_ros::CameraDenseTracker::publishPose(const Header&, const Affine3d&, std::string)’:
/home/xylo/workspace/dvo/dvo_ros/src/camera_dense_tracking.cpp:336:3: error: ‘TransformEigenToTF’ is not a member of ‘tf’
/home/xylo/workspace/dvo/dvo_core/include/dvo/core/datatypes.h: At global scope:
/home/xylo/workspace/dvo/dvo_core/include/dvo/core/datatypes.h:32:28: warning: ‘dvo::core::Invalid’ defined but not used [-Wunused-variable]
/home/xylo/workspace/dvo/dvo_core/include/dvo/core/datatypes.h:35:24: warning: ‘dvo::core::InvalidDepth’ defined but not used [-Wunused-variable]
make[3]: *** [CMakeFiles/dvo_ros.dir/src/camera_dense_tracking.cpp.o] Error 1
make[3]: Leaving directory `/home/xylo/workspace/dvo/dvo_ros/build'
make[2]: *** [CMakeFiles/dvo_ros.dir/all] Error 2
Hui
The text was updated successfully, but these errors were encountered: