ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

answered 2014-04-29 04:39:31 -0500

joq gravatar image

The IEEE 1394 Digital Camera standard specifies six modes that provide data in YUV422 format:

              Format0_Mode1: "320x240_yuv422"
              Format0_Mode3: "640x480_yuv422"
              Format1_Mode0: "800x600_yuv422"
              Format1_Mode3: "1024x768_yuv422"
              Format2_Mode0: "1280x960_yuv422"
              Format2_Mode3: "1600x1200_yuv422"

The question is whether your camera supports any of them. Try seting the video_mode parameter to the corresponding strings, from "320x240_yuv422" to "1600x1200_yuv422". If the device supports the corresponding mode, that parameter will be accepted, otherwise the device will reject it.

If the device does not support any of those modes, the camera1394 driver will not provide YUV422 data. It does not do conversions in software. You would need to write your own nodelet to provide that conversion.

The IEEE 1394 Digital Camera standard specifies six modes that provide data in YUV422 format:

              Format0_Mode1: "320x240_yuv422"
              Format0_Mode3: "640x480_yuv422"
              Format1_Mode0: "800x600_yuv422"
              Format1_Mode3: "1024x768_yuv422"
              Format2_Mode0: "1280x960_yuv422"
              Format2_Mode3: "1600x1200_yuv422"

The question is whether your camera supports any of them. Try seting the video_mode parameter to the corresponding strings, from "320x240_yuv422" to "1600x1200_yuv422". If the device supports the corresponding mode, that parameter will be accepted, otherwise the device will reject it.

If the device does not support any of those modes, the camera1394 driver will not provide YUV422 data. It does not do conversions in software. You would need to write your own nodelet to provide that conversion.

UPDATE: The encoding should be: sensor_msgs::image_encodings::YUV422.

I don't know where you got that other link from, but that is the actual source. You can verify the encoding being published while the driver is running like this:

$ rostopic echo /camera/image_raw/encoding

It should print "yuv422" at the current frame rate, when you are in the correct mode.

The IEEE 1394 Digital Camera standard specifies six modes that provide data in YUV422 format:

              Format0_Mode1: "320x240_yuv422"
              Format0_Mode3: "640x480_yuv422"
              Format1_Mode0: "800x600_yuv422"
              Format1_Mode3: "1024x768_yuv422"
              Format2_Mode0: "1280x960_yuv422"
              Format2_Mode3: "1600x1200_yuv422"

The question is whether your camera supports any of them. Try seting the video_mode parameter to the corresponding strings, from "320x240_yuv422" to "1600x1200_yuv422". If the device supports the corresponding mode, that parameter will be accepted, otherwise the device will reject it.

If the device does not support any of those modes, the camera1394 driver will not provide YUV422 data. It does not do conversions in software. You would need to write your own nodelet to provide that conversion.

UPDATE: The encoding should be: sensor_msgs::image_encodings::YUV422.

I don't know where you got that other link from, but that is the actual source. You can verify the encoding being published while the driver is running like this:

$ rostopic echo /camera/image_raw/encoding

It should print "yuv422" at the current frame rate, when you are in the correct mode.

The Camera1394 nodelet and camera1394_node both wrap the same driver. It is very unlikely that they would publish different encodings for the same video_mode.