最近听说maplab开源了,就开开心心准备去测试,虽然还不知道这个是啥是干什么用的,什么原理,方不方便修改
先记录一下我编译的过程,环境是Ubuntu16.04 +ROS kinetic,
主要参考的是git上的流程和博主@wendox 的文章,很感谢原作者的开源精神以及何必浓墨重彩博主的博文。
我先在home主目录下新建了一个名为maplab_ws的catkin工作空间,本来想在原来的catkin_ws工作空间里运行catkin build maplab,但是说不行,因为里面有其他的package make过,所以我换了个地方(对ROS不是很懂,所以一开始还不敢再创建一个catkin 空间,在SLAM群里问了一句得到了“你想创建几个就创建几个”的回复,瞬间感觉心安了)。
在maplab_ws目录下,
然后
在创建工作空间之后安装安装这些依赖的原因是我以为我依赖都安装好了结果一下子报错了,所以又乖乖跑回来安装这些依赖,
然后依旧按照git上的教程来做:注意将kinetic替换成自己对应的ROS版本,然后就git maplab和maplab_dependence啦!
这个地方应该没问题?很有可能,但在何必浓墨重彩博主里给出了解决办法,但我没遇到这个问题所以没有尝试,因为不太懂git(这么一说自己又不是很懂git,又不是很懂ROS,,我真,,,哎,,写啥代码,回家放牛),引号里是博文里的原话,
”
这里使用了recursive指令, 这个是必须的, 当然考虑到对于github的访问很不稳定, 如果recursive失败, 但是maplab仓库可以下载下来, 那么可以进入maplab目录执行
- 1
对于maplab_dependencies同样如此.
“接下来进入常规操作,
这个地方有问题?那肯定就是前面下载的时候出问题了,要不就是没下载完全,要不就是没有
恩恩,这个也搞好了之后就进入最令人开心的
环节了,
先
然后开始我在这个地方死了无数次又reborn,当然,最重要的问题就是编译过程中需要下载但链接不稳定,,,shadowsocks,终端,proxy,git,crying......当然,这是我的解决办法,讲道理不能下载其实也可以去git上找到对应的包然后放到相应的位置编译就可以的,这种方式在何必浓墨重彩博主的那篇博文里有叙述,但我比较笨,尝试了却没搞通,所以就选择其他途径了。报的错有以下几种,有需要的朋友可以参考看看:
1. ceres_catkin failed
当然,你也可以是其他package failed,事实上我的protobuf-catkin也failed的了,讲道理你可以下载源码到对应位置然后编译(
举个栗子,如protibuf编译失败,下载到maplab_ws根目录下的
但这里我不太懂的是我该下载啥,哪个版本以及,,编译是make就行了?)
所以我选择了科学上网,学校的ipv6好像本身就可以上,我尝试了配置shadowsocks,搞得浏览器能上Google,但这样终端还是不行啊,于是配置了proxy,wget是可以到Google了,但还是git不下来怎么办,配置一下git
我在终端输入了这么两句话,当然前提你配置好了shadowsocks以及端口是1080,不然改成自己对应的。
这样就解决啦,开心!
2. voxblox编译无法通过
爆出来这样的错,这个按照何必浓墨重彩博主的那篇博文里的方案去改就好,再次感谢大神们的无私奉献,但我很想问的是他是怎么发现这个错的,我看了这个错看了半天不知道怎么着手。
”
主要是因为voxblox在使用Eigen的矩阵实现transform等数据类型时使用float类型, 而voxblox_interface在转换类型到
- 1
中的transform的数据类型使用了double, 所以无法编译通过, 所以可以将voxblox包中的
- 1
中的第41行
- 1
改为
- 1
即可.
“3. Eigen库的问题
我觉得这个问题遇到的人可能比较少,我之前不知道是在测试SVO还是DSO还是其他什么开源SLAM时讲eigen库改为了2.x的版本,结果一直报错
,所以我重新上eigen官网上下载了最新的包,进去后
然后就解决啦!
最后通过的显示像这样
嘿嘿,挺开心的,希望大家也顺利。