Maplab编译

  1. 源码地址:https://github.com/ethz-asl/maplab  

最近听说maplab开源了,就开开心心准备去测试,虽然还不知道这个是啥是干什么用的,什么原理,方不方便修改疑问

先记录一下我编译的过程,环境是Ubuntu16.04 +ROS kinetic,

主要参考的是git上的流程和博主@wendox 的文章,很感谢原作者的开源精神以及何必浓墨重彩博主的博文。

我先在home主目录下新建了一个名为maplab_ws的catkin工作空间,本来想在原来的catkin_ws工作空间里运行catkin build maplab,但是说不行,因为里面有其他的package make过,所以我换了个地方(对ROS不是很懂,所以一开始还不敢再创建一个catkin 空间,在SLAM群里问了一句得到了“你想创建几个就创建几个”的回复,瞬间感觉心安了)。

在maplab_ws目录下,

[html]  view plain  copy
  1. mkdir src  
  2. cd src  
  3. catkin_init_space  

然后

[html]  view plain  copy
  1. sudo apt install autotools-dev ccache doxygen dh-autoreconf git liblapack-dev libblas-dev libgtest-dev libreadline-dev libssh2-1-dev pylint clang-format-3.8 python-autopep8 python-catkin-tools python-pip python-git python-setuptools python-termcolor python-wstool --yes  
  2.   
  3. sudo pip install requests  

在创建工作空间之后安装安装这些依赖的原因是我以为我依赖都安装好了结果一下子报错了,所以又乖乖跑回来安装这些依赖,

然后依旧按照git上的教程来做:

[html]  view plain  copy
  1. cd $CATKIN_WS  
  2. catkin init  
  3. catkin config --merge-devel # Necessary for catkin_tools >= 0.4.  
  4. catkin config --extend /opt/ros/kinetic  
  5. catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release  
  6. cd src  
注意将kinetic替换成自己对应的ROS版本,然后就git maplab和maplab_dependence啦!

[html]  view plain  copy
  1. git clone https://github.com/ethz-asl/maplab.git --recursive  
  2. git clone https://github.com/ethz-asl/maplab_dependencies --recursive  

这个地方应该没问题?很有可能,但在何必浓墨重彩博主里给出了解决办法,但我没遇到这个问题所以没有尝试,因为不太懂git(这么一说自己又不是很懂git,又不是很懂ROS,,我真,,,哎,,写啥代码,回家放牛),引号里是博文里的原话,

这里使用了recursive指令, 这个是必须的, 当然考虑到对于github的访问很不稳定, 如果recursive失败, 但是maplab仓库可以下载下来, 那么可以进入maplab目录执行

git submodule update
  • 1

对于maplab_dependencies同样如此. 

接下来进入常规操作,

[html]  view plain  copy
  1. cd $CATKIN_WS/src/maplab  
  2. ./tools/linter/init-git-hooks.py  

这个地方有问题?那肯定就是前面下载的时候出问题了,要不就是没下载完全,要不就是没有
[html]  view plain  copy
  1. --recursive  

恩恩,这个也搞好了之后就进入最令人开心的

[html]  view plain  copy
  1. catkin build maplab  

环节了,

[html]  view plain  copy
  1. cd ~/maplab_ws  
然后开始

[html]  view plain  copy
  1. catkin build maplab  
我在这个地方死了无数次又reborn,当然,最重要的问题就是编译过程中需要下载但链接不稳定,,,shadowsocks,终端,proxy,git,crying......当然,这是我的解决办法,讲道理不能下载其实也可以去git上找到对应的包然后放到相应的位置编译就可以的,这种方式在何必浓墨重彩博主的那篇博文里有叙述,但我比较笨,尝试了却没搞通,所以就选择其他途径了。报的错有以下几种,有需要的朋友可以参考看看:

1. ceres_catkin failed 

当然,你也可以是其他package failed,事实上我的protobuf-catkin也failed的了,讲道理你可以下载源码到对应位置然后编译(

举个栗子,如protibuf编译失败,下载到maplab_ws根目录下的

[html]  view plain  copy
  1. /build/protobuf_catkin/protobuf_src-prefix/src  

但这里我不太懂的是我该下载啥,哪个版本以及,,编译是make就行了?)

所以我选择了科学上网,学校的ipv6好像本身就可以上,我尝试了配置shadowsocks,搞得浏览器能上Google,但这样终端还是不行啊,于是配置了proxy,wget是可以到Google了,但还是git不下来怎么办,配置一下git

[html]  view plain  copy
  1. git config --global http.proxy 'socks5://127.0.0.1:1080'  
  2. git config --global https.proxy 'socks5://127.0.0.1:1080'  
我在终端输入了这么两句话,当然前提你配置好了shadowsocks以及端口是1080,不然改成自己对应的。
这样就解决啦,开心!

2. voxblox编译无法通过



爆出来这样的错,这个按照何必浓墨重彩博主的那篇博文里的方案去改就好,再次感谢大神们的无私奉献,但我很想问的是他是怎么发现这个错的,我看了这个错看了半天不知道怎么着手。

主要是因为voxblox在使用Eigen的矩阵实现transform等数据类型时使用float类型, 而voxblox_interface在转换类型到

$CATKIN_WS/src/maplab_dependencies/internal/minkindr/minkindr/include/kindr/minimal
  • 1

中的transform的数据类型使用了double, 所以无法编译通过, 所以可以将voxblox包中的

$CATKIN_WS/src/maplab_dependencies/internal/voxblox/voxblox/include/voxblox/core/common.h
  • 1

中的第41行

typedef float FloatingPoint;
  • 1

改为

typedef double FloatingPoint;
  • 1

即可.

3. Eigen库的问题

我觉得这个问题遇到的人可能比较少,我之前不知道是在测试SVO还是DSO还是其他什么开源SLAM时讲eigen库改为了2.x的版本,结果一直报错



,所以我重新上eigen官网上下载了最新的包,进去后

[html]  view plain  copy
  1. mkdir build  
  2.   
  3. cd build  
  4.   
  5. cmake ..  
  6.   
  7. make  
  8.   
  9. sudo make install  
然后就解决啦!

最后通过的显示像这样
嘿嘿,挺开心的,希望大家也顺利。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值