47 #if defined( VISP_HAVE_OPENCV ) 49 #include <visp3/core/vpFrameGrabberException.h> 50 #include <visp3/core/vpImageConvert.h> 53 #include <sensor_msgs/CompressedImage.h> 62 : m_isInitialized( false )
65 , m_mutex_image( true )
66 , m_mutex_param( true )
67 , m_first_img_received( false )
68 , m_first_param_received( false )
71 , m_master_uri(
"http://localhost:11311" )
72 , m_topic_image(
"image" )
73 , m_topic_cam_info(
"camera_info" )
75 , m_image_transport(
"raw" )
160 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
161 "ROS grabber already initialised with a different master_URI (" +
168 argv[0] =
new char[255];
169 argv[1] =
new char[255];
171 std::string exe =
"ros.exe", arg1 =
"__master:=";
172 strcpy( argv[0], exe.c_str() );
174 strcpy( argv[1], arg1.c_str() );
235 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
"Grabber not initialized." ) );
240 timestamp.tv_sec =
m_sec;
241 timestamp.tv_nsec =
m_nsec;
261 struct timespec timestamp;
263 timestamp_second = timestamp.tv_sec +
static_cast< double >( timestamp.tv_nsec ) * 1e-9;
280 bool new_image =
false;
284 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
"Grabber not initialized." ) );
289 timestamp.tv_sec =
m_sec;
290 timestamp.tv_nsec =
m_nsec;
313 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
"Grabber not initialized." ) );
318 timestamp.tv_sec =
m_sec;
319 timestamp.tv_nsec =
m_nsec;
337 struct timespec timestamp;
339 timestamp_second = timestamp.tv_sec +
static_cast< double >( timestamp.tv_nsec ) * 1e-9;
356 bool new_image =
false;
360 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
"Grabber not initialized." ) );
365 timestamp.tv_sec =
m_sec;
366 timestamp.tv_nsec =
m_nsec;
391 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
"Grabber not initialized." ) );
396 timestamp.tv_sec =
m_sec;
397 timestamp.tv_nsec =
m_nsec;
414 struct timespec timestamp;
430 struct timespec timestamp;
444 struct timespec timestamp;
460 struct timespec timestamp;
475 struct timespec timestamp;
654 throw( vpFrameGrabberException( vpFrameGrabberException::initializationError,
"Grabber not initialized." ) );
673 cv::Mat img = cv::imdecode( msg->data, 1 );
674 cv::Size data_size = img.size();
687 m_width =
static_cast< unsigned int >( data_size.width );
688 m_height =
static_cast< unsigned int >( data_size.height );
689 m_sec = msg->header.stamp.sec;
690 m_nsec = msg->header.stamp.nsec;
708 ROS_ERROR(
"cv_bridge exception: %s", e.what() );
717 cv_ptr->image.copyTo(
m_img );
719 cv::Size data_size =
m_img.size();
720 m_width =
static_cast< unsigned int >( data_size.width );
721 m_height =
static_cast< unsigned int >( data_size.height );
722 m_sec = msg->header.stamp.sec;
723 m_nsec = msg->header.stamp.nsec;
CvImageConstPtr toCvShare(const sensor_msgs::ImageConstPtr &source, const std::string &encoding=std::string())
void imageCallbackRaw(const sensor_msgs::Image::ConstPtr &msg)
ROSCPP_DECL const std::string & getURI()
volatile unsigned int m_width
void setRectify(bool rectify)
void setFlip(bool flipType)
vpCameraParameters toVispCameraParameters(const sensor_msgs::CameraInfo &cam_info)
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
volatile bool m_mutex_param
ROSCPP_DECL bool isInitialized()
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
volatile bool m_first_param_received
bool acquireNoWait(vpImage< unsigned char > &I)
volatile bool m_first_img_received
volatile bool m_mutex_image
std::string m_topic_cam_info
bool getCameraInfo(vpCameraParameters &cam)
void paramCallback(const sensor_msgs::CameraInfo::ConstPtr &msg)
void setImageTopic(const std::string &topic_name)
ros::Subscriber m_img_sub
ROSCPP_DECL void set(const std::string &key, const XmlRpc::XmlRpcValue &v)
void rectifyImage(const cv::Mat &raw, cv::Mat &rectified, int interpolation=cv::INTER_LINEAR) const
std::string m_topic_image
ROSCPP_DECL bool get(const std::string &key, std::string &s)
unsigned int getHeight() const
bool fromCameraInfo(const sensor_msgs::CameraInfo &msg)
volatile unsigned int m_height
std::string m_image_transport
void imageCallback(const sensor_msgs::CompressedImage::ConstPtr &msg)
class for Camera video capture for ROS middleware.
void setNodespace(const std::string &nodespace)
ros::Subscriber m_cam_info_sub
void setMasterURI(const std::string &master_uri)
unsigned int getWidth() const
image_geometry::PinholeCameraModel m_p
void setCameraInfoTopic(const std::string &topic_name)
ros::AsyncSpinner * m_spinner
void setImageTransport(const std::string &image_transport)
volatile bool m_isInitialized