谷歌的Cartographer由于其开源社区特性,非常适合SLAM入坑。
入坑前注意兼容性,比如ROS使用kinetic,则ubuntu版本建议为16,不要图新鲜升什么ubuntu18。都是血泪教训。
可能的话,尽量一台虚拟机做一件事,保持纯净性,避免系统、环境、配置等的互相影响。一个典型的例子是,我之前根据别家教程安装了pcL库,版本为1.9,后续按谷歌教程装cartographer时,由于1.9的pcl要求c++14,而配置文件里面是c++11,调节起来就很麻烦,而且往往一个坑接一个坑,因为你的环境和教程不一样,你就可能遇到很多本来新系统中不会遇到的问题。
另外,cartorgrapher ROS本身并没有包含ROS,所以需要先安装好ROS(下载大约2G的内容),参见http://wiki.ros.org/kinetic/Installation/Ubuntu。先安装ROS的好处在于,可以自动安装ROS的依赖项。
建议使用官方提供的清华源。注意如果采用源码编译,内存一定要足够,可以用swap空间的方式暂时的解决内存不足的问题,但长远看还是需要增加内存容量。
安装Cartographer ROS时,首先参考https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html
但是要注意cere-solver的原始路径不可用需要替换,参考https://blog.csdn.net/rjasd1128hf/article/details/79888305
另外,建议下载前,虚拟机装下shadow分割socks,然后在shell里面开一下代理,否则速度太慢。下面是一个典型的代理脚本(代理服务器,端口之类的信息需要你自己百度找免费的或者付费搭VPS),拷贝到/bin下面赋权为755,之后shell中提前运行下 XX.sh start即可,此后,shell中的下载都会走代理。
#!/bin/bash
start() {
if [ "$(pidof sslocal)" == "" ]
then
echo "run ss"
sslocal -s 代理IP -p 代理端口 -b 127.0.0.1 -l 1080 -k 密码 -m 加密方式
fi
echo "set shell proxy"
hwclock --show
export http_proxy=http://127.0.0.1:1080
export https_proxy=https://127.0.0.1:1080
export http_proxy=socks://127.0.0.1:1080
export http_proxy=sock4://127.0.0.1:1080
export http_proxy=sock5://127.0.0.1:1080
}
stop() {
echo "stop shell proxy"
unset http_proxy
unset https_proxy
}