void RobotWidget::subscribeToCamera(const std::string& topic) {
	boost::function<void(const sensor_msgs::ImageConstPtr)> imageCallBack
				= boost::bind(&RobotWidget::onCameraImageMessage, this, _1);
	image_transport::ImageTransport image_transport_(node_handle_);

	camera_subscriber_ = image_transport_.subscribe(topic, 10, imageCallBack, ros::VoidPtr(),
													 image_transport::TransportHints("compressed", ros::TransportHints().unreliable()));
}
int main(int argc, char **argv)
{
  ros::init(argc, argv, "ellipse_detection_node");
  ros::NodeHandle nh, nh_priv("~");
  tf_listener_ = new tf::TransformListener();
  
  // Reading params
  bool params_loaded = true;
  params_loaded *= nh_priv.getParam("img_in",img_in_topic_);
  params_loaded *= nh_priv.getParam("contour_min_pix_size",contour_min_pix_size_);
  params_loaded *= nh_priv.getParam("ellipse_max_ratio",ellipse_max_ratio_);
  params_loaded *= nh_priv.getParam("hole_radius",hole_radius_);
  params_loaded *= nh_priv.getParam("holes_min_spacing",holes_min_spacing_);
  params_loaded *= nh_priv.getParam("debug",debug_);
  params_loaded *= nh_priv.getParam("base_frame",base_frame_);
  params_loaded *= nh_priv.getParam("out_pose_topic",out_pose_topic_);
  params_loaded *= nh_priv.getParam("out_error_topic",out_error_topic_);
  params_loaded *= nh_priv.getParam("fit_ellipse_max_error",fit_ellipse_max_error_);
  if(!params_loaded){
    ROS_ERROR("Couldn't find all the required parameters. Closing...");
    return -1;
  }
  
  // ROS suscribers and publishers
  image_transport::ImageTransport image_transport_(nh);
  image_transport::CameraSubscriber depth_sub_ = image_transport_.subscribeCamera(img_in_topic_, 1, callback);
  
//   pose0_pub_ = nh.advertise<geometry_msgs::PoseStamped>(out_pose_topic_+"_0", 1);
//   pose1_pub_ = nh.advertise<geometry_msgs::PoseStamped>(out_pose_topic_+"_1", 1);
  error_pub_ = nh_priv.advertise<geometry_msgs::Twist>(out_error_topic_, 1);
  
  // OpenCV windows 
  if(debug_){
    cv::namedWindow("Original Image");
    cv::namedWindow("1/MedianBlur");
    cv::namedWindow("2/MonoImage");
    cv::namedWindow("3/AdaptiveThresholding");
    cv::namedWindow("4/Opening");
  }
  cv::namedWindow("Ellipse detection");
  
  ros::spin();
  ros::shutdown();
  return 0;
}