一、Lidar
1. fatal error: pcap.h: No such file or directory #include <pcap.h>
1.1 问题描述:缺少该头文件
1.2 解决方法:sudo apt-get install libpcap-dev
2. fatal error: IOError: [Errno 13] Permission denied: ‘/home/gene/.ros/roscore-11311.pid’
2.1 问题描述:该路径下ros文件权限不足。
2.2 解决方法:sudo chmod 777 -R ~/.ros/
3. assets_writer_backpack_3d.launch 3d 不生成ply文件
3.1 问题描述:根据cartograper 运行assets_writer_backpack_2d.launch 经验,运行assets_writer_backpack_3d.launch 应该会生成.ply文件,继而可以生成.pcd文件进行浏览。然,实际的Cartographer功能包 3d 不生成.ply文件。
3.2 解决方法:
- 对比完 2d 3d的相关文件,发现在
assets_writer_backpack_3d.lua
文件中缺少
{
action = "write_ply",
filename = "points.ply",
},
在该文件里添加该语句:
重新编译运行,即可生成3d版的*****.ply文件。
二、slam_14讲
1. /highgui/src/window.cpp:352: error: (-215:Assertion failed)
1.1 问题描述:缺少依赖或者读取文件路径格式/内容错误;
1.2 解决方法:
- 可能1:
sudo apt-get install -y libgtk2.0-dev pkg-config
- 可能2:
修改一下,源代码读取的源文件路径
2. Failed to load module “canberra-gtk-module”
2.1 问题描述:缺少该依赖文件
2.2 解决方法:
sudo apt-get install libcanberra-gtk-module
3. Could not find GLEW
3.1 问题描述:在Cmake Pangolin 库时,出现 Could not find GLEW error
3.2 解决方法:sudo apt install libglew-dev
4. error while loading shared libraries: libpango_core.so:
4.1 问题描述:pangolin 已经编译成功,在运行可执行文件时,报出error:error while loading shared libraries: libpango_core.so: cannot open shared object file: No such file or directory
4.2 解决方法:
在运行./plotTrajectory
程序时,用到了 pangolin相关动态库,但链接器ld提示找不到库文件。ld默认的目录是/lib和/usr/lib,故需要更新链接器:sudo ldconfig
即可。
5. error while loading shared libraries: libg2o_core.so:
5.1 问题描述:在运行 《SLAM_14讲》ch_7 章节 pose_estimation_3d2d 时,总是报error:
5.2 解决方法:
和上面的第4个问题类似,因为自己的 g2o 库是源码安装,而在默认情况下,编译器只会使用 /lib
和 /usr/lib
这两个目录下的库文件,通过源码包进行安装时,如果不指定 --prefix
会将库安装在 /usr/local
目录下,而又没有在文件 /etc/ld.so.conf
中添加 /usr/local/lib
这个目录。这样虽安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。即,系统不知道安装了源码包。ld默认的目录是 /lib
和 /usr/lib
,故需要更新链接器即可:
步骤1: 编辑配置文件 sudo gedit /etc/ld.so.conf
在打开的文件里添加下述路径:
/usr/local/lib
步骤2: 更新链接器sudo ldconfig
6. /sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link
6.1 问题描述:在更新链接器sudo ldconfig
时,总是报不是符号链接:
6.2 解决方法:
步骤1: 建立软连接::
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_ /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.3.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.3.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.3.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
步骤2: 更新链接器sudo ldconfig
即可。
7. undefined reference to fmt::v8::vprint
或 fmt::v10::detail::throw_format_error(char const*)
`
7.1 问题描述:在编译 《SLAM_14讲》ch_5 、ch_7 章节 pose_estimation 部分时,总是报error:
7.2 解决方法:
没有链接fmt库,链接上fmt 库即可解决问题:target_link_libraries(useSophus ${Sophus_LIBRARIES} fmt)
即可。
8. std::bind(&OpticalFlowTracker::calculateOpticalFlow, &tracker, placeholders::_1))
8.1 问题描述:在编译 《SLAM_14讲》ch_8 章节时,总是报error:
- std::bind(&OpticalFlowTracker::calculateOpticalFlow, &tracker, placeholders::_1));
- std::bind(&JacobianAccumulator::accumulate_jacobian, &jaco_accu, std::placeholders::_1));
8.2 解决方法:
自己按照CMakeLists.txt 要求 安装了 opencv4 ,然后相应源文件将CV_GRAY2BGR
改为COLOR_GRAY2BGR
(否则,会报错),并在CMakeLists.txt指定自己的 Opencv4 路径:set(OpenCV_DIR /usr/local/opencv-4.1.1/build)
,顺利编译通过。(网上也有重装 opencv3 来解决问题,因自己的opencv3 是 ros 默认安装的,故未选择重装opencv3)
9. /usr/bin/ld: cannot find -lnvinfer
9.1 问题描述:在ROS 编译时,遇到 /usr/bin/ld: cannot find -lnvinfer:
9.2 解决方法:
这是因为找不到相应的lib文件,以上面的例子来说就是在系统中找不到libnvinfer.so 、libnvinfer_plugin.so
文件。而自己到自己安装的文件路径下有该动态库文件:
但是在 /usr/lib
该路径下无该动态库文件,故需要链接该文件库:
sudo ln -s /usr/local/TensorRT/lib/libnvinfer.so.7.1.3 /usr/lib/libnvinfer.so
sudo ln -s /usr/local/TensorRT/lib/libnvinfer_plugin.so.7.1.3 /usr/lib/libnvinfer_plugin.so
重新编译即可通过。
10. SyntaxError: Non-ASCII character ‘\xe7’
10.1 问题描述:在ROS 中对python 脚本编译时,出现此error
10.2 解决方法:
这是因为编码问题,可能有中文输入,在开头添加** #coding=utf-8 ** ,重新编译ROS即可通过。
11.Unable to locate package libjasper-dev
环境太干净,无法找到一些源的原因,添加该库的源即可
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libtiff4.dev libswscale-dev libjasper-dev
12. Can’t find Google Log (glog)
在编译ceres-solver的时候,报错找不到glog。完整的报错内容如下:
打开ceres-solver的CMakeLists.txt文件,找到报错的位置,然后,在前面加上set(MINIGLOG 1)
(也就是设置MINIGLOG这个变量值为1,这样就可以走if这个分支,就会自动编译miniglog了),如下图所示:
三、系统环境
1. git clone: Failed to connect to github.com port 443:connection timed out
1.1 问题描述:在进行 git clone 时,不知咋回事发现:Failed to connect to github.com port 443: Connection timed out,clone 不下来了,如下图所示:
1.2 解决方法:
在终端输入,配置全局代理,问题即可解决。
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890