默认已经安装了ROS,本博客安装过程主要是方便复制粘贴,这是完美安装版本,没上截图,没有过多解释,出现问题现搜现用。
推荐和 别的博客一起参照!!!我这个方便复制粘贴!!!
1.加入谷歌服务器域名
因为什么别的博客里有(其它同理)
sudo gedit /etc/resolv.conf
将原有的nameserver这一行注释,并添加以下两行
nameserver 8.8.8.8
nameserver 8.8.4.4
2.安装依赖包
sudo apt-get install -y \
cmake \
g++ \
git \
google-mock \
libboost-all-dev \
libcairo2-dev \
libeigen3-dev \
libgflags-dev \
libgoogle-glog-dev \
liblua5.2-dev \
libsuitesparse-dev \
libwebp-dev \
ninja-build \
protobuf-compiler \
python-sphinx
安装protobuf3
ros自带proto2,这个低版本是不适用于cartographer,因此重装proto3。
sudo apt-get remove libprotobuf-dev
which protoc
// 运行完“which protoc”会显示一个protoc的路径,如果没有显示则下面这条命令不必执行
rm /usr/local/bin/protoc
// 具体路径以“which protoc”显示的为准,如果是默认的话更有可能是usr/bin/protoc
//到此,低版本的protobuf卸载完成。
安装protobuf3.6.0
(1) 首先安装依赖库
sudo apt-get install autoconf automake libtool curl make g++ unzip
(2) 接下来克隆源码,注意,git submodule update --init --recursive这一步克隆子模块必须有,否则后面会报错(报找不到文件的错),当然,之前如果你没有解决github下载慢的问题(0-1),这里可能就要慢的绝望了。
git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
// 上述命令表示克隆版本为3.6.0的protobuf源码
cd protobuf
git submodule update --init --recursive
// 该命令表示克隆protobuf的子模块,主要是gtest
(3) 编译并安装
// 进入到克隆的protobuf目录,当然,如果之前就在这个目录下不必再次cd
cd protobuf
./autogen.sh
./configure
make
// 如果没有克隆子模块,make check会失败但是可以继续make install,但是使用某些功能时可能会出错
make check
sudo make install
sudo ldconfig
// 输出protobuf版本信息则表示安装成功
protoc --version
最后,查看安装位置
which protoc
可以看到,其默认下载位置为 /usr/local/bin/protoc
这是我们不想要的,因为carto的搜索protoc的路径为/ usr/bin/protoc
有博客说有两种方法,我们选择直接copy过去
sudo cp /usr/local/bin/protoc /usr/bin
或者干脆一点手动copy
最终,安装完毕protobuf3.6的版本,并完成位置的调整。
3.安装cartographer
安装工具
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
创建工作区间"carto_ws"并初始化
mkdir carto_ws
cd carto_ws
wstool init src
加入cartographer_ros.rosinstall并更新依赖
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
//输入完第一个命令后需要改文件的下载地址,另起终端输入:
gedit carto_ws/src/.rosinstall
//将最后一个git来源网址由https://ceres-solver.googlesource.com/ceres-solver.git改为https://github.com/ceres-solver/ceres-solver.git
//如果打开文件一片空白,可以把我附录的粘贴进去,保存再进行下一步
wstool update -t src
这里要注意的是更改最后一个ceres-solver的git来源网址,我也给你改好了,复制就行。
在这里插入代码片
然后安装依赖并下载cartographer相关功能包
注意rosdistro=kinetic -y是根据自己ros的版本来的
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=melodic -y
//若是其他ROS版本相应替换
4.测试
在官方数据集下载地址下载
然后进行编译:
其格式为
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=跟上bag的路径
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/carto_ws/b0-2014-07-21-12-42-53.bag
测试3D包
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=跟上bag的路径
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=/home/carto_ws/b3-2016-03-01-13-39-41.bag
完结撒花,祝大家