1.g2o
旧版本的安装g2o(经过我的测试,这个版本没有错,但是这个版本在运行十四讲代码时会报错,所以可以安装14讲的版本)
a.下载源码
十四讲的版本或 https://codeload.github.com/RainerKuemmerle/g2o/zip/refs/tags/20200410_git
安装依赖: sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
b.编译
$ cd g2o $ mkdir build $ cd build $ sudo ldconfig $ cmake . . $ make -j4 //安装 $ sudo make install :编译前必须进入build,进行sudo ldconfig 参考博客: 博客 安装后应配置,否则操作程序会出现以下错误 解决办法: sudo gedit /etc/ld.so.conf 添加以下代码: /usr/local/lib 终端运行: sudo ldconfig
sudo rm -r /usr/local/lib/libg2o* /usr/local/include/g2o /usr/local/lib/g2o /usr/local/bin/g2o*
2.安装更新版本cmake(如需)
a.查看当前版本
cmake --version
b.卸载cmake
(安装ros时可跳过) sudo apt remove cmake 注:如果在此步骤中安装了它ros系统,提示会卸载很多和ros相关的cmake可能导致文件ros不能用,跳过这一步。
c.下载更高版本cmake
可在cmake官网下载,
d.安装cmake
(1)将cmake-3.xx.x.tar.gz解压 (2)原版cmake删除执行文件 cd /usr/bin/ sudo rm cmake (3)将cmake-3.16.8.tar.gz提取安装 cd cmake-3.16.8 ./configure make sudo make install cmake --version
问题:bash: /usr/bin/cmake: 没有文件或目录 因为直接使用cmake系统回到默认/usr/bin但是src中安装的cmake是在/usr/local/bin所以当然找不到。解决方案:
做一个链接:ln -s /usr/local/bin/cmake /usr/bin 然后使用/usr/local/bin/cmake进行编译。 参考博客: 1.博客1 2.博客2
3.ceres(1.14版本)
a.先删除以前的ceres-solver:
sudo rm -r /usr/local/lib/cmake/Ceres sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a sudo rm -r /usr/local/share/Ceres
b.安装依赖
// 安装依赖 $ sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev 在Ubuntu18.04上面安装libcxsparse3.1.2.如果安装失败,可以改为libcxsparse3
c.下载ceres-solver-1.14.0
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
d.解压
tar xvf ceres-solver-1.14.0.tar.gz
e.编译
cd ceres-solver-1.14.0 mkdir build cd build cmake . . make -j4 make test sudo make install 参考博客: 1.博客1 2.博客2 3.博客3
4.sophus
用14讲第二版中新版本 cd Sophus- mkdir build cd build cmake . . make sudo make install 参考博客: 博客
5.fmt(如需)
// 克隆源码 $ git clone https://github.com/fmtlib/fmt.git
// 编译及安装 $ mkdir build $ cd build $ cmake . . $ make $ sudo make install
6.Geographic
// 需要自己下载源码 下载地址: https://sourceforge.net/projects/geographiclib/
// 解压并进入文件夹 $ cd GeographicLib-1.51
// 编译及安装 $ mkdir build $ cd build $ cmake . . $ make $ sudo make install
7.gflags(如需)
// 克隆源码 $ git clone https://github.com/gflags/gflags
// 解压并进入文件夹 $ cd gflags
// 编译及安装 $ mkdir build $ cd build $ cmake . . //★★★如果下一个glog编译报错,讲cmake …更改成 cmake … -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC … ★★★ $ make $ sudo make install
8.glog (如需)
// 克隆源码 $ git clone https://github.com/google/glog
// 安装以来 $ sudo apt-get install autoconf automake libtool
// 配置 $ ./autogen.sh $ ./configure
// 编译及安装 $ mkdir build $ cd build $ cmake . . $ make $ sudo make install
9.gtsam
// 克隆源码&自行下载 $ https://github.com/borglab/gtsam/archive/4.0.2.zip
// 解压并进入文件夹 $ unzip gtsam-4.0.2.zip $ cd gtsam-4.0.2
// 编译及安装 $ mkdir build $ cd build $ cmae -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF … $ sudo make install
10.Protobuf
源码地址 需要googletest
这个库我到目前为止还没装好,因为ros安装完之后会自动安装一个3.0.0版本的protobuf,但我自己删除了(结果gazebo不能用了),重新安装了3.14版本的,因为课程中说用的是3.14版本的,但我装完之后编译代码的时候会报错 我对比了ros自带的protobuf,结果发现文件里确实有FindProtobuf.cmake文件,但我当时已经删除了,我现在还不知道是什么原因。
最新的发现,用ros自带的protobuf好使,不需要重新下载,不要轻易卸载ros自带的库,不然会出现意想不到的错误。
目前我的/usr/local/include目录如下图所示: 库的版本:pip list (系统自带) pkg-config opencv --modversion sudo cat /usr/local/include/ceres/version.h (系统自带) gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h或者 dpkg -s libeigen3-dev | grep Version