@@ -25,51 +25,50 @@ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
25
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
26
26
WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
***************************************************************************************/
28
- #include " k2_client/k2_client.h"
28
+ #include < k2_client/k2_client.h>
29
29
30
- int imageSize = 6220800 ;
30
+ int imageSize = 8294400 ;
31
31
int streamSize = imageSize + sizeof (double );
32
32
std::string cameraName = " rgb" ;
33
33
std::string imageTopicSubName = " image_color" ;
34
+ std::string cameraInfoSubName = " camera_info" ;
34
35
std::string cameraFrame = " " ;
35
36
36
37
int main (int argC,char **argV)
37
38
{
38
- ros::init (argC,argV," startRGB" );
39
- ros::NodeHandle n (cameraName);
40
- image_transport::ImageTransport imT (n);
41
- std::string serverAddress;
42
- n.getParam (" /serverNameOrIP" ,serverAddress);
43
- n.getParam (ros::this_node::getNamespace ().substr (1 ,std::string::npos) +
44
- " /rgb_frame" , cameraFrame);
45
- Socket mySocket (serverAddress.c_str ()," 9000" ,streamSize);
46
- image_transport::CameraPublisher cameraPublisher = imT.advertiseCamera (
47
- imageTopicSubName, 1 );
48
- camera_info_manager::CameraInfoManager camInfoMgr (n,cameraName);
49
- camInfoMgr.loadCameraInfo (" " );
50
- cv::Mat frame;
51
- cv_bridge::CvImage cvImage;
52
- sensor_msgs::Image rosImage;
53
- while (ros::ok ())
54
- {
55
- printf (" Got a frame.\n " );
56
-
57
- mySocket.readData ();
58
- printf (" Creating mat.\n " );
59
- frame = cv::Mat (cv::Size (1920 ,1080 ), CV_8UC3, mySocket.mBuffer );
60
- cv::flip (frame,frame,1 );
61
- printf (" Getting time.\n " );
62
- double utcTime;
63
- memcpy (&utcTime,&mySocket.mBuffer [imageSize],sizeof (double ));
39
+ ros::init (argC,argV," startRGB" );
40
+ ros::NodeHandle n (cameraName);
41
+ image_transport::ImageTransport imT (n);
42
+ std::string serverAddress;
43
+ n.getParam (" /serverNameOrIP" ,serverAddress);
44
+ n.getParam (ros::this_node::getNamespace ().substr (1 ,std::string::npos) + " /rgb_frame" , cameraFrame);
45
+ Socket mySocket (serverAddress.c_str (),const_cast <char *>(" 9000" ),streamSize);
46
+ image_transport::Publisher imagePublisher = imT.advertise (imageTopicSubName, 1 );
47
+ ros::Publisher cameraInfoPub = n.advertise <sensor_msgs::CameraInfo>(cameraInfoSubName,1 );
48
+ camera_info_manager::CameraInfoManager camInfoMgr (n,cameraName);
49
+ camInfoMgr.loadCameraInfo (" " );
50
+ cv::Mat frame;
51
+ cv_bridge::CvImage cvImage;
52
+ sensor_msgs::Image rosImage;
53
+ while (ros::ok ())
54
+ {
55
+ mySocket.readData ();
56
+ frame = cv::Mat (cv::Size (1920 ,1080 ), CV_8UC4, mySocket.mBuffer );
57
+ cv::flip (frame,frame,1 );
58
+ double utcTime;
59
+ memcpy (&utcTime,&mySocket.mBuffer [imageSize],sizeof (double ));
60
+ cvImage.header .stamp = ros::Time (utcTime);
64
61
cvImage.header .frame_id = cameraFrame.c_str ();
65
- cvImage.encoding = " bgr8" ;
66
- cvImage.image = frame;
67
- cvImage.toImageMsg (rosImage);
68
- sensor_msgs::CameraInfo camInfo = camInfoMgr.getCameraInfo ();
69
- camInfo.header .frame_id = cvImage.header .frame_id ;
62
+ cvImage.encoding = " bgra8" ;
63
+ cvImage.image = frame;
64
+ cvImage.toImageMsg (rosImage);
65
+ sensor_msgs::CameraInfo camInfo = camInfoMgr.getCameraInfo ();
66
+ camInfo.header .stamp = cvImage.header .stamp ;
67
+ camInfo.header .frame_id = cvImage.header .frame_id ;
68
+ cameraInfoPub.publish (camInfo);
70
69
printf (" Updating.\n " );
71
- cameraPublisher .publish (rosImage, camInfo, ros::Time (utcTime) );
72
- ros::spinOnce ();
73
- }
74
- return 0 ;
75
- }
70
+ imagePublisher .publish (rosImage);
71
+ ros::spinOnce ();
72
+ }
73
+ return 0 ;
74
+ }
0 commit comments