PTAM的笔记(二)---ptam移植到android平台

原创 2016年08月31日 12:33:22

需要项目源码的---->项目工程完整文件

PTAM在windows linux平台的编译还可以去参照官方手册:http://www.robots.ox.ac.uk/~bob/software/ptamm/manual.pdf。PTAM官网只有C++源代码,因此移植到android考虑采用jni接口,github上有类似的工程android-ptam-master。本文主要讲下载了这个工程后的调试问题。

    首先,不建议android开发环境搭建在winows平台,本人,8G内存,i5中等处理器,在windows平台的eclipse上调试这个工程,每次编译2小时+。。。。后来只好搬到fedora上了。在windows平台上还有个问题:
1.windows的命令行只接收最大8191个字符,所以可能会报错,
    解决方法是:打开相应的android.mk文件,加上一句:  LOCAL_SHORT_COMMANDS := true,说明:设置这个变量为‘true’,当你的module有很多的源文件,或者依赖很多的静态或动态库。这会强制编译系统使用一个中间的列表文件,并通过@$(listfile) 语法和library archiver 或者 static linker一起使用。注意如果设置了‘true’以外的值,都会恢复成默认行为。你也可以在Android.mk文件中定义APP_SHORT_COMMANDS来强制使你的工程中的所有modules使用这项功能。
    注意:默认我们不推荐启用这个功能,因为它会使得编译变慢。APP_SHORT_COMMANDS , LOCAL_SHORT_COMMANDS 可以解决链接时参数太长的问题(生成*.a *.so时中间文件过多) 然而,编译,生成 libcrypto.so时,在libcrypto模块中采用LOCAL_SHORT_COMMANDS:=true来指定会导致编译错误。在Application.mk中指定 APP_SHORT_COMMANDS:=true可以顺利编译,链接。
2.出现f2c.h里链接到源文件报错,比如../INCLUDE/f2c.h,导致下面的integer等等变量都无法识别
     下载android-ptam后,在eclipse import之,然后设置项目属性,添加NDK路径,在C++-build里添加environment NDKROOT,以及在build command里添加正确的路径。出现这个问题的原因没搞清楚,解决方法是直接去INCLUDE里找到f2c.h的内容,然后复制到出错的f2c.h中来。或者删掉出错的f2c.h,把正确的f2c.h链接到此处。
3.出现在同一个namespace下debug_initialize无法识别。
    也是很奇葩的错误,有时莫名的自己好,实在不行,可以把debug_initialize的声明文件debug里面所有内容copy到出错的文件中,这样它在同一个文件中调用,就不会错了。
4.出现include <cmath.h> unresolved,造成下面swap函数无法识别。
    这个问题的原因也是不太清楚,我用的NDK版本是r10b,我把NDK版本换成r9d,然后重新设置环境,就好了。可能是版本问题,也可能只是因为我换了NDK重新加载了一次,刷新了,解决了错误。
5.编译通过(大概需要三/五分钟),运行PTAM APP 结果,有按钮界面,无相机预览。
    在captureView里面把关于render的两行注释取消掉。再到BatchRenderer里把onDrawFrame里的注释取消掉。保存运行。
6.mutiple target错误,import之后就出现
    这种错误应该是有target不匹配造成的,在属性 android里,project build target下的框里勾选合适的target。我用的是19. 
如果,你运行app直接秒退,检查是否编译了JNI库(在lib下),没有则是你ndk-build没有设置好。ndk-build 设置关键在于,要是build command里能找到正确的路径,我的是 ${NDKROOT}ndk-build ,                      NDKROOT=/home/cian/下载/android-ndk-r9d/。

    就这些了,望后来者好运。

    最后附上我的项目工程完整文件:http://download.csdn.net/detail/qq_21158525/9620430

版权声明:本文为博主原创文章,未经博主允许不得转载。

java spi

java spi 是一种灵活的扩展机制

PTAM学习笔记(一)---PTAM在windows上的编译

近日,接到老师的暑假作业,把PTAM移植到android平台上。 开始,我对PTAM一无所知,0基础小白。网上搜博客,看到了很多CSDN博客,(建议用google搜索比百度效果好得多)。于是有了写下这...

【Android】SLAM:ORB-SLAM 位姿优化

ORB-SLAM(一)简介 ORB-SLAM(二)性能 ORB-SLAM(三)初始化 ORB-SLAM(四)追踪 ORB-SLAM(六)回环检测...

PTAM移植到IOS(附工程和库文件)

移植结果可用SpaceBar和Reset,没有ARDriver和MapViewer功能。完整xcode工程和用到的库文件(包含include、lib,以及gvars3、libcvd的源代码和工程)下载...

PTAM 移植到 IOS iPhone

  • 2016年09月25日 00:24
  • 25.5MB
  • 下载

PTAM for Android

  • 2016年09月02日 20:08
  • 52.88MB
  • 下载

OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台

如今,大部分的AR都是基于移动设备的,所以这里我们尝试在Android中调用OpenCV的功能来做一些相关的测试。由于OpenCV是基于C语言和部分C++语言开发的,而Android开发使用的则是Ja...

FFmpeg 2.8.4 移植到android平台(二)

上一篇移植过程太过复杂,又发现了一种简单的方法。 移植前准备:见http://blog.csdn.net/niuzhucedenglu/article/details/50524266 前三部。 移植...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PTAM的笔记(二)---ptam移植到android平台
举报原因:
原因补充:

(最多只允许输入30个字)