[ros-users] [camera_divers/camera1394] not able to set bayer pattern if camera is format7

Sebastian Schneider schneider at unibw.de
Wed Jul 13 11:18:19 UTC 2011


Hello,

I tried to obtain images from an AVT Guppy using the nodelet 
configuration, as shown below:

<launch>
   <!-- nodelet manager process -->
   <node pkg="nodelet" type="nodelet" name="camera_nodelet_manager"
         args="manager" />

   <!-- camera driver nodelet -->
   <node pkg="nodelet" type="nodelet" name="camera1394_nodelet"
         args="load camera1394/driver camera_nodelet_manager">
	<param name="video_mode" value="format7_mode0"/>
	<param name="format7_color_coding" value="raw8"/>
	<param name="bayer_pattern" value="bggr"/>
	<param name="bayer_method" value="" />
   </node>

   <!-- Bayer color decoding -->
   <node pkg="nodelet" type="nodelet" name="image_proc_debayer"
         args="load image_proc/debayer camera_nodelet_manager">
     <remap from="image_color" to="camera/image_color" />
     <remap from="image_mono" to="camera/image_mono" />
     <remap from="image_raw" to="camera/image_raw" />
   </node>

   <!-- Image View Node -->
   <node pkg="image_view" type="image_view" name="image_view" >
     <remap from="image" to="camera/image_color"/>
   </node>
</launch>

However, the bayer pattern reconstruction is using the pattern rggb, 
instead of bggr, as it was told. Changing the pattern using the 
dynamic_reconfigure GUI, also does have no effect.

I tried to trace the problem down and I found out, that as my camera is 
set to work in the format7 video-mode, thus most of the work is 
happening in camera_drivers/camera1394/src/nodes/format7.{h,cpp}. I 
looked into the files and found out, that the desired pattern is no 
where set in the code. Instead, regardless of the configured value, the 
pattern type is always read from the camera, using the 
dc1394_format7_get_color_filter function. The corresponding function to 
set the value was removed from libdc1394 a long time ago (God knows why).

Since I don't know how to manipulate this value, I wrote a patch for 
format7.{h,cpp} that basically stores the value of the desired bayer 
pattern, and passes this value on in the corresponding field of 
sensor_msgs::Image in the function unpackData. The patch is appended to 
this email.

I'm not sure if what I do there is right, even though I now have color 
images with the correct color (the sky is really blue now). Maybe 
someone responsible for the developement of this driver can have a look 
at it.

Yours,

Sebastian
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: format7-bayer-patter.patch
URL: <http://lists.osuosl.org/pipermail/ros-users/attachments/20110713/99974bec/attachment-0001.ksh>


More information about the ros-users mailing list