由于本人实在是懒得学习,所以一直拖到大年初三才开始继续,,
不过还是先再次祝各位,新年快乐!!!
以下为正文:
版本:Ubuntu20.04+ros-noetic+gnuplot-5.0.5
在运行imu_tk时,出现了好多错误
问题1:QT5core、QT5gui等问题
![](https://img-blog.csdnimg.cn/direct/af4b0a70f1e142d7bb003fc9deb644a2.png)
Could not find a package configuration file provided by "Qt5Qtcore" withany of the following names:
Qt50tcoreconfig.cmake
gt5qtcore-config.cmake
Add the installation prefix of "ot50tcore" to CMAKE PREFIX PATH or set"Qt5QtCore DIR" to a directory containing
在我的CMakeList.txt文件中,默认使用的QT为qt4版本,而我用的是qt5,所以需要修改qt的版本至qt5,然而,改完之后再次编译会发现qt5core问题,好说,看下面这一行:
find_package(Qt5 COMPONENTS Core Gui Widgets OpenGL REQUIRED)
需要将这一行这样改,为什么?这里有一些大佬们的讨论,概况一下就是版本问题,因为QT5版本与QT4版本对库的链接用法有不少区别,所以需要按照这样进行修改,但是注意!!还没改完全,我个人只知道是QT5的问题,只改了这一行会报更多的错,于是无奈网上一顿好找,终于找到一个按照qt5修改好的版本,链接中的代码可直接复制粘贴,亲测好用:适用qt5版本的CMakeLists.txt文件
好了,到此,总算是能往下顺利的编译几行了。。
想了解版本问题的同学这边请:qt4到qt5的版本问题以及链接办法
问题2:std命名空间成员问题
error: ‘exclusive_scan’ is not a member of ‘std’
260 | std::exclusive_scan(values.begin(), values.end(), result.begin(), 0);
/usr/local/include/ceres/product_manifold.h:309:59: error: expected constructor, destructor, or type conversion before ‘;’ token
309 | ld<Manifold0, Manifold1, Manifolds...>;
这个大家应该都熟悉了,C++版本问题,只需要在CMakeLists中加一行:
SET( CMAKE_CXX_FLAGS "-std=c++17 -O3")
然后再次make即可顺利通过!
注意:imu_tk是cmake工程,需要按照cmake工程的编译方式进行编译,用ros的catkin_make编译不出来可执行文件,如下图:
![](https://img-blog.csdnimg.cn/direct/8cca8e2130424b2c9d35768d55c8478c.png)
问题3:Eigen找不到
原因是Eigen的头文件是存放在/usr/include/eigen3/Eigen/下的,代码中#include<Eigen/core>这样找不到对应的头文件,所以需要手动在CMakeLists.txt中添加一行:
include_directories("/usr/include/eigen3")
还有其他解决办法,见参考博客
问题4:gnuplot not found
数据哗哗的往下算,但是到最后显示找不到gnuplot,即没有这个工具,需要安装一下:
我首先是安装这个博客进行安装的:gnuplot安装
但是在make和 make install的时候会出现权限不够的情况,于是我开启了su权限再试,发现出现了更多权限问题,无法写入巴拉巴拉一堆问题,我感觉应该是我把东西弄复杂了,但是我已经下载了gnuplot的包并且解压了,后面的步骤没有权限进行,我打算试试最简单的办法:
sudo apt-get install gnuplot
安装好后,我啥也没管,直接编译(编译imu_tk这个模块)运行,还真就成功了(玄学??)
个人理解是,gnuplot并不像其他工具包那样需要链接来使用,它只是一个工具,就像电脑上的软件,下载下来就直接打开就好,所以下载好之后可以直接使用它(理解有限,若有误希望大佬们多多指正)。
至此,imu_tk就顺利编译运行啦,这一章主要是进行imu的标定,至于使用解析法,后面第二遍再说。。
再次,祝大家,新年快乐!!!!!!!!!!!!!