Linux下非线性求解库ceres-solver安装与使用
1、安装
官方指导网站如下: 链接: link.
其中的第一项 Installation 中已说明安装所依赖的环境,ubuntu中按其中的指令即可完成安装
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
sudo apt-get install libsuitesparse-dev
git clone https://github.com/ceres-solver/ceres-solver.git
tar zxf ceres-solver-2.0.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.0.0
make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install
但我使用的是CentOS6.8,还得先安装apt-get,折腾了好久没搞定,最终选用了在github中下载源码安装,期间遇到了CentOS6.8更新yum源和gcc版本老旧的问题,在下面网址找到的解决方法 链接: link. 链接: link.
一步步安装完依赖后,执行到make -j3时一直有报错解决不了,参考其他答案说更换其他版本可能解决问题,于是更换成1.13版本果真安装成功,ceres-solver1.13版本如下 链接: link.
安装成功后可在build/lib目录下找到静态库libceres.a
2、使用
我所使用的环境为CentOS6.8 QT, 在新工程中使用ceres-solver库需要包含以下头文件: 以下库: 其中的gcc库是因为我在编译时报了相关gcc的错,于是在Linux中找到对应的库包含进来,解决报错,当遇到omp库报错时则需在工程makefile中加上两句指令 依赖eigen3比较旧的版本可能会出现错误: /usr/local/include/eigen3/Eigen/src/Core/products/Parallelizer.h:162:40: error: ‘eigen_assert_exception’ is not a member of ‘Eigen’ if (errorCount) EIGEN_THROW_X(Eigen::eigen_assert_exception()); 根据以下链接可解决问题: 链接: link. 至此环境就配置完成了,如出现另外报错则相应去解决。
3、示例程序
ceres-solver求解非线性模型及非线性最小二乘问题可参考如下两篇博客 链接: link. 链接: link.
|