笔者最近跑Lio-sam,对imu内参进行标定需要用到ceres库。笔者环境中安装了eigen3.3.4,eigen3.3.2以上可以安装ceres1.14版本,因此笔者从git上下载了ceres1.14,开始了踩坑之旅。

1、源码下载

ceres的git仓库:https://github.com/ceres-solver/ceres-solver

在tag里选择1.14版本下载,找不到tag参照上篇博客里的截图。

2、依赖安装

有些博客会告诉你使用如下命令安装依赖:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev

但是这句命令在ubuntu18.04下会报如下错误:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
E: 无法定位软件包 libcxsparse3.1.2
E: 无法按照 glob ‘libcxsparse3.1.2’ 找到任何软件包
E: 无法按照正则表达式 libcxsparse3.1.2 找到任何软件包

原因是ubuntu18.04中libcxsparse的版本号是3,因此正确命令如下:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

这个库版本号的对应关系如下:

libcxsparse3.1.2————————ubuntu14.04

libcxsparse3.1.4————————ubuntu16.04

libcxsparse3————————————ubuntu18.04

可以在这个网站输入库名查正确的版本:Ubuntu – Ubuntu Packages Search。堪称终极解决方案。

至于其他添加软件源之类的解决办法,经过测试都不可行。

3、ceres编译安装

解压ceres1.14,无所谓在哪个目录下面,进入解压后的文件夹,打开终端做如下操作是最稳妥的:

mkdir build
cd build
cmake ..
make -j3
make test
sudo make install

安装后打开/usr/local/include查看一下是否建立了ceres安装目录,此刻试图编译我要跑的标定包(依赖ceres),终于不报找不到ceres库的错了。下面是踩坑记录:
一开始使用网上的教程编译安装ceres失败,报错如下:

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

    CeresConfig.cmake
    ceres-config.cmake

在系统目录中没有找到ceres的安装目录,判断是安装不成功,多方尝试没有好的解决办法,索性删了安装目录重新装。于是用下面命令安装:

mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/ceres .. #前提是在local下自己建立了一个ceres目录
sudo make install

依然报上面的错误。说明没找到ceres库 ,在包的cmake文件中这样写:

include_directories("/usr/local/ceres/lib/cmake/Ceres") 


set(Ceres_DIR /usr/local/ceres/lib/cmake/Ceres)

报错变成了这样:

In file included from /home/lisheng/catkin_ws/src/loam_livox-master/source/laser_mapping.cpp:37:0:
/home/lisheng/catkin_ws/src/loam_livox-master/source/laser_mapping.hpp:40:10:
fatal error: ceres/ceres.h: 没有那个文件或目录
#include <ceres/ceres.h>
^~~~~~~~~~~~~~~
compilation terminated.

实在不知道哪里出了问题,又删了安装目录用本节开头的步骤重新装,终于没有ceres报错了。

奇怪错误的背后一定有深刻的逻辑,可惜自己还是个菜鸟。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐