最近接手SLAM这块相关的工作,进行了非常浅显的研究。最近谷歌开源了cartographer库,基于雷达数据进行室内场景地图重建。抱着试一试的心理,安装了cartographer和cartographer_ros。主要步骤包括:
Ubuntu基本设置
安装ROS_Indigo
安装Cartographer_ROS
安装Cartographer(选择)
运行Demo
Ubuntu基本设置
由于使用的ububtu是加了代理的,所以安装软件啥的比较麻烦,折腾了好久,大概弄清了代理下ubuntu的设置。
1.关于浏览器代理:一般要在network里开启代理,输入对应的代理网址。然后浏览器上网时要输入代理对应的账号密码。
2.关于apt-get这种方式安装软件时,有代理的话,要在/etc/apt/apt.conf里添加:Acquire::http::proxy (网址和账号),这样才能通过apt-get的方式安装软件。
3.关于软件上网,如果在有代理环境下,还需要配置~/.bashrc文件里的代理,在代理服务器前写上账号和密码即可。
4.关于软件源,选择一个速度较好的源,更新一下。
5.注意,camke最好采用2.8的版本,也就是ubuntu14.04自带的,如果升级到3.0后,安装cartographer会出大问题的。
安装ros_indigo
ROS_indigo的安装,其实官网很详细,但是如果在代理环境下很容易出问题。
http://wiki.ros.org/indigo/Installation/Ubuntu
在1.3 Set up your keys
文中说明了代理环境下的获取key的语句,但是我的电脑还是不行,在sudo后面加了-E,就可以了。sudo -E apt-key adv –keyserver hkp://ha.pool.sks-keyservers.NET:80 –recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
在1.4 Installation中,安装sudo apt-get install ros-indigo-desktop感觉就够用了。
一直安装到1.7,才算安装结束。
安装Cartographer_ROS
Cartographer_ROS的安装方式官网给的例子也很详细:
https://google-cartographer-ros.readthedocs.io/en/latest/
# Install wstool and rosdep.
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
# Create a new workspace in 'catkin_ws'.
mkdir catkin_ws
cd catkin_ws
wstool init src
# Merge the cartographer_ros.rosinstall file and fetch code for dependencies.
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
# Install deb dependencies.
rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
# Build and install.
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash
但是在执行上面操作的第三步时,不翻墙时会报错,大部分原因是ceres-solver下载不下来。其实可以在github上下载这个库的压缩包,然后解压,注意去掉文件夹名字的master,然后将其放到cartographer工程对应的源码文件夹下的ceres-solver,并将对应的cmakelists文件里的下载这个库的语句屏蔽,应该就能编译通过了。另外如果camke的版本大于3.0,将找不到eigen的find.cmake这样的文件吧。
安装Cartographer
Cartographer只是单独的代码包,如果没有ros系统,是没法运行Demo的,所以单独安装意义不是很大。
Cartographer的安装方式和官网一样,
https://google-cartographer.readthedocs.io/en/latest/
其中在下载ceres-solver时如果下载不下来,也可以采用上面的方式提前将包下载并解压,然后修改cmakelists文件的方式进行编译。
运行Demo
下载Cartographer_ROS网上给的四个数据集,一般找最小的那个下就可以了。下载到download,然后执行launch语句就可以。
分析
在运行了三个例子的结果后,发现cartographer支持的点云类型并不是传统的3D点云,同时看代码好像也不支持ros里的pointcloud2。所以与收头现有雷达并不直接兼容。暂时就放弃了尝试的念头。
三个数据包的详细格式如下:
第一个包格式:
第二个包格式:
第三个包格式: