问题1
[rosbuild] Building package ORB_SLAM-master
[rosbuild] Error from directory check: /opt/ros/kinetic/share/ros/core/rosbuild/bin/check_same_directories.py/home/windistance/program/ORB_SLAM2/Examples/ROS/ORB_SLAM2
Traceback (most recent call last):
File "/opt/ros/kinetic/share/ros/core/rosbuild/bin/check_same_directories.py", line 46, in
raise Exception
Exception
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/private.cmake:102 (message):
[rosbuild] rospack found package "ORB_SLAM2" at "", but the current
directory is "/home/windistance/program/ORB_SLAM2/Examples/ROS/ORB_SLAM2". You should
double-check your ROS_PACKAGE_PATH to ensure that packages are found in the
correct precedence order.
Call Stack (most recent call first):
/opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:177 (_rosbuild_check_package_location)
CMakeLists.txt:4 (rosbuild_init)
-- Configuring incomplete, errors occurred!
See also "/home/windistance/program/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/CMakeFiles/CMakeOutput.log".
-
解决方案为
gedit ~/.bashrc
在.bashrc 末尾添加:
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/windistance/program/ORB_SLAM2/Examples/ROS/ORB_SLAM2
source ~/.bashrc
问题2
[ 0%] Built target rospack_genmsg_libexe
[ 0%] Built target rosbuild_precompile
[ 22%] Built target Mono
[ 33%] Linking CXX executable ../RGBD
[ 44%] Linking CXX executable ../Stereo
[ 77%] Built target MonoAR
/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/RGBD.dir/build.make:213: recipe for target '../RGBD' failed
make[2]: *** [../RGBD] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/Stereo.dir/build.make:213: recipe for target '../Stereo' failed
make[2]: *** [../Stereo] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
-
出错原因为:libboost_system.so 与libboost_filesystem.so找不到链接目录
-
解决方案为
locate boost_system //查找位置 /usr/lib/x86_64-linux-gnu/libboost_system.a /usr/lib/x86_64-linux-gnu/libboost_system.so /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 locate boost_filesystem //查找位置 /usr/lib/x86_64-linux-gnu/libboost_filesystem.a /usr/lib/x86_64-linux-gnu/libboost_filesystem.so /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
将libboost_system.so与libboost_filesystem.so复制到ORB_SLAM2/lib下,并且将ORBSLAM2/Examples/ROS/ORBSLAM2下的Cmakelists.txt中加入库目录,或者直接把查找到的路径加到库目录
set(LIBS ${OpenCV_LIBS} ${EIGEN3_LIBS} ${Pangolin_LIBRARIES} ${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so ${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so /usr/lib/x86_64-linux-gnu/libboost_system.so /usr/lib/x86_64-linux-gnu/libboost_filesystem.so )
再次编译,问题解决:
[ 0%] Built target rospack_genmsg_libexe [ 0%] Built target rosbuild_precompile [ 11%] Linking CXX executable ../Mono [ 22%] Linking CXX executable ../RGBD [ 33%] Linking CXX executable ../Stereo [ 44%] Linking CXX executable ../MonoAR [ 55%] Built target RGBD [ 66%] Built target Mono [ 88%] Built target MonoAR [100%] Built target Stereo
问题3
安装pangolin
CMake Error at CMakeModules/FindEigen.cmake:33 (file):
file failed to open for reading (No such file or directory):
/usr/include/eigen3/Eigen/src/Core/util/Macros.h
Call Stack (most recent call first):
CMakeModules/FindEigen.cmake:57 (_eigen3_check_version)
tools/CMakeLists.txt:11 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/windistance/下载/Pangolin/build/CMakeFiles/CMakeOutput.log".
-
出错原因为:找不到eigen
-
解决方案为
sudo cp -r /usr/local/include/eigen3 /usr/include
重新编译问题解决