小白操作!!!楼主智商常年不在线,各种各样的坑都偏爱于我....特写此教程记录我的辛酸史///(猛女嘤嘤嘤)
前提:
1.首先确保自己已经安装好了ubuntu16.04+ROS-kinetic,并配置好了ros环境。
2.最好连手机热点,网速越快越好。
一、安装工具:
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
二、工作区设置:
这里建议新建工作区,
不要放在原来自己建的工作区中,因为一遍安不好的话删除比较麻烦..
创建:mkdir 工作区名,我起名为carto_ros,所以:
mkdir carto_ros
初始化:
cd carto_ros
wstool init src
这一步结束之后,在主目录下会出现一个carto_ros的工作区,该区下多了一个空的src目录。
注意:接下来的步骤直到下次提醒,都是在carto_ros目录下进行的。
三、下载.rosinstall文件,将其放到src目录下:
官网提供的指令:
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
注意:国内可能无法访问,在这一步终端会报错。
所以需要我们自己创建一个.roinstall文件:
sudo gedit src/.rosinstall
会用vim编辑器的也可以用这个创建:
vi src/.rosinstall
在这个文件中填入:
- git: {local-name: cartographer, uri: 'https://github.com/googlecartographer/cartographer.git', version: '1.0.0'}
- git: {local-name: cartographer_ros, uri: 'https://github.com/googlecartographer/cartographer_ros.git', version: '1.0.0'}
- git: {local-name: ceres-solver, uri: 'https://ceres-solver.googlesource.com/ceres-solver.git', version: '1.13.0'}
但!ceres-solver的又无法下载,所以还要修改.roinstall文件中最后一行ceres-solver的uri为https://github.com/ceres-solver/ceres-solver.git
用gedit打开的如图:保存关闭即可。
用vim打开的如图:保存退出即可。
四、更新依赖:
wstool update -t src
结果如下就说明这一步成功啦:
现在src目录下应该是这样的:
五、安装proto:
src/cartographer/scripts/install_proto3.sh
六、安装依赖:
这一步我有报错,但不要紧(我也不知道要不要紧,至少现在没影响):
rosdep update
注意:
楼主在这一步rosdep update出错时,根据网上教程修改如下
sudo gedit /etc/resolv.conf
注释掉原来的nameserver一行,然后添加下面两行:
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器
然后保存退出。
说是再次执行:
sudo apt-get update
rosdep update
问题就会解决。
但是!我没有!!还给后面的操作埋下了隐患。这一步虽然出错了,但是对后面的安装没影响,直接下一步:
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
七、编译安装了!
catkin_make_isolated --install --use-ninja
这里会漫长些,可以稍微休息一会儿.....
成功之后如上图!
现在我们的工作区中应该包含这几个文件:
八、刷新环境:
注意:接下来要回到主目录下操作啦。
cd
vi .bashrc
在最后添上,保存退出:
source ~/carto_ros/install_isolated/setup.bash
九、开始测试:下载测试包+启动
1.下载测试用的2D包到Downloads目录下(没有该目录会自动创建):
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
注意:这一步若出现如下↓这两种情况,都是网络不太顺畅的原因,可以ctrl+c终止然后再重复这一步。直到他可以很快(画圈处为保存速度)保存数据为止。
另一注意:我前面在rosdep update时所说的隐患!因为我修改了域名服务器,所以在执行这步时出现
检查发现ping不通了,在输入
ping www.baidu.com
时出现ping:unknown host http://www.baidu.com问题。
嗯....才注意到之前修改的/etc/resolv.conf文件有写入覆盖功能,虽然我在那步操作无效果之后已经改回去了,但于事无补。
如下是无需重启就可以配置好的方法。
sudo gedit /etc/resolvconf/resolv.conf.d/base
在这个空文件中写入:(域名是和之前/etc/resolv.conf文件中一致的)
nameserver 域名
保存退出,执行:
sudo resolvconf -u
这时就恢复到从前的状态啦。可以用这种方式测试一下:
ping www.baidu.com
如果可以ping通,说明DNS配置成功。
成功图如下:
2.启动文件:
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
现在有playbag的进程死掉了:
自动打开的rviz没有显示:可以看到机器人模型的状态有问题。
咋整??尝试修复一下:
rosbag reindex ~/Downloads/cartographer_paper_deutsches_museum.bag
哦豁~好了哦!
后面的操作跟着官网教程就可以啦。
官网地址:
https://google-cartographer-ros.readthedocs.io/en/latest/index.htmlgoogle-cartographer-ros.readthedocs.io