tum-vision / dvo_slam

Dense Visual Odometry and SLAM
632 stars 306 forks source link

libdvo_visualization.so undefined reference to pcl::visualization::PCLVisualizer::createActorFromVTKDataSet #1

Closed lynncodd closed 10 years ago

lynncodd commented 10 years ago

Ubuntu 12.04 LTS ROS Groovy PCL 1.7

I've been able to resolve many of the errors received after running "rosmake dvo_core dvo_ros dvo_slam dvo_benchmark"; however, I cannot seem to resolved this undefined reference.

..... ..... ..... [rosmake-1] Starting >>> dvo_core [ make ]
[rosmake-1] Finished <<< dvo_core [PASS] [ 3.09 seconds ]
[rosmake-1] Starting >>> dvo_ros [ make ]
[ rosmake ] Last 40 lineso_ros: 5.3 sec ] [ 1 Active 63/64 Complete ] {------------------------------------------------------------------------------- cd build && make -j4 -l4 make[1]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[2]: Entering directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 16%] Generating ../cfg/cpp/dvo_ros/dvoConfig.h, ../docs/dvoConfig.dox, ../docs/dvoConfig-usage.dox, ../src/dvo_ros/cfg/dvoConfig.py, ../docs/dvoConfig.wikidoc make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 16%] Built target ROSBUILD_gencfg_cpp make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 16%] Built target rospack_gencfg make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Entering directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 16%] [ 16%] Built target rospack_gencfg_real Built target rospack_genmsg_libexe make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 16%] Built target rosbuild_precompile make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 66%] Built target dvo_ros make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Entering directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[3]: Entering directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' [ 83%] Linking CXX executable ../bin/camera_tracker Built target camera_tracker_nodelet /home/rpslaptop32/ros_workspace/dvo_slam/dvo_core/lib/libdvo_visualization.so: undefined reference topcl::visualization::PCLVisualizer::createActorFromVTKDataSet(vtkSmartPointer const&, vtkSmartPointer&, bool)' collect2: ld returned 1 exit status make[3]: * [../bin/camera_tracker] Error 1 make[3]: Leaving directory `/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[2]: * [CMakeFiles/camera_tracker.dir/all] Error 2 make[2]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' make[1]: **\* [all] Error 2 make[1]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_ros/build' -------------------------------------------------------------------------------} [ rosmake ] Output from build of package dvo_ros written to: [ rosmake ] /home/rpslaptop32/.ros/rosmake/rosmake_output-20131014-143950/dvo_ros/build_output.log
[rosmake-1] Finished <<< dvo_ros [FAIL] [ 5.34 seconds ]
[ rosmake ] Halting due to failure in package dvo_ros. [ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:
[ rosmake ] Built 64 packages with 1 failures.
[ rosmake ] Summary output to directory
[ rosmake ] /home/rpslaptop32/.ros/rosmake/rosmake_output-20131014-143950

Any help would be much appreciated. I've updated all of the CMakeLists.txt to have

find_package(PCL 1.7 REQUIRED) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS})

and added ${PCL_LIBRARIES} to the TARGET_LINK_LIBRARIES.

Thanks in advance! Lynn

christiankerl commented 10 years ago

That's strange. The method is never directly called so some pclvisualizer methods seems to use it internally. As a workaround you can remove src/visualization/pcl_camera_trajetory_visualizer.cpp from the CMakeLists.txt for now as it not used currently.

lynncodd commented 10 years ago

Thank you for your prompt response. That workaround helped me continue past that error. :-)

lynncodd commented 10 years ago

Looks like in the compilation of dvo_benchmark benchmark_slam.cpp and benchmark.cpp both include pcl_camera_trajectory_visualizer.h so with the above workaround, I'm getting any error:

.... .... /home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/src/benchmark_slam.cpp:412:62: warning: ‘graph_visualizer’ may be used uninitialized in this function [-Wuninitialized] /home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/include/dvo_benchmark/tools.h: At global scope: /home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/include/dvo_benchmark/tools.h:34:13: warning: ‘void dvo_benchmark::toPoseTf(const dvo_benchmark::Groundtruth&, tf::Pose&)’ defined but not used [-Wunused-function] /home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/include/dvo_benchmark/tools.h:40:13: warning: ‘void dvo_benchmark::toPoseMsg(const dvo_benchmark::Groundtruth&, geometry_msgs::Pose&)’ defined but not used [-Wunused-function] Linking CXX executable ../bin/benchmark CMakeFiles/benchmark.dir/src/benchmark_slam.cpp.o: In function BenchmarkNode::processInput(dvo::visualization::CameraTrajectoryVisualizerInterface*)': benchmark_slam.cpp:(.text+0x3d2a): undefined reference todvo::visualization::PclCameraTrajectoryVisualizer::visualizer()' benchmark_slam.cpp:(.text+0x445c): undefined reference to dvo::visualization::PclCameraTrajectoryVisualizer::visualizer()' benchmark_slam.cpp:(.text+0x4486): undefined reference todvo::visualization::PclCameraTrajectoryVisualizer::visualizer()' collect2: ld returned 1 exit status make[3]: * [../bin/benchmark] Error 1 make[3]: Leaving directory `/home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/build' make[2]: * [CMakeFiles/benchmark.dir/all] Error 2 make[2]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/build' make[1]: **\* [all] Error 2 make[1]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_benchmark/build' -------------------------------------------------------------------------------} [ rosmake ] Output from build of package dvo_benchmark written to: [ rosmake ] /home/rpslaptop32/.ros/rosmake/rosmake_output-20131015-122809/dvo_benchmark/build_output.log
[rosmake-2] Finished <<< dvo_benchmark [FAIL] [ 23.99 seconds ]
[ rosmake ] Halting due to failure in package dvo_benchmark. [ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:
[ rosmake ] Cleaned 67 packages.
[ rosmake ] Built 67 packages with 1 failures.
[ rosmake ] Summary output to directory
[ rosmake ] /home/rpslaptop32/.ros/rosmake/rosmake_output-20131015-122809

Let me know how you'd like me to handle.

Regards, Lynn

christiankerl commented 10 years ago

commenting the lines involving the pclcameravisualizer should resolve this problem as well

lynncodd commented 10 years ago

Great! I figured that is what you'd probably have me do, but I wasn't sure how important they are to dvo_benchmark. I commented them out and all packages compiled without failure! Thanks!

ltl315 commented 10 years ago

where can I find the PoseStampedArray.h?

when I rosmake dvo_benchmark, I got the following errors:

/home/leon/ros/dvo_slam/dvo_slam/include/dvo_slam/serialization/map_serializer.h:27:82: fatal error: dvo_slam/PoseStampedArray.h: No such file or directory

include <dvo_slam/PoseStampedArray.h>

                                                                                ^

compilation terminated. make[3]: * [CMakeFiles/benchmark.dir/src/benchmark_slam.o] Error 1 make[3]: Leaving directory `/home/leon/ros/dvo_slam/dvo_benchmark/build' make[2]: * [CMakeFiles/benchmark.dir/all] Error 2 make[2]: Leaving directory/home/leon/ros/dvo_slam/dvo_benchmark/build' make[1]: **\* [all] Error 2 make[1]: Leaving directory/home/leon/ros/dvo_slam/dvo_benchmark/build' -------------------------------------------------------------------------------} [ rosmake ] Output from build of package dvo_benchmark written to: [ rosmake ] /home/leon/.ros/rosmake/rosmake_output-20140410-183907/dvo_benchmark/build_output.log
[rosmake-7] Finished <<< dvo_benchmark [FAIL] [ 6.58 seconds ]
[ rosmake ] Halting due to failure in package dvo_benchmark. [ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:
[ rosmake ] Built 43 packages with 1 failures.
[ rosmake ] Summary output to directory

Thanks a lot in advance.