50 #if defined(VISP_HAVE_OPENCV)
52 #include <visp/vpImageConvert.h>
53 #include <visp/vpFrameGrabberException.h>
54 #include <sensor_msgs/CompressedImage.h>
55 #include <cv_bridge/cv_bridge.h>
67 first_img_received(false),
68 first_param_received(false),
71 _topic_image(
"image"),
72 _topic_info(
"camera_info"),
73 _master_uri(
"http://127.0.0.1:11311"),
75 _image_transport(
"raw"),
110 if(!ros::isInitialized()) ros::init(argc, argv,
"visp_node", ros::init_options::AnonymousName);
111 n =
new ros::NodeHandle;
113 if (ros::param::get(
"~image_transport", str)){
117 ros::param::set(
"~image_transport",
"raw");
132 spinner =
new ros::AsyncSpinner(1);
151 if(ros::isInitialized() && ros::master::getURI() !=
_master_uri){
153 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
154 "ROS grabber already initialised with a different master_URI (" + ros::master::getURI() +
" != " +
_master_uri +
")") );
159 argv[0] =
new char [255];
160 argv[1] =
new char [255];
162 std::string exe =
"ros.exe", arg1 =
"__master:=";
163 strcpy(argv[0], exe.c_str());
165 strcpy(argv[1], arg1.c_str());
226 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
"Grabber not initialized.") );
230 timestamp . tv_sec =
_sec;
231 timestamp . tv_nsec =
_nsec;
232 vpImageConvert::convert(
data, I,
flip);
255 bool new_image =
false;
258 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
"Grabber not initialized.") );
262 timestamp . tv_sec =
_sec;
263 timestamp . tv_nsec =
_nsec;
264 vpImageConvert::convert(
data, I,
flip);
287 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
"Grabber not initialized.") );
291 timestamp . tv_sec =
_sec;
292 timestamp . tv_nsec =
_nsec;
293 vpImageConvert::convert(
data, I,
flip);
316 bool new_image =
false;
319 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
"Grabber not initialized.") );
323 timestamp . tv_sec =
_sec;
324 timestamp . tv_nsec =
_nsec;
325 vpImageConvert::convert(
data, I,
flip);
349 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
"Grabber not initialized.") );
353 timestamp . tv_sec =
_sec;
354 timestamp . tv_nsec =
_nsec;
355 retour =
data.clone();
374 struct timespec timestamp;
393 struct timespec timestamp;
409 struct timespec timestamp;
428 struct timespec timestamp;
444 struct timespec timestamp;
613 throw (vpFrameGrabberException(vpFrameGrabberException::initializationError,
"Grabber not initialized.") );
630 cv::Mat data_t = cv::imdecode(msg->data,1);
631 cv::Size data_size = data_t.size();
636 p.rectifyImage(data_t,
data);
642 _sec = msg->header.stamp.sec;
643 _nsec = msg->header.stamp.nsec;
652 cv_bridge::CvImageConstPtr cv_ptr;
655 cv_ptr = cv_bridge::toCvShare(msg,
"bgr8");
657 catch (cv_bridge::Exception& e)
659 ROS_ERROR(
"cv_bridge exception: %s", e.what());
663 p.rectifyImage(cv_ptr->image,
data);
665 cv_ptr->image.copyTo(
data);
667 cv::Size data_size =
data.size();
670 _sec = msg->header.stamp.sec;
671 _nsec = msg->header.stamp.nsec;
680 _cam = visp_bridge::toVispCameraParameters(*msg);
681 p.fromCameraInfo(msg);
volatile unsigned short usWidth
void imageCallbackRaw(const sensor_msgs::Image::ConstPtr &msg)
volatile bool first_img_received
void setRectify(bool rectify)
void setFlip(bool flipType)
volatile bool mutex_param
void setCameraInfoTopic(std::string topic_name)
bool acquireNoWait(vpImage< unsigned char > &I)
bool getCameraInfo(vpCameraParameters &cam)
void paramCallback(const sensor_msgs::CameraInfo::ConstPtr &msg)
volatile unsigned short usHeight
volatile bool isInitialized
std::string _image_transport
ros::Subscriber image_data
unsigned short getHeight() const
void imageCallback(const sensor_msgs::CompressedImage::ConstPtr &msg)
ros::AsyncSpinner * spinner
void setImageTransport(std::string image_transport)
class for Camera video capture for ROS middleware.
ros::Subscriber image_info
volatile bool mutex_image
void setNodespace(std::string nodespace)
void setMasterURI(std::string master_uri)
void setImageTransport(std::string image_transport)
volatile bool first_param_received
void setImageTopic(std::string topic_name)
image_geometry::PinholeCameraModel p
unsigned short getWidth() const