Android5.1-s5p6818平台移植FangGet的ORB-SLAM2(以及OpenCVLib)

来源:互联网 发布:极速浏览器 mac 编辑:程序博客网 时间:2024/05/29 06:29

    此篇文章是在之前看的在Android IDE 即eclipse上面移植ORB-SLAM2:

http://blog.csdn.net/zf19921020/article/details/51154358  //  http://blog.csdn.net/a356337092/article/details/54232010

的基础上面的扩展,因为目前已经很少在使用eclipse了,Google自己的Android studio是非常棒的开发环境, 并且自己日常开发也是Android studio + Ubuntu的配置。但是并没有在网络上面搜索到有这样的具体介绍,在“FangGet”的GitHub里面虽提到了在AS里面加载他的工程:

但我相信在你实际操作的时候肯定会有一些问题和eclipse里面是不一样的,不仅仅是“import a module”的问题,在这里斗胆将我自己的移植过程记录下来,供各位参考和纠正。


    首先是将支持库OpenCVFORAndroid引入到你的工程,(下载:https://sourceforge.net/projects/opencvlibrary/?source=typ_redirect,http://opencv.org/downloads.html)找到对应Android的版本。也就是这个:

    OpenCV的导入过程参考了这篇文章:http://blog.csdn.net/gao_chun/article/details/49359535,里面已经写得非常详细了,我在这里就不copy别人的劳动成果了。只是将里面可能出现疑问的地方再次明确一下:

    1、在进行到“4部,添加module dependency”的时候,意图肯定是要将open-lib添加为支持你的工程,那么请先选中里要支持的那个共工程(module)然后按照作者的步骤1、2、3进行就OK了;

    2、再进行到“5、复制libs到项目文件夹”的时候,由于我们添加opencvlib是为了支持我们在GitHub上面clone的FangGet大神的代码,那肯定是要在这个module里面加入对应的文件夹了,所以要注意的是Android studio当中在左侧的“project”目录中,切换到“project”模式,那么你可能看到的是以“jni”和“libs”两个文件夹,如果切换到“Android”模式的话,那看到的就是“jniLibs”文件夹了。所以此处最好切换到“project”模式下,这样你将看到ORB~的目录下面已经有jni目录了,那么我们添加或者直接复制这个libs文件夹及其子目录内容过去就好。

    接下来是将GitHub上面clone下来的ORB-SLAM2工程代码“import module”到这project里面,注意了,从GitHub上clone下来的是一个eclipse IDE下的工程,所以如果直接想导入到Android studio里面是不可能的,因为里面包括了eclipse环境下的编译文件等(关于如果将eclipse工程导入到Android studio的方法和总结有好多好多,显然是由于前两年studio 刚刚出现,大家都在摸索如果进行“搬迁”工作所总结出来的),我个人觉得最简单的方式就是将代码过滤干净然后做迁移,这是最好不过的了,意思就是将eclipse IDE环境下编译生成的文件都删了,剩下纯净的工程结构:

        libs、res、src、AndroidManifest.xml、ic_launcher.png、proguard~project.txt可能还有assets资源文件夹

    以这样的方式“import module”或者“import project”没有出现过问题。

    在导入之前还要确保你的Android studio已经配置了ndk,(相关配置参考:http://blog.csdn.net/zhaoqi2617/article/details/53215359),完成后,有两个重要步骤,在工程的local.properties文件最后添加你的ndk路径,(这是我的ndk路径:ndk.dir=D:\:\\ANDROID_STUDIO\\ndk-bundle)。在工程的build.gradle当中添加sourceset{  }节点。

在参考:http://blog.csdn.net/zf19921020/article/details/51154358 的移植过程讲解时候,由于里面是举例讲“Thirdparty”里面的两个模块,所以要注意在对应的jni文件夹下,Android.mk文件里面所有的相关openCV依赖路径都得修改过来,要不然的话是找不到对应的文件的。

    到这一步,应该可以build一下程序了吧?那就试试吧,build--》make module“your module name”~~~好吧,问题来了:

E:\RobotVision\oRB_SLAM2_Android\src\main\jni\ORB_SLAM2\src\Converter.ccError:(22, 10) 'Converter.h' file not foundError:Execution failed for task ':oRB_SLAM2_Android:compileDebugNdk'.> com.android.ide.common.process.ProcessException: Error while executing 'D:\ANDROID_STUDIO\ndk-bundle\ndk-build.cmd' with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=E:\RobotVision\oRB_SLAM2_Android\build\intermediates\ndk\debug\Android.mk APP_PLATFORM=android-25 NDK_OUT=E:\RobotVision\oRB_SLAM2_Android\build\intermediates\ndk\debug\obj NDK_LIBS_OUT=E:\RobotVision\oRB_SLAM2_Android\build\intermediates\ndk\debug\lib APP_ABI=all}

    提示找不到“converter.h”,可是切换工程目录为Android模式在cpp文件夹下面,ORB_SLAM2的include文件夹下面第一个文件就是“converter.h”!编译到这部分的第一个问价你就出错了,那肯定是路径没有找到了。



0 0
原创粉丝点击