From 166cd1c75e4fe02285172bda619e4c914ced263e Mon Sep 17 00:00:00 2001 From: Christian Forster Date: Wed, 11 Jun 2014 10:37:40 +0200 Subject: [PATCH] added ros parameter to disable user input thread. --- svo_ros/src/vo_node.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/svo_ros/src/vo_node.cpp b/svo_ros/src/vo_node.cpp index d903b3b..8a6f88c 100644 --- a/svo_ros/src/vo_node.cpp +++ b/svo_ros/src/vo_node.cpp @@ -45,7 +45,7 @@ public: svo::Visualizer visualizer_; bool publish_markers_; //!< publish only the minimal amount of info (choice for embedded devices) bool publish_dense_input_; - vk::UserInputThread* user_input_thread_; + boost::shared_ptr user_input_thread_; ros::Subscriber sub_remote_key_; std::string remote_input_; vk::AbstractCamera* cam_; @@ -61,11 +61,14 @@ VoNode::VoNode() : vo_(NULL), publish_markers_(vk::getParam("svo/publish_markers", true)), publish_dense_input_(vk::getParam("svo/publish_dense_input", false)), - user_input_thread_(new vk::UserInputThread()), remote_input_(""), cam_(NULL), quit_(false) { + // Start user input thread in parallel thread that listens to console keys + if(vk::getParam("svo/accept_console_user_input", true)) + user_input_thread_ = boost::make_shared(); + // Create Camera if(!vk::camera_loader::loadFromRosNs("svo", cam_)) throw std::runtime_error("Camera model not correctly specified."); @@ -87,8 +90,9 @@ VoNode::VoNode() : VoNode::~VoNode() { delete vo_; - delete user_input_thread_; delete cam_; + if(user_input_thread_ != NULL) + user_input_thread_->stop(); } void VoNode::imgCb(const sensor_msgs::ImageConstPtr& msg) @@ -118,9 +122,12 @@ void VoNode::processUserActions() char input = remote_input_.c_str()[0]; remote_input_ = ""; - char console_input = user_input_thread_->getInput(); - if(console_input != 0) - input = console_input; + if(user_input_thread_ != NULL) + { + char console_input = user_input_thread_->getInput(); + if(console_input != 0) + input = console_input; + } switch(input) {