ubuntu常见报错&&解决方法(一)——三维重建整理

日期:2021/6/28

1

报错

CMake Error at CMakeLists.txt:7 (find_package): By not providing "FindOpencv.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Opencv", but CMake did not find one.

Could not find a package configuration file provided by "Opencv" with any of the following names:

OpencvConfig.cmake

opencv-config.cmake

Add the installation prefix of "Opencv" to CMAKE_PREFIX_PATH or set "Opencv_DIR" to a directory containing one of the above files. If "Opencv" provides a separate development package or SDK, be sure it has been installed.

解决方法

在终端输入命令:

locate OpenCVConfig.cmake

其中有一个文件位置为:/usr/local/share/OpenCV/OpenCVConfig.cmake

在CmakeLists.txt文件中添加如下语句:

set(OpenCV_DIR /usr/local/share/OpenCV/OpenCVConfig.cmake)

2

报错

CMake Warning (dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as cmake_minimum_required(VERSION 3.12) should be added at the top of the file. The version specified may be lower if you wish to support older CMake versions for this project. For more information run "cmake --help-policy CMP0000". This warning is for project developers. Use -Wno-dev to suppress it.

解决方法

在CmakeLists.txt文件中添加如下语句:

cmake_minimum_required(VERSION 3.12)

3

在终端输入如下命令:cmake ..

会有如下提示:Found OpenCV: /usr/local (found version "4.1.1")

从中可以看出,系统最先找到的是高版本的opencv.

4

报错

make时出现如下错误:

#error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

原因分析

在CmakeLists.txt文件中语句set(CMAKE_CXX_FLAGS "-std=c++11")的CMAKE_CXX_FLAGS 和"-std=c++11"之间缺少空格。

5

报错

解决方法

mkdir build

cd build

cmake ..

make

sudo make install

报错

运行sudo make install出现问题:

CMake Error at cmake_install.cmake:64 (file): file cannot create directory: /usr/local/include/sophus. Maybe need administrative privileges.

解决方法

在/usr/local/include处建立文件夹sophus,再次执行sudo make install即可。

日期:2021/6/28

1

报错

CMakeFiles/joinMap.dir/joinMap.o:在函数‘showPointCloud(std::vector<Eigen::Matrix<double, 6, 1, 0, 6, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 1, 0, 6, 1> > > const&)’中:

joinMap.cpp:(.text+0xbb5):对‘pangolin::CreateWindowAndBind(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, pangolin::Params const&)’未定义的引用

joinMap.cpp:(.text+0xc52):对‘pangolin::ModelViewLookAt(double, double, double, double, double, double, double, double, double)’未定义的引用

joinMap.cpp:(.text+0xcc4):对‘pangolin::ProjectionMatrix(int, int, double, double, double, double, double, double)’未定义的引用

joinMap.cpp:(.text+0xce4):对‘pangolin::OpenGlRenderState::OpenGlRenderState(pangolin::OpenGlMatrix const&, pangolin::OpenGlMatrix const&)’未定义的引用

joinMap.cpp:(.text+0xd18):对‘pangolin::Handler3D::Handler3D(pangolin::OpenGlRenderState&, pangolin::AxisDirection, float, float)’未定义的引用

joinMap.cpp:(.text+0xd6b):对‘pangolin::CreateDisplay()’未定义的引用

joinMap.cpp:(.text+0xdaa):对‘pangolin::View::SetBounds(pangolin::Attach, pangolin::Attach, pangolin::Attach, pangolin::Attach, double)’未定义的引用

joinMap.cpp:(.text+0xdb5):对‘pangolin::View::SetHandler(pangolin::Handler*)’未定义的引用

joinMap.cpp:(.text+0xdc1):对‘pangolin::ShouldQuit()’未定义的引用

joinMap.cpp:(.text+0xdef):对‘pangolin::View::Activate(pangolin::OpenGlRenderState const&) const’未定义的引用

joinMap.cpp:(.text+0xfc6):对‘pangolin::FinishFrame()’未定义的引用

CMakeFiles/joinMap.dir/joinMap.o:在函数‘pangolin::_CheckGlDieOnError(char const*, int)’中:

joinMap.cpp:(.text._ZN8pangolin18_CheckGlDieOnErrorEPKci[_ZN8pangolin18_CheckGlDieOnErrorEPKci]+0x23):对‘pangolin::glErrorString(unsigned int)’未定义的引用

CMakeFiles/joinMap.dir/joinMap.o:在函数‘pangolin::GlTexture::~GlTexture()’中:

joinMap.cpp:(.text._ZN8pangolin9GlTextureD2Ev[_ZN8pangolin9GlTextureD5Ev]+0x2a):对‘pangolin::ShouldQuit()’未定义的引用

CMakeFiles/joinMap.dir/joinMap.o:在函数‘pangolin::Handler::~Handler()’中:

joinMap.cpp:(.text._ZN8pangolin7HandlerD2Ev[_ZN8pangolin7HandlerD5Ev]+0xf):对‘vtable for pangolin::Handler’未定义的引用

CMakeFiles/joinMap.dir/joinMap.o:(.data.rel+0x0):对‘vtable for pangolin::Handler’未定义的引用

CMakeFiles/joinMap.dir/joinMap.o:(.data.rel+0x8):对‘vtable for pangolin::HandlerScroll’未定义的引用

CMakeFiles/joinMap.dir/joinMap.o:在函数‘pangolin::HandlerScroll::~HandlerScroll()’中:

joinMap.cpp:(.text._ZN8pangolin13HandlerScrollD2Ev[_ZN8pangolin13HandlerScrollD5Ev]+0xf):对‘vtable for pangolin::HandlerScroll’未定义的引用

collect2: error: ld returned 1 exit status

CMakeFiles/joinMap.dir/build.make:341: recipe for target 'joinMap' failed

make[2]: *** [joinMap] Error 1

CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/joinMap.dir/all' failed

make[1]: *** [CMakeFiles/joinMap.dir/all] Error 2

Makefile:83: recipe for target 'all' failed

make: *** [all] Error 2

原因分析

CmakeLists.txt文件中关于 pangolin的部分写错了

解决方法

正确书写:

#pangolin

find_package(Pangolin)

include_directories( ${Pangolin_INCLUDE_DIRS} )

add_executable(joinMap joinMap.cpp)

target_link_libraries(joinMap ${OpenCV_LIBS} ${PCL_LIBRARIES} ${Pangolin_LIBRARIES})

2

报错

实践:拼接点云

运行程序:./joinMap

运行结果:

转换图像中: 1

转换图像中: 2

转换图像中: 3

转换图像中: 4

转换图像中: 5

点云共有0个点.

Point cloud is empty!

原因分析

运行程序时需要将pose文件和rgbd图片放到build文件夹中,也就是与joinMap放在一起。

日期:2021/6/30

今日任务——配置ros-realsense

1

报错

CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by “cv_bridge” with any of the following names:

cv_bridgeConfig.cmake
cv_bridge-config.cmake

解决方法

下载vision_opencv包并编译

git clone https://github.com/ros-perception/vision_opencv.gitcd vision_opencv/cv_bridgesudo mkdir buildcd buildcmake ..make make install

过程中报错

(1)CMake Error at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message): Unable to find the requested Boost libraries.
Boost version: 1.58.0
Boost include path: /usr/include
Could not find the following Boost libraries boost_python37
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.
Call Stack (most recent call first):
CMakeLists.txt:12 (find_package)

解决方法

1)安装boost库:

https://blog.csdn.net/zym1348010959/article/details/87821713

2)修改CMakeLists.txt文件
删除掉第12行:find_package(Boost REQUIRED python37),修改为:

set(boost_DIR /home/ouc/install/boost_1_69_0),后面是你安装的boost库所在路径。

(2)make 66%时出现问题

解决方法

修改/home/sun/version_opencv/cv_bridge/src/module.hpp(根据自己的路径),将最后一段(36~40)行改为

static void do_numpy_import( )

{

import_array( );

}

(一定要保证一模一样,void后面的*都要去掉)

2

报错

下载ros-realsense并且编译出现问题一,但是通过上述方式解决问题一之后,进行catkin_make时依然找不到cv_bridge。

解决方法

在CMakelist中set一下路径,找到该文件:

3

报错

catkin_make时还报了一个错误:缺少ros-kinetic-ddynamic-reconfigure包。

解决方法

通过sudo apt-get install ros-kinetic-ddynamic-reconfigure命令来进行安装,但是由于网络问题无法安装,此时可以采用从其他电脑复制的方式,但是该方法费事费力而且容易有遗漏,一定要谨慎。

日期:2021/7/1

1

报错

运行命令pip3 install pyrealsense2来安装python接口的时候,出现如下错误:

Traceback (most recent call last):

File "/home/sun/.local/bin/pip3", line 7, in <module>

from pip._internal.cli.main import main

File "/home/sun/.local/lib/python3.5/site-packages/pip/_internal/cli/main.py", line 60

sys.stderr.write(f"ERROR: {exc}")

^

SyntaxError: invalid syntax

解决方法

wget https://bootstrap.pypa.io/pip/3.5/get-pip.py

python3 get-pip.py

注意:wget https://bootstrap.pypa.io/pip/{version}/get-pip.py中的version需要修改成对应的版本号。

2

报错

/home/sun/ORB_SLAM2/Thirdparty/g2o/g2o/types/../cor/openmp_mutex.h:30:26: fatal error: ../../config.h: 没有那个文件或目录 compilation terminated.

CMakeFiles/ORB_SLAM2.dir/build.make:62: recipe for target 'CMakeFiles/ORB_SLAM2.dir/src/System.cc.o' failed

make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/System.cc.o] Error 1 CMakeFiles/Makefile2:183: recipe for target'CMakeFiles/ORB_SLAM2.dir/all' failed

make[1]: *** [CMakeFiles/ORB_SLAM2.dir/all] Error 2

Makefile:83: recipe for target 'all' failed

make: *** [all] Error 2

解决方法

这是因为g2o没有编译完整,进入ORB_SLAM2文件夹,重新执行 ./build.sh

日期:2021/7/2

1

报错

orb_slam2运行./build_ros.sh的时候出现如下错误:

/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:198: recipe for target '../RGBD' failed

make[2]: *** [../RGBD] Error 1

CMakeFiles/Makefile2:72: 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:198: recipe for target '../Stereo' failed

make[2]: *** [../Stereo] Error 1

CMakeFiles/Makefile2:109: recipe for target 'CMakeFiles/Stereo.dir/all' failed

make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2

/usr/bin/ld: warning: libboost_filesystem.so.1.58.0, needed by /opt/ros/kinetic/lib/libroscpp.so, may conflict with libboost_filesystem.so.1.69.0

[ 55%] Built target Mono

/usr/bin/ld: warning: libboost_filesystem.so.1.58.0, needed by /opt/ros/kinetic/lib/libroscpp.so, may conflict with libboost_filesystem.so.1.69.0

[ 77%] Built target MonoAR

Makefile:129: recipe for target 'all' failed

make: *** [all] Error 2

原因分析

libboost_system.so libboost_filesystem.so找不到链接目录

解决方法

libboost_system.solibboost_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

之后加入${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so ${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so

问题得以解决

此时会出现另一个报错

[ 0%] Built target rospack_genmsg_libexe

[ 0%] Built target rosbuild_precompile

make[2]: *** No rule to make target '../../../../lib/libboost_filesystem.so', needed by '../RGBD'。 停止。

make[2]: *** No rule to make target '../../../../lib/libboost_filesystem.so', needed by '../Mono'。 停止。

CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/RGBD.dir/all' failed

make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2

make[1]: *** 正在等待未完成的任务....

CMakeFiles/Makefile2:723: recipe for target 'CMakeFiles/Mono.dir/all' failed

make[1]: *** [CMakeFiles/Mono.dir/all] Error 2

make[2]: *** No rule to make target '../../../../lib/libboost_filesystem.so', needed by '../Stereo'。 停止。

CMakeFiles/Makefile2:109: recipe for target 'CMakeFiles/Stereo.dir/all' failed

make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2

make[2]: *** No rule to make target '../../../../lib/libboost_filesystem.so', needed by '../MonoAR'。 停止。

CMakeFiles/Makefile2:825: recipe for target 'CMakeFiles/MonoAR.dir/all' failed

make[1]: *** [CMakeFiles/MonoAR.dir/all] Error 2

Makefile:129: recipe for target 'all' failed

make: *** [all] Error 2

解决方法

/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0复制到ORB_SLAM2/lib,其他无需修改,问题解决。

2

报错

orbslam2依赖cv_bridge,但是它不存在。

解决方法

sudo apt-get install ros-kinetic-vision-opencv

3

ros使用realsense

sudo apt-get install ros-kinetic-rgbd-launch

roscore

roslaunch realsense2_camera rs_rgbd.launch

rivz

roslaunch realsense2_camera rs_camera.launch

roslaunch realsense2_camera rs_camera.launch filters:=pointcloud

左上角 Displays Fixed Frame 选项中,下拉菜单选择 camera_link,这时注意到Global Status变成了绿色

点击该框中的Add -> 上方点击 By topic -> /depth_registered 下的 /points 下的/PointCloud2;

点击该框中的Add -> 上方点击 By topic -> /color 下的 /image_raw 下的image

报错

如果不安装ros-kinetic-rgbd-launch,直接运行roslaunch realsense2_camera rs_rgbd.launch会出现如下错误

... logging to /home/sun/.ros/log/4da6ae40-db13-11eb-8c0e-b42e9916f18d/roslaunch-sun-Z370P-D3-14811.log

Checking log directory for disk usage. This may take awhile.

Press Ctrl-C to interrupt

Done checking log file disk usage. Usage is <1GB.

Traceback (most recent call last):

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 308, in main

p.start()

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 268, in start

self._start_infrastructure()

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 217, in _start_infrastructure

self._load_config()

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 132, in _load_config

roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 451, in load_config_default

loader.load(f, config, verbose=verbose)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 750, in load

self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 722, in _load_launch

self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 656, in _recurse_load

default_machine, is_core, verbose)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 686, in _recurse_load

val = self._include_tag(tag, context, ros_config, default_machine, is_core, verbose)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 95, in call

return f(*args, **kwds)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 589, in _include_tag

inc_filename = self.resolve_args(tag.attributes['file'].value, context)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 183, in resolve_args

return substitution_args.resolve_args(args, context=context.resolve_dict, resolve_anon=self.resolve_anon)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 370, in resolve_args

resolved = _resolve_args(resolved, context, resolve_anon, commands)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 383, in _resolve_args

resolved = commands[command](resolved, a, args, context)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 151, in _find

source_path_to_packages=source_path_to_packages)

File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 197, in _find_executable

full_path = _get_executable_path(rp.get_path(args[0]), path)

File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 207, in get_path

raise ResourceNotFound(name, ros_paths=self._ros_paths)

ResourceNotFound: rgbd_launch

ROS path [0]=/opt/ros/kinetic/share/ros

ROS path [1]=/home/sun/orbslam_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2

ROS path [2]=/home/sun/orbslam_ws/src

ROS path [3]=/home/sun/realsense_ws/src

ROS path [4]=/opt/ros/kinetic/share

日期:2021/7/10

今日任务——编译openmvs

1

报错

生成 OpenMVS 库文件:sudo make -j2 && sudo make install的时候报错,报错是关于boost的,解决方法是升级boost==1.6.3

在升级boost的时候,在升级完成之后,执行dpkg -S /usr/include/boost/version.hpp时,运行结果如下:

dpkg-query:警告:无法找到软件包 libeigen3-dev 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。

libboost1.58-dev:amd64: /usr/include/boost/version.hpp

从上面可以看出,boost的版本似乎还是1.58,但是在实际编译的时候检测到的boost版本已经变成了1.63.0,因此上面的结果不需要care.

日期:2021/9/28

今日任务——编译Surgical_Scene_Reconstructor

1

报错

CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):

Could not find a package configuration file provided by "usb_cam" with any of the following names:

usb_camConfig.cmake

usb_cam-config.cmake

Add the installation prefix of "usb_cam" to CMAKE_PREFIX_PATH or set

"usb_cam_DIR" to a directory containing one of the above files. If

"usb_cam" provides a separate development package or SDK, be sure it has

been installed.

Call Stack (most recent call first):

Surgical_Scene_Reconstructor/CMakeLists.txt:10 (find_package)

-- Configuring incomplete, errors occurred!

See also "/home/sun/surgical_ws/build/CMakeFiles/CMakeOutput.log".

See also "/home/sun/surgical_ws/build/CMakeFiles/CMakeError.log".

Makefile:320: recipe for target 'cmake_check_build_system' failed

make: *** [cmake_check_build_system] Error 1

Invoking "make cmake_check_build_system" failed

解决方法

sudo apt-get install ros-kinetic-usb-cam

2

报错

CMake Error at /opt/ros/kinetic/share/pcl_ros/cmake/pcl_rosConfig.cmake:113 (message):

Project 'pcl_ros' specifies '/usr/include/eigen3' as an include dir, which is not found. It does neither exist as an absolute directory nor in

'${{prefix}}//usr/include/eigen3'. Check the issue tracker

'https://github.com/ros-perception/perception_pcl/issues' and consider

creating a ticket if the problem has not been reported yet.

Call Stack (most recent call first):

/opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:76 (find_package)

Surgical_Scene_Reconstructor/CMakeLists.txt:10 (find_package)

-- Configuring incomplete, errors occurred!

See also "/home/sun/surgical_ws/build/CMakeFiles/CMakeOutput.log".

See also "/home/sun/surgical_ws/build/CMakeFiles/CMakeError.log".

Invoking "cmake" failed

解决方法

1)sudo locate eigen3定位eigen3的所在位置;

2)sudo cp -r /usr/local/include/eigen3 /usr/include复制eigen3一份到要求的位置。

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔子的倔强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值