diff --git a/launch/rgbd_mapping.launch b/launch/rgbd_mapping.launch index 98022b62..2b0a43fc 100644 --- a/launch/rgbd_mapping.launch +++ b/launch/rgbd_mapping.launch @@ -39,7 +39,7 @@ - + diff --git a/launch/rtabmap.launch b/launch/rtabmap.launch index e972a1db..7fab41d8 100644 --- a/launch/rtabmap.launch +++ b/launch/rtabmap.launch @@ -31,7 +31,7 @@ - + diff --git a/launch/stereo_mapping.launch b/launch/stereo_mapping.launch index d55b810e..f5d8ad5a 100644 --- a/launch/stereo_mapping.launch +++ b/launch/stereo_mapping.launch @@ -42,7 +42,7 @@ - + diff --git a/src/CoreWrapper.cpp b/src/CoreWrapper.cpp index f98a6e3c..03ac463a 100644 --- a/src/CoreWrapper.cpp +++ b/src/CoreWrapper.cpp @@ -85,7 +85,7 @@ CoreWrapper::CoreWrapper(bool deleteDbOnStart, const ParametersMap & parameters) configPath_(""), databasePath_(UDirectory::homeDir()+"/.ros/"+rtabmap::Parameters::getDefaultDatabaseName()), waitForTransform_(true), - waitForTransformDuration_(0.1), // 100 ms + waitForTransformDuration_(0.2), // 200 ms useActionForGoal_(false), genScan_(false), genScanMaxDepth_(4.0), diff --git a/src/GuiNode.cpp b/src/GuiNode.cpp index 8e94f874..c506e314 100644 --- a/src/GuiNode.cpp +++ b/src/GuiNode.cpp @@ -34,13 +34,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include QApplication * app = 0; +ros::AsyncSpinner * spinner = 0; void my_handler(int s){ ROS_INFO("rtabmapviz: ctrl-c catched! Exiting Qt app..."); - if(app) - { - QMetaObject::invokeMethod(app, "quit"); - } + spinner->stop(); + exit(-1); } int main(int argc, char** argv) @@ -55,7 +54,7 @@ int main(int argc, char** argv) app = new QApplication(argc, argv); app->connect( app, SIGNAL( lastWindowClosed() ), app, SLOT( quit() ) ); - GuiWrapper gui(argc, argv); + GuiWrapper * gui = new GuiWrapper(argc, argv); // Catch ctrl-c to close the gui // (Place this after QApplication's constructor) @@ -66,15 +65,17 @@ int main(int argc, char** argv) sigaction(SIGINT, &sigIntHandler, NULL); // Here start the ROS events loop - ros::AsyncSpinner spinner(4); // Use 4 threads - spinner.start(); + spinner = new ros::AsyncSpinner(1); // Use 1 thread + spinner->start(); ROS_INFO("rtabmapviz started."); // Now wait for application to finish int r = app->exec();// MUST be called by the Main Thread - spinner.stop(); + spinner->stop(); + delete spinner; + delete gui; delete app; ROS_INFO("rtabmapviz: All done! Closing..."); return r; diff --git a/src/GuiWrapper.cpp b/src/GuiWrapper.cpp index 87c408b5..eeee9034 100644 --- a/src/GuiWrapper.cpp +++ b/src/GuiWrapper.cpp @@ -71,7 +71,7 @@ GuiWrapper::GuiWrapper(int & argc, char** argv) : mainWindow_(0), frameId_("base_link"), waitForTransform_(true), - waitForTransformDuration_(0.1), // 100 ms + waitForTransformDuration_(0.2), // 200 ms cameraNodeName_(""), lastOdomInfoUpdateTime_(0), depthScanSync_(0), @@ -211,6 +211,7 @@ GuiWrapper::GuiWrapper(int & argc, char** argv) : GuiWrapper::~GuiWrapper() { + UDEBUG(""); if(depthSync_) delete depthSync_; if(depth2Sync_)