00001 /* This file is part of RGBDSLAM. 00002 * 00003 * RGBDSLAM is free software: you can redistribute it and/or modify 00004 * it under the terms of the GNU General Public License as published by 00005 * the Free Software Foundation, either version 3 of the License, or 00006 * (at your option) any later version. 00007 * 00008 * RGBDSLAM is distributed in the hope that it will be useful, 00009 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00011 * GNU General Public License for more details. 00012 * 00013 * You should have received a copy of the GNU General Public License 00014 * along with RGBDSLAM. If not, see <http://www.gnu.org/licenses/>. 00015 */ 00016 #ifndef ROS_UI_H 00017 #define ROS_UI_H 00018 00019 #include <QMainWindow> 00020 #include <QGridLayout> 00021 //#include "glviewer.h" 00022 #include "parameter_server.h" 00023 #include <QObject> 00024 #include "rgbdslam/rgbdslam_ros_ui.h" 00025 #include "rgbdslam/rgbdslam_ros_ui_b.h" 00026 #include "rgbdslam/rgbdslam_ros_ui_f.h" 00027 #include "rgbdslam/rgbdslam_ros_ui_s.h" 00028 00029 class QAction; 00030 00032 00033 class RosUi: public QObject{ 00034 Q_OBJECT 00035 00036 public: 00037 RosUi(const char* service_namespace); 00038 00040 bool services(rgbdslam::rgbdslam_ros_ui::Request &req, rgbdslam::rgbdslam_ros_ui::Response &res); 00042 bool services_b(rgbdslam::rgbdslam_ros_ui_b::Request &req, rgbdslam::rgbdslam_ros_ui_b::Response &res); 00044 bool services_f(rgbdslam::rgbdslam_ros_ui_f::Request &req, rgbdslam::rgbdslam_ros_ui_f::Response &res); 00046 bool services_s(rgbdslam::rgbdslam_ros_ui_s::Request &req, rgbdslam::rgbdslam_ros_ui_s::Response &res); 00047 Q_SIGNALS: 00049 void reset(); 00051 void togglePause(); 00053 void toggleMapping(bool); 00055 void getOneFrame(); 00057 void deleteLastFrame(); 00058 void sendAllClouds(); 00059 00060 void saveAllClouds(QString filename); 00062 void saveOctomapSig(QString filename); 00064 void saveAllFeatures(QString filename); 00066 void saveG2OGraph(QString filename); 00068 void saveIndividualClouds(QString file_basename); 00069 void setMaxDepth(float max_depth); 00071 void saveTrajectory(QString); 00073 void optimizeGraph(); 00074 00075 public Q_SLOTS: 00076 void sendFinished(); 00077 00078 private: 00079 void pause(bool); 00080 void toggleCloudStorage(bool); 00081 private: 00082 bool pause_on; 00083 QString filename; 00084 bool record_on; 00085 ros::ServiceServer server; 00086 ros::ServiceServer server_b; 00087 ros::ServiceServer server_f; 00088 ros::ServiceServer server_s; 00089 }; 00090 00091 #endif