ros-drivers / pointgrey_camera_driver

ROS driver for Pt. Grey cameras, based on the official FlyCapture2 SDK.
128 stars 180 forks source link

Two mono Chameleon3 cameras synchronized as Master Slave #175

Open astronaut971 opened 5 years ago

astronaut971 commented 5 years ago

Hi Im using Ubuntu 16.04 and ROS kinetic. Would like to do stereo calibration with two Chamelon3 PointGrey Cameras. I found that ROS drivers for Chameleon3 pointgrey_camera_driver support only FlyCapture2 SDK, But there the GUI doesnt work good. Is there any launch file where can set up both Chameleon3 Cameras for synchronized mode and save multiply images or video in order to calibrate both cameras using ROS stereo calibration tutorial?

I used this launch file

<launch>
  <arg name="left_camera_serial" default="18081067" />
  <arg name="left_camera_calibrated" default="0" />
  <arg name="right_camera_serial" default="17496474" />
  <arg name="right_camera_calibrated" default="0" />
  <arg name="frame_rate" default="15" />

<group ns="left_camera">
    <node pkg="nodelet" type="nodelet" name="left_camera_nodelet_manager" args="manager" />

    <node pkg="nodelet" type="nodelet" name="left_camera_nodelet"
          args="load pointgrey_camera_driver/PointGreyCameraNodelet left_camera_nodelet_manager" >
      <param name="frame_id" value="left_camera" />
      <param name="serial" value="$(arg left_camera_serial)" />

      <!-- When unspecified, the driver will use the default framerate as given by the
           camera itself. Use this parameter to override that value for cameras capable of
           other framerates. -->
      <param name="frame_rate" value="$(arg frame_rate)" />

      <!-- Use the camera_calibration package to create this file -->
      <param name="camera_info_url" if="$(arg left_camera_calibrated)"
             value="file://$(env HOME)/.ros/camera_info/$(arg left_camera_serial).yaml" />
    </node>

    <node pkg="nodelet" type="nodelet" name="image_proc_debayer_left"
        args="load image_proc/debayer left_camera_nodelet_manager">
    </node>
  </group>

  <group ns="right_camera">
    <node pkg="nodelet" type="nodelet" name="right_camera_nodelet_manager" args="manager" />

    <node pkg="nodelet" type="nodelet" name="right_camera_nodelet"
          args="load pointgrey_camera_driver/PointGreyCameraNodelet right_camera_nodelet_manager" >
      <param name="frame_id" value="right_camera" />
      <param name="serial" value="$(arg right_camera_serial)" />

      <!-- When unspecified, the driver will use the default framerate as given by the
           camera itself. Use this parameter to override that value for cameras capable of
           other framerates. -->
      <param name="frame_rate" value="$(arg frame_rate)" />

      <!-- Use the camera_calibration package to create this file -->
      <param name="camera_info_url" if="$(arg right_camera_calibrated)"
             value="file://$(env HOME)/.ros/camera_info/$(arg right_camera_serial).yaml" />
    </node>

    <node pkg="nodelet" type="nodelet" name="image_proc_debayer_right"
        args="load image_proc/debayer right_camera_nodelet_manager">
    </node>
  </group>
</launch>

Then got this ERROR: 1531907273.065364517]: Reconfigure Callback failed with error: PointGreyCamera::setExternalStrobe Could not set strobe control. | FlyCapture2::ErrorType 23 Failed to set GPIO pin direction. Pin may be optoisolated.

Any help?

MattDom commented 5 years ago

I can't see any configuration regarding the strobe and/or a gpio. Maybe you got something wrong, when you tried to set up the trigger with the flycapture gui? These settings are saved to the eeprom of the camera and are load when the camera get's powered on. With the configuraton of this package you can override these settings.

Try it with adding the following parameter to your lauchfile for each camera:

<param name="enable_strobe1" value="false" />

This is just a guess. Tell us if it works or not.