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

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

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

移植结果可用SpaceBar和Reset,没有ARDriver和MapViewer功能。完整xcode工程和用到的库文件(包含include、lib,以及gvars3、libcvd的源代码和工程)下载...
  • IceTeaSet
  • IceTeaSet
  • 2016年09月25日 00:20
  • 1387

PTAM算法流程介绍

相关工作:1、摄像机校正                     2、特征提取(FAST角点特征、扭曲图像的直线特征优化)                     3、极线几何与极线搜索 ...
  • zzz7290
  • zzz7290
  • 2013年11月07日 18:01
  • 11133

PTAM编译

工作需要,研究一下PTAM的代码。这个介绍PTAM的编译。
  • spacegrass
  • spacegrass
  • 2014年05月26日 17:22
  • 2645

ORB-SLAM 对 PTAM 改了什么

特征匹配差异PTAM patch 匹配和 ORB 中的描述子匹配ORB-SLAM 用 ORB 特征匹配计算位姿,回环检测和重定位都用 ORB 特征;PTAM 没有用特征,和 SVO 一样,用的是 pa...
  • fuxingyin
  • fuxingyin
  • 2016年12月11日 16:48
  • 3409

PTAM:追踪与绘制(Parallel Tracking and Mapping,PTAM)

PTAM:追踪与绘制(Parallel Tracking and Mapping,PTAM)
  • Taily_Duan
  • Taily_Duan
  • 2016年11月17日 14:13
  • 1635

窥探PTAM之基础知识准备

2.线性针孔摄像机模型与标定
  • ilotuo
  • ilotuo
  • 2016年06月30日 16:36
  • 1049

PTAM的解析

3. 斑块查找 在跟踪线程中,使用者变换摄像头姿态或位置得到新关键帧,新关键帧需要重新查找特征点,找到与上一帧匹配的点以实现点跟踪。为了快速精确地找到邻帧对应特征点,PTAM使用一种基于斑块搜索...
  • CS20711
  • CS20711
  • 2017年05月05日 11:00
  • 1186

ubuntu14.04+opencv2.4.x 的PTAM配置

PTAM 是visualSLAM的一种算法,不同于SLAM的实现,它将摄像机跟踪和地图构建分离,仅使用初始地图构建及借用bundle的实现来实现每增添一个新的场景,便实时计算摄像机的位置。这一算法,为...
  • jinghouxiang
  • jinghouxiang
  • 2015年07月22日 09:30
  • 1939

PTAM

PTAM是一项增强现实的技术,与以往的类似技术不同,它不需要任何标志,预定义的地图,模板,传感器。 示例视频: ISMAR 2007上到视频。 http://v.youku.com/v_...
  • qq10593994
  • qq10593994
  • 2015年09月01日 14:46
  • 1559

PTAM SLAM

特征匹配差异 PTAM patch 匹配和 ORB 描述子匹配 ORB-SLAM 用 ORB 特征匹配计算位姿,回环检测和重定位都用 ORB 特征;PTAM 没有用特征,和 SVO 一样,...
  • datase
  • datase
  • 2017年07月03日 19:55
  • 244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PTAM的笔记(二)---ptam移植到android平台
举报原因:
原因补充:

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