Ubuntu14.04编译maplab遇到的一些问题及解决方法

1、安装ROS及初始配置

ROS的安装方法参考原作者网页另一个网页,我的是Ubuntu14.04,ROS版本对应为indigo。虚拟机内存设置为4G,1个处理器,核心数为4

没办法复制,手敲下来的难免有些小错误,错别字啥的,所以尽量用tab补全,少copy我的代码,废话少说,进入正题!

原作者是在窗口中创建的环境变量,我是在手动在 /etc/profile 中添加的。打开 /etc/profile ,最后添加内容:

export ROS_VERSION=indigo

export CATKIN_WS=~/maplab_ws

保存退出,执行 source /etc/profile

然后创建工程:

mkdir -p $CATKIN_WS/src

cd $CATKIN_WS

catkin init

catkin config --merge-devel

catkin config --extend /opt/ros/$ROS_VERSION

catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

这里的catkin是ROS下的一个工具,相关指令参考英文网站

然后安装原作者的意思,就要下载源码了。由于git的龟速下载,我就在Windows下download了zip包,然后拷到src下就编译,结果错误一大堆。后来才发现这些zip包是不完整的,所以,只能乖乖git了!!放心,用不了一年~~

下载maplab源码:

cd $CATKIN_WS/src

git clone https://github.com/ethz-asl/maplab.git --recursive

下载完后,接着下载依赖:

git clone httpl://github.com/ethz-asl/maplab_dependencies --recursive

2、编译

接下来,你懂得,进入错误-解决-错误环节!下面是我遇到的一些问题,总结了前人一些经验,也有自己新遇到的。原作者提供了一些问题及解决方法,可以看一下

 开始编译:

进入maplab_ws文件夹,执行:

catkin build maplab

 

然后,出现错误:

“Workspace packages have changed, please re-source setup files to use them.”

看一下ROS官方文档,你就知道,需要执行项目下的setup脚本:

source devel/setup.bash

然后重新编译(接下来你会重复很多次这个指令哈哈...):

catkin build maplab

 

接着,错误为:

“make[2]: *** [opencv3_src-prefix/src/opencv3_stc-stamp/opencv3_src-download] Error 1”、“make[1]: *** [CMakeFiles/opencv3_src.dir/all] Error 2”之类的错误,原因是opencv3没有下载成功,日志里可以查看详细信息,原作者也提到,可以查看相关CMakelists.txt中的网址,手动下载,再解压到相关文件夹。我就照着做了,结果发现重新编译时,程序会把我拷进去的opencv3.2.0给删掉,无语(简直一万匹***飞奔而过!!!!!)

所以老夫智能剑走偏锋背水一战瞎**乱搞了,没错,就是这样!!改他的下载opencv3的脚本文件(一会还要改回来的):

打开 opencv3_catkin/opencv3_src-prefix/src/opencv3_src-stamp/download-opencv3_src.cmake 文件,将里面第14行的注释符号(‘#’)去掉,也就是去掉了下载包的时间限制,同理,

打开 opencv3_catkin/opencv3_contrib-prefix/stc/opencv3_contrib-stamp/download-opencv3_contrib.cmake ,将第14行注释符号去掉。

然后重新编译,慢慢等吧,龟龟龟龟龟速 git !!

 

放心,一定会出错的!因为我们修改了人家的文件嘛!错误大概是 status之类的NOTFOUND。

查看相应的3.2.0.zip是否已经下载完毕,一个82M左右、一个56M左右。啥?你不知道这两个包下载到了哪两个文件夹?那你还搞个锤子哦~,这种最基本的问题我就不管了哈(友情提示:在某些个cmake文件中)

如果两个都已经下载好了,那么把刚才两个文件中原来注释的两行恢复,即重新注释掉,重新编译(catkin build maplab)

慢慢等吧,opencv的编译有点耗时,4G内存,固态硬盘的话大概几十分钟

 

应该还会出现错误,比如ceres下载失败,跟之前opencv3差不多的问题,不过查看了日志你会发现有区别的。opencv3是因为 git 下载慢所以我们去掉了下时间限制,但 ceres 这个是完全连接不到网站啊啊啊,可能是我没FQ的原因??不重要,改个网址就行了

打开 ceres_catkin/ceres_src-prefix/tmp/ceres_src-gitclone.cmake ,第29行网址改为 “https://github.com/ceres-solver/ceres-solver”,保存退出,重新编译。

 

假如你遇到这个错误(那你一定是个不听话的孩子):

g++:internal compiler error: Killed (program cc1plus) ..........

为啥这么说嘞,请看本文第一行。关机,把虚拟机核心数设置为4,再重新编译(记得先source项目下的setup脚本)

 

完成!

 

posted @ 2018-01-19 14:13  花心葬空魂  阅读(1274)  评论(0编辑  收藏  举报