因为项目需要所以要安装cartographer,最开始也没仔细研究一下,随便找了一个csdn教程就跟着安装了,装了一下午,总是在最后编译的时候出错,晚上的时候心态崩了,咸鱼上找了个远程安装的,他好像是用小鱼的那个脚本安装,装了一个小时也没安装好。不死心的我又去咸鱼上找人,然后开口要两千块,两千块装一个cartographer家人们,看到这个价格突然就觉得我自己能装好了,连夜看了好多教程,最终参考了以下两位大神的教程,真的很感谢!!!
1、http://t.csdnimg.cn/CRLp8(解决好GitHub下载速度慢的问题)
2、http://t.csdnimg.cn/U24Oh(主要是参考这个教程安装的)
3、请注意:成功是有条件的,也就是你的melodic安装已完毕,并且rosdep update成功,才能使用该教程
前期准备
想要成功安装我觉得的先知道cartographer包含什么,需要什么依赖,以及他们之间有没有什么版本要求。
经过我这两天的摸爬滚打我了解到:cartographer所依赖库有abseil-cpp、ceres-solver、protobuf,此外运行cartographer_ros还需要将cartographer包安装到系统里。通俗点来说就是要先把三个依赖库安装好,然后单独建一个工作空间cato_ws然后在里面下载cartographer、cartographer_ros,最后编译即可。
然后一定要保证ceres_slover下载1.13.0版本的,还有就是ceres_slover安装会和Eigen库有关系,Ceres 1.13.0 推荐与 Eigen 3.3.3 及更高版本配合使用。
你可以通过下面的代码检查一下自己的Eigen库的版本,像我之前的库是3.4.0版本的,为了配合Ceres 1.13.0我卸载了它,重新安装了3.3.7版本的。
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h | grep "#define EIGEN_WORLD_VERSION"
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h | grep "#define EIGEN_MAJOR_VERSION"
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h | grep "#define EIGEN_MINOR_VERSION"
一、卸载Eigen库3.4.0流程
sudo rm -rf /usr/local/include/eigen3
二、安装Eigen库3.3.7流程
1、下载Eigen 3.3.7版本的源码
wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
2、解压下载的压缩包:
tar -xvzf eigen-3.3.7.tar.gz cd eigen-3.3.7
3、运行以下命令安装Eigen 3.3.7:
mkdir build
cd build
cmake ..
sudo make install
4、这几步结束后你可以再看一下自己Eigen库的版本
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h | grep "#define EIGEN_WORLD_VERSION"
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h | grep "#define EIGEN_MAJOR_VERSION"
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h | grep "#define EIGEN_MINOR_VERSION"
三、然后因为我之前装了两三次都没有装好,为了防止abseil-cpp、ceres-solver、protobuf之间互相干扰,需要手动删除系统里面的abseil-cpp、ceres-solver、protobuf。
1、手动删除 abseil-cpp 文件
删除 /usr/local/include 中的 absl 文件夹
sudo rm -rf /usr/local/include/absl
删除 /usr/local/lib 下的 absl 相关文件,列出所有 absl 相关的库文件
ls /usr/local/lib | grep absl
删除这些文件,例如:
sudo rm /usr/local/lib/libabsl*.a
sudo rm /usr/local/lib/libabsl*.so
删除 /usr/local/lib/cmake/absl 文件夹(如果存在):
sudo rm -rf /usr/local/lib/cmake/absl
删除 /usr/local/share/absl 文件夹(如果存在):
sudo rm -rf /usr/local/share/absl
有时,安装过程中可能会有其他路径的文件。你可以使用 find 命令查找所有 abseil 相关文件并手动删除:
sudo find /usr/local -name "*absl*"
2、手动删除ceres文件
如果你记得安装时的路径,你可以手动删除所有相关文件。
通常这些文件会安装在 /usr/local 或 /usr 目录下。以下是一些可能的路径
sudo rm -rf /usr/local/lib/libceres*
sudo rm -rf /usr/local/include/ceres
sudo rm -rf /usr/local/lib/cmake/Ceres
3、卸载 protobuf:
sudo apt-get remove libprotobuf-dev protobuf-compiler
确保上面这些都做完了,下面咱正式开始安装
安装第一步、解决github下载失败的问题
修改/etc/hosts文件加速GitHub下载
第一步:获取IP地址
- 打开一个浏览器,访问在线DNS解析工具或其他类似网站。
- 在工具中,分别输入以下三个域名并进行解析,获取其对应的IP地址:
- github.com
- github.global.ssl.fastly.net
- codeload.github.com
- 记录解析结果中返回的IP地址。
第二步:编辑/etc/hosts文件
sudo vim /etc/hosts
在/etc/hosts文件中,添加获取到的IP地址和对应的域名。假设获取到的IP地址如下(请根据实际获取的IP地址进行替换):
140.82.114.4 github.com
199.232.69.194 github.global.ssl.fastly.net
140.82.113.10 codeload.github.com
第三步:重启网络服务
在终端中执行以下命令重启网络服务:
sudo /etc/init.d/networking restart
第四步:验证修改
通过ping命令验证是否能够快速访问GitHub相关域名:
ping github.com
ping github.global.ssl.fastly.net
ping codeload.github.com
注意事项
- IP地址可能会变化,需要定期检查并更新/etc/hosts文件中的IP地址。
- 如果/etc/hosts文件中的IP地址失效,可能会导致无法访问GitHub相关服务,需要及时更新IP地址。
安装第二步、安装相关依赖包
sudo apt-get update
sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler python-sphinx ros-melodic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
sudo apt-get install -y python-wstool python-rosdep ninja-build stow
安装第三步、建立工作空间
初始化工作空间
mkdir catkin_google_ws
cd catkin_google_ws
wstool init src
从原作者的gitee上下载安装cartographer和cartographer_ros(如果了解决github下载失败的问题,到这一步会很快)
cd src
git clone https://gitee.com/liu_xiao_eu/cartographer.git
git clone https://gitee.com/liu_xiao_eu/cartographer_ros.git
安装第四步:安装ceres-solver
在工作空间cato_ws/src下面下载
wget ceres-solver.org/ceres-solver-1.13.0.tar.gz
下载不成功的话,可以使用下面的链接下载
版本为ceres-solver-1.13.0,对应的是ros-melodic的环境,激光--cartographer中使用-Linux文档类资源-CSDN下载
编译ceres-solver
cd ceres-solver-1.13.0
mkdir build
cd build
cmake ..
make
使用该版本的就没有问题,最新版本的会出错误
测试是否通过,并安装到虚拟机下
make test
sudo make install
安装第五步:安装cartographer_ros的依赖项(proto3)
这块是用脚本来安装,在carto_ws/src/cartographer/scripts/install_proto3.sh里面会有脚本install_proto3.sh
直接运行脚本
./install_proto3.sh
安装成功后为
安装第六步:安装 abseil-cpp library
还是使用脚本安装,在cato_ws/src/cartographer/scripts/install_abseil.sh里面会有脚本install_abseil.sh
即可直接安装
./install_abseil.sh
8、编译Cartographer (博主整个过程没有遇到问题)
catkin_make_isolated --install --use-ninja
安装第七步:下载官方测试包测试一下
现在官网已经没法下载了,我找了个以前博主下载2d的,链接给大家放在这了
链接: https://pan.baidu.com/s/15t80qqhAvbd1pDZwvkjIYw?pwd=3c9y 提取码: 3c9y
此时的应在工作空间的目录下,执行测试:
source install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/yxt/catkin_google_ws/src/b2-2016-04-05-14-44-52.bag
测试结果如图所示:
标签:melodic,cartographer,Eigen,安装,sudo,源码,usr,local From: https://blog.csdn.net/2201_75543838/article/details/140159787