Ubuntu14.04编译maplab遇到的一些问题及解决方法
1、安装ROS及初始配置
安装ROS的方法主要参考了两个来源:一个是GitHub上的ethz-asl/maplab wiki页面(https://github.com/ethz-asl/maplab/wiki/Installation-Ubuntu),另一个是中国技术博主刘放的博客(https://www.cnblogs.com/liu-fa/p/5779206.html)。具体来说,我的操作系统是Ubuntu 14.04系统版,在对应的ROS版本号下选择了indigo架构。在虚拟机配置方面,内存设置为了4GB,并且分配了一个完整的处理器资源核心数设为了四核配置。
无法通过复制粘贴获取代码内容。手动输入时不可避免会有一些小错误和错别字这些微小的笔误及错别字因此建议采用Tab键补齐这些空缺言辞简练步入正轨
原作者由窗口创建了环境变量;我手动向 /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
该 ros 包名 catkin 是 ROS 系统中一个重要的工具组件;相关指令可通过访问 英文网站 获取。
为了遵循原作者的指示, 我必须获取源代码.
由于Git的工作效率较低, 我不得不从Windows系统中下载zip文件, 然后将它们复制到src目录后进行编译, 结果遇到了大量编译问题.
最后发现这些压缩包并不完整, 因此只好放弃使用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
然后,出现错误:
Workspaces have been updated; I recommend sourcing the setup files to utilize them.
看一下ROS官方文档,你就知道,需要执行项目下的setup脚本:
source devel/setup.bash
然后重新编译(接下来你会重复很多次这个指令哈哈...):
catkin build maplab
接着,错误为:
make[2]尝试构建...时出现...问题,日志中显示详细信息,原作者建议查看CMakelists.txt中的配置参数并手动下载安装包,解压到相应文件夹进行处理。我按照指导进行了操作,但随后发现程序在重新编译过程中会自动删除之前安装的OpenCV 3.2.0库文件,感到非常困惑(简直是万般无奈!!)
我玩儿花样来着?背水一战硬拼一下'瞎**乱搞了'?确实没错!要不就去下载个OpenCV 3的脚本文件吧(等会儿还得回来调回来):
修改后的文本:
打开 OpenCV 3 Catkin项目下的 src 包文件 /opencv3_catkin/opencv3_src-prefix/src/opencv3_src-stamp/download-opencv-3-src.cmake,并在其中第14行移除注释符号(即删除'Opcv'前缀),这相当于取消了安装OpenCV包的时间限制要求。类似地,
执行 opencv3_catkin/opencv3_contrib-prefix/stc/opencv3_contrib-stamp/download-opencv3_contrib.cmake ,取消第14行的注释符号。
然后重新编译,慢慢等吧,龟龟龟龟龟速 git !!
请放心吧!我们更改了别人的作品嘛!错误可能涉及状态码如 status之类的NOTFOUND。
检查指定的3.2.0.zip文件是否已成功下载完成,请确保两个软件均已完成安装。怎么?难道你们不清楚这两个软件被放置在何处?还玩什么花样呢?以后这种基础配置的问题我就不理你了。(友情提示:在某些cmake文件中)
一旦两个都已成功下载完成,则需恢复之前在那两个文件中标记的两条注释行,并将这两行重新添加回注释状态后进行编译操作(catkin build maplab)。
慢慢等吧,opencv的编译有点耗时,4G内存,固态硬盘的话大概几十分钟
预计还会出现类似问题
启动 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) ..........
请问为何如此表述?请参考本文的第一行第一行。在重启后,请确保先执行source操作以编译项目,并将虚拟机的核心数量调整为4个。
完成!

