FramerateNode.cpp
Go to the documentation of this file.
00001 /*********************************************************************
00002  * Software License Agreement (BSD License)
00003  *
00004  *  Copyright (c) 2012, Kevin Hallenbeck
00005  *  All rights reserved.
00006  *
00007  *  Redistribution and use in source and binary forms, with or without
00008  *  modification, are permitted provided that the following conditions
00009  *  are met:
00010  *
00011  *   * Redistributions of source code must retain the above copyright
00012  *     notice, this list of conditions and the following disclaimer.
00013  *   * Redistributions in binary form must reproduce the above
00014  *     copyright notice, this list of conditions and the following
00015  *     disclaimer in the documentation and/or other materials provided
00016  *     with the distribution.
00017  *   * Neither the name of Kevin Hallenbeck nor the names of its
00018  *     contributors may be used to endorse or promote products derived
00019  *     from this software without specific prior written permission.
00020  *
00021  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00022  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00023  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00024  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00025  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00026  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00027  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00028  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00030  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00031  *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00032  *  POSSIBILITY OF SUCH DAMAGE.
00033  *********************************************************************/
00034 
00035 #include <ueye/FramerateNode.h>
00036 
00037 namespace ueye
00038 {
00039 
00040 FramerateNode::FramerateNode(ros::NodeHandle node, ros::NodeHandle priv_nh)
00041 {
00042   // Grab the topic name from the ROS parameter
00043   std::string topic = std::string("/image_raw");
00044   priv_nh.getParam("topic", topic);
00045 
00046   // Set up Subscribers
00047   sub_ = node.subscribe(topic, 2, &FramerateNode::imageRecv, this, ros::TransportHints().tcpNoDelay(true));
00048 }
00049 
00050 FramerateNode::~FramerateNode()
00051 {
00052 }
00053 
00054 void FramerateNode::imageRecv(const sensor_msgs::Image::ConstPtr& rosImg)
00055 {
00056   static double rate = 0.0;
00057   static long int oldTimeStamp = 0;
00058   long int newTimeStamp = ros::Time::now().toNSec();
00059   if (oldTimeStamp != 0) {
00060     double temp_rate = 1000000000.0 / ((double)(newTimeStamp - oldTimeStamp));
00061     if (rate == 0) {
00062       rate = temp_rate;
00063     } else {
00064       rate += (temp_rate - rate) * 0.2;
00065     }
00066   }
00067   oldTimeStamp = newTimeStamp;
00068 
00069   // Convert the ROS Image to an OpenCV Mat
00070   cv_bridge::CvImageConstPtr cv_ptr = cv_bridge::toCvShare(rosImg, sensor_msgs::image_encodings::RGB8);
00071 
00072   ROS_INFO("%d %dx%d at %0.2fHz", rosImg->header.seq, cv_ptr->image.cols, cv_ptr->image.rows, rate);
00073 }
00074 
00075 } // namespace ueye


ueye
Author(s): Kevin Hallenbeck
autogenerated on Fri Aug 28 2015 13:28:08