Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef RTABMAP_APP_H_
00029 #define RTABMAP_APP_H_
00030
00031 #include <jni.h>
00032 #include <memory>
00033
00034 #include <tango_client_api.h>
00035 #include <tango-gl/util.h>
00036
00037 #include <scene.h>
00038 #include <CameraTango.h>
00039 #include <util.h>
00040
00041 #include <rtabmap/core/RtabmapThread.h>
00042 #include <rtabmap/utilite/UEventsHandler.h>
00043 #include <boost/thread/mutex.hpp>
00044 #include <pcl/pcl_base.h>
00045
00046
00047 class RTABMapApp : public UEventsHandler {
00048 public:
00049
00050 RTABMapApp();
00051 ~RTABMapApp();
00052
00053 void onCreate(JNIEnv* env, jobject caller_activity);
00054
00055 void openDatabase(const std::string & databasePath);
00056
00057 bool onTangoServiceConnected(JNIEnv* env, jobject iBinder);
00058
00059
00060
00061 void TangoResetMotionTracking();
00062
00063
00064
00065
00066
00067
00068 void onPointCloudAvailable(const TangoXYZij* xyz_ij);
00069
00070
00071
00072
00073
00074 void onPoseAvailable(const TangoPoseData* pose);
00075
00076
00077
00078
00079
00080 void onTangoEventAvailable(const TangoEvent* event);
00081
00082
00083 void InitializeGLContent();
00084
00085
00086 void SetViewPort(int width, int height);
00087
00088
00089 int Render();
00090
00091
00092 void onPause();
00093
00094
00095
00096
00097
00098 void SetCameraType(tango_gl::GestureCamera::CameraType camera_type);
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 void OnTouchEvent(int touch_count, tango_gl::GestureCamera::TouchEvent event,
00110 float x0, float y0, float x1, float y1);
00111
00112 void setPausedMapping(bool paused);
00113 void setMapCloudShown(bool shown);
00114 void setOdomCloudShown(bool shown);
00115 void setMeshRendering(bool enabled);
00116 void setLocalizationMode(bool enabled);
00117 void setTrajectoryMode(bool enabled);
00118 void setGraphOptimization(bool enabled);
00119 void setNodesFiltering(bool enabled);
00120 void setGraphVisible(bool visible);
00121 void setAutoExposure(bool enabled);
00122 void setFullResolution(bool enabled);
00123 void setMaxCloudDepth(float value);
00124 void setMeshAngleTolerance(float value);
00125 void setMeshTriangleSize(int value);
00126 int setMappingParameter(const std::string & key, const std::string & value);
00127
00128 void resetMapping();
00129 void save();
00130 bool exportMesh(const std::string & filePath);
00131 int postProcessing(int approach);
00132
00133 protected:
00134 virtual void handleEvent(UEvent * event);
00135
00136 private:
00137 rtabmap::ParametersMap getRtabmapParameters();
00138
00139 private:
00140 rtabmap::CameraTango * camera_;
00141 rtabmap::RtabmapThread * rtabmapThread_;
00142 rtabmap::Rtabmap * rtabmap_;
00143 LogHandler * logHandler_;
00144
00145 bool odomCloudShown_;
00146 bool graphOptimization_;
00147 bool nodesFiltering_;
00148 bool localizationMode_;
00149 bool trajectoryMode_;
00150 bool autoExposure_;
00151 bool fullResolution_;
00152 float maxCloudDepth_;
00153 int meshTrianglePix_;
00154 float meshAngleToleranceDeg_;
00155
00156 rtabmap::ParametersMap mappingParameters_;
00157
00158
00159 bool clearSceneOnNextRender_;
00160 int totalPoints_;
00161 int totalPolygons_;
00162 int lastDrawnCloudsCount_;
00163 float renderingFPS_;
00164
00165
00166
00167 Scene main_scene_;
00168
00169 std::list<rtabmap::Statistics> rtabmapEvents_;
00170 std::list<rtabmap::OdometryEvent> odomEvents_;
00171 std::list<rtabmap::Transform> poseEvents_;
00172
00173 boost::mutex rtabmapMutex_;
00174 boost::mutex meshesMutex_;
00175 boost::mutex odomMutex_;
00176 boost::mutex poseMutex_;
00177
00178 struct Mesh
00179 {
00180 pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
00181 std::vector<pcl::Vertices> polygons;
00182 rtabmap::Transform pose;
00183 cv::Mat texture;
00184 };
00185
00186 std::map<int, Mesh> createdMeshes_;
00187 std::map<int, rtabmap::Transform> rawPoses_;
00188
00189 std::pair<rtabmap::RtabmapEventInit::Status, std::string> status_;
00190 };
00191
00192 #endif // TANGO_POINT_CLOUD_POINT_CLOUD_APP_H_