欢迎使用CSDN-markdown编辑器

来源:互联网 发布:fifaol3球员数据库 编辑:程序博客网 时间:2024/06/17 18:28
为了以后移植相关slam程序到移动端,想利用tango的深度摄像头和imu信息。现在需要看一下rtabslam的源码。

中文解析:
Reference:
Appearance-Based Loop Closure Detection for Online Large-Scale and Long-Term Operation
http://remyspot.blog.51cto.com/8218746/1784914

rtabmap:使用自己的一套cmake方法构建的安卓程序。利用了很多第三方库,比如pcl,glm ,opencv等。

在android文件夹里,进入入口Activity: RTABMapActivity.java
有这么一个

private void export(final boolean isOBJ, final boolean meshing, final boolean regenerateCloud, final boolean optimized, final int optimizedMaxPolygons)

是用来导出生成的模型的。

final boolean success = RTABMapLib.exportMesh(                        cloudVoxelSize,                        regenerateCloud,                        meshing,                        textureSize,                        textureCount,                        normalK,                        optimized,                        optimizedVoxelSize,                        optimizedDepth,                        optimizedMaxPolygons,                        optimizedColorRadius,                        optimizedCleanWhitePolygons,                        optimizedMinClusterSize,                        maxTextureDistance,                        minTextureClusterSize,                        blockRendering);

调用了exportMesh方法。追踪进去

 public static native boolean exportMesh(            float cloudVoxelSize,            boolean regenerateCloud,            boolean meshing,            int textureSize,            int textureCount,            int normalK,            boolean optimized,            float optimizedVoxelSize,            int optimizedDepth,            int optimizedMaxPolygons,            float optimizedColorRadius,            boolean optimizedCleanWhitePolygons,            int optimizedMinClusterSize,            float optimizedMaxTextureDistance,            int optimizedMinTextureClusterSize,            boolean blockRendering);

是一个利用jni实现的本地方法,追踪其实现

Java_com_introlab_rtabmap_RTABMapLib_exportMesh(        JNIEnv* env, jobject,        float cloudVoxelSize,        bool regenerateCloud,        bool meshing,        int textureSize,        int textureCount,        int normalK,        bool optimized,        float optimizedVoxelSize,        int optimizedDepth,        int optimizedMaxPolygons,        float optimizedColorRadius,        bool optimizedCleanWhitePolygons,        int optimizedMinClusterSize,        float optimizedMaxTextureDistance,        int optimizedMinTextureClusterSize,        bool blockRendering){    return app.exportMesh(            cloudVoxelSize,            regenerateCloud,            meshing,            textureSize,            textureCount,            normalK,            optimized,            optimizedVoxelSize,            optimizedDepth,            optimizedMaxPolygons,            optimizedColorRadius,            optimizedCleanWhitePolygons,            optimizedMinClusterSize,            optimizedMaxTextureDistance,            optimizedMinTextureClusterSize,            blockRendering);}

exportMesh的实现在RTABMapApp.cpp里。

std::map<int, rtabmap::Transform> poses = rtabmap_->getLocalOptimizedPoses();

找到调用相机位姿的函数。

const std::map<int, Transform> & getLocalOptimizedPoses() const {return _optimizedPoses;}
std::map<int, Transform> _optimizedPoses

在Rtabmap.h中声明,用来提供相机的位姿。

原创粉丝点击