这两天真的是疯狂尝试各种安装教程,总算是皇天不服有心人,安装好了cartographer,话不多说,安装过程奉上,希望能对想安装cartographer的人有所帮助
为了使用cartographer,开始了探索下载的方法。
首先介绍一下安装之前我的电脑环境,已经安装过ceres、ros,并且由于尝试过很多安装方式,几乎需要的依赖都已经安装过了。
如果已经安装好了ros就不再需要进行这一步了,具体教程:ROS机器人—超级环境搭建ros+opencv+ceres+CameraSDK+vins,只需要执行第一步和第二步即可,后续的步骤随意(如果你要执行的话,请暂时跳过第四步)
sudo apt-get update
sudo apt-get install -y python-wstool ninja-build *#这里原本是有python-rosdep的,由于已经安装过,就删掉了。*
mkdir cartographer_ws
cd cartographer_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
在这里我将我原来放置在home目录下的ceres-solver卸载了,卸载命令如下:
sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a
(Ceres库的头文件安装在"/usr/local/include/ceres/“目录下,库文件安装在”/usr/local/lib/"目录,所以我删除了这两个文件夹下的CERES文件)
随后需要自行安装ceres到/cartographer/src目录下(是不是一定要安装在这里我不太清楚,为了求稳我就在这里安装了,具体过程可参考与第一步的链接相同的博客,在/cartographer/src目录下执行第四步)
在这里安装ceres-solver后你可以再次执行wstool update -t src
,你会发现他仍然会报错,不过这里忽略掉报错就好啦,请继续进行下一步。
注:尚未求证ceres-solver放在其他目录下是否可以进行后续步骤
上面的步骤无误后,接下来安装依赖的ROS包(proto3 )
src/cartographer/scripts/install_proto3.sh
#sudo rosdep init
#rosdep update
rosdep install --from-paths src --ignore-src -r -y
其中rosdep命令之前安装的时候已经运行了,这里不再需要,只要执行第一行和第四行即可。
你也可以不执行第四步,自己安装所有依赖项,命令如下:
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-kinetic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
如果你是从网络上其他地方看到的此命令,需要注意ros-kinetic-tf2-eigen,这里应该写ubuntu16.04对应的kinetic,而不是别的什么。
上面没问题后开始编译安装。
这个编译命令和平时的catkin_make不一样(具体为什么是这样我也不清楚,如果有人懂的话请教教我,非常感谢)
catkin_make_isolated --install --use-ninja
echo "source ~/cartographer_ws/devel_isolated/setup.bash" >> ~/.bashrc
source ~/.bashrc
此处需要等待较久,编译完后需要执行第二行和第三行,把环境变量写进.bashrc
至此,cartographer的安装已经完成了,可以找一下bag文件跑一下
下载2D演示包、3D演示包,网络上提供链接的博客很多,可以自行搜索
2D:演示包下载:https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
运行以下命令
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:='/home/hhy/Downloads/cartographer_paper_deutsches_museum.bag'
此处 bag_filename:= 后的地址请直接将下载好的演示包拖入命令行窗口即可
演示效果如图:
3D演示包太大了,我下载总是因为网络问题出错,这里就不再展示,只给出下载地址和演示命令:
3D演示包下载:https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
演示命令与2d类似,只需要将
roslaunch cartographer_ros demo_backpack_2d.launch 中的2d改为3d即可
具体如下:(同2d,请将bag_filename后面的地址删掉,直接将你的bag文件拖入)
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:='/home/hhy/Downloads/b3-2016-04-05-14-14-00.bag'
最后说一下其他失败的安装过程:
第一次,按照谷歌Cartographer学习(1)-快速安装测试中的安装教程,
在安装 cartographer时执行ninja或者make时总是报错,但是错误我搜索了一会儿又解决不了,于是多次尝试多次报错后放弃
第二次,同事看到ros_kinetic安装cartographer中说该算法已经被ros集成了功能包,使用sudo apt-get install ros-kinetic-cartographer*
即可。但是安装完这个以后我发现我并没有launch文件等一系列文件啊,我咋启动呢,尝试了一下测试命令,根本无法通过roslaunch启动,再次放弃
希望大家都能顺利安装cartographer