Re: [ros-users] Bumblebee2 v1.0 release

Top Page
Attachments:
Message as email
+ (text/plain)
+ bumblebee.patch (text/x-patch)
Delete this message
Reply to this message
Author: Jürgen Sturm
Date:  
To: ros-users, Soonhac Hong, Abe Bachrach
Subject: Re: [ros-users] Bumblebee2 v1.0 release
Hi,

after some experiments, I discovered that our bumblebee apparently
only works with DC1394_VIDEO_MODE_FORMAT7_3. I have attached a patch
that adds this mode to the bumblebee package. Now I get the two stereo
images at normal video rates.

Then I tried to run the stereo_calibration, but found that no camera
info is published yet (and no service is advertised..). Is somebody
already working on this, or has a solution for that?

Thanks,
Juergen

On Mon, Jun 14, 2010 at 8:17 PM, Jürgen Sturm
<> wrote:
> Hi Soonhac,
>
> thanks for the driver, howeve rI'm having the same problems as Abe:
> the driver hangs on my computer after calling dc1394_capture_dequeue.
> With coriander, I can view the video from one of the cameras (so
> firewire etc is working properly).
>
> After I launch the bumblebee node (and terminate it again with
> killall, because ctrl-c/z does not work), coriander also is unable to
> grab images from the camera, probably because of the unclean shutdown.
>
> Did anybody find a solution (or the reason) for this problem?
>
> Thanks
> Juergen
>
> On Tue, Jun 8, 2010 at 5:55 PM, Abe Bachrach <> wrote:
>> when I plug in the bumblebee, there are BOTH /dev/raw1394 and
>> /dev/video1394/0
>>
>> I changed the permissions on both of them such that i have the proper
>> permissions (I can get images off the camera using coriander, and another
>> software package)
>>
>> from digging down a little more, it seems like the driver gets stuck in the
>> call to:
>> dc1394_capture_dequeue (camera_, DC1394_CAPTURE_POLICY_WAIT, &frame);
>> inside of the function
>> void Camera1394::readData(sensor_msgs::Image& image)
>> in dev_camera1394.cpp
>>
>> the call to dc1394_capture_dequeue just never returns.
>>
>> thanks!
>> -=Abe
>>
>> On Tue, Jun 8, 2010 at 10:17 AM, Soonhac Hong <> wrote:
>>>
>>> Hi Abe,
>>> Could you check if there is /dev/raw1394 or /dev/video1394? When I pluged
>>> bumblebee2 into ubuntu hardy, raw1394 didn't exist. Thus, I used other
>>> pointgray 1394 camera for /dev/raw1394 before pluging bumblebee2. If you
>>> have a permission problem, you may use chmod. Additionally, you may check
>>> published images by using $rostopic list.
>>> Best,
>>> Soonhac Hong
>>> On Jun 8, 2010, at 1:02 AM, Abe Bachrach <> wrote:
>>>
>>> Hi Sonnhac,
>>> Thanks for putting together the bumblebee2 plugin.
>>> Unforutnately I've been unable to get it to publish images with my bumblee
>>> camera...
>>> everything compiled fine, and seems to be working, however no images are
>>> published on the image channels:
>>> when I launch the driver, the LED on the bumblee goes bright, and i get
>>> the following output:
>>>>
>>>> abachrac@pinzolo:~/ros/pkgs/bumblebee2$ roslaunch bumblebee2
>>>> Bumblebee2.launch
>>>> ... logging to
>>>> /home/abachrac/.ros/log/3287496e-72b8-11df-97ed-00219b1e7836/roslaunch-pinzolo-5748.log
>>>> started roslaunch server http://pinzolo:52475/
>>>> SUMMARY
>>>> ========
>>>> PARAMETERS
>>>>  * /bumblebee2/bayer_pattern
>>>>  * /bumblebee2/video_mode
>>>>  * /bumblebee2/gain
>>>>  * /bumblebee2/shutter
>>>>  * /bumblebee2/whitebalance
>>>>  * /bumblebee2/brightness
>>>>  * /bumblebee2/fps
>>>>  * /bumblebee2/bayer_method
>>>> NODES
>>>>   /
>>>>     bumblebee2 (bumblebee2/bumblebee2)
>>>> ROS_MASTER_URI=http://pinzolo:11311/
>>>> core service [/rosout] found
>>>> process[bumblebee2-1]: started with pid [5767]
>>>> [ INFO] [1275972976.842327391]: Reconfigure request: brightness -1,
>>>> encoding , exposure -1, gain -1, shutter -1, whitebalance auto
>>>> [ INFO] [1275972976.842409323]: reconfigure level = 4294967295
>>>> [ INFO] [1275972976.849244447]: [camera] video mode: 640x480_stereo_mono,
>>>> frame ID: /camera
>>>> [ INFO] [1275972977.014397825]: Found camera with GUID b09d010060d173
>>>> [ INFO] [1275972977.014474607]: No guid specified, using first camera
>>>> found, GUID: b09d010060d173
>>>> [ INFO] [1275972977.020052503]: [camera] connected to device, ID:
>>>> 00b09d010060d173
>>>> [ INFO] [1275972977.024681309]: [camera] Auto Brightness set
>>>> [ INFO] [1275972977.029742081]: [camera] Auto Exposure set
>>>> [ INFO] [1275972977.031864626]: [camera] Auto Gain set
>>>> [ INFO] [1275972977.033989724]: [camera] Auto Shutter set
>>>> [ INFO] [1275972977.036315836]: [camera] Auto Whitebalance set
>>>> [ INFO] [1275972977.038513379]: [camera] Encoding set to
>>>
>>> But then nothing happens...
>>> any ideas?
>>> -=Abe
>>> On Thu, May 20, 2010 at 11:10 AM, <> wrote:
>>>>
>>>> Hi All,
>>>>
>>>> I'd like to release Bumblebee2 v1.0 at
>>>> http://code.google.com/p/cu-ros-pkg/. If there is any doubt or
>>>> problems, feel free to contact me.
>>>>
>>>> Best,
>>>> Soonhac Hong
>>>> _______________________________________________
>>>> ros-users mailing list
>>>>
>>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>>
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>>
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>
>>
>> _______________________________________________
>> ros-users mailing list
>>
>> https://code.ros.org/mailman/listinfo/ros-users
>>
>>
>

Index: src/bumblebee2.cpp
===================================================================
--- src/bumblebee2.cpp    (revision 12)
+++ src/bumblebee2.cpp    (working copy)
@@ -52,7 +52,7 @@
 #include <sensor_msgs/CameraInfo.h>
 #include <sensor_msgs/image_encodings.h>
 #include <tf/transform_listener.h>
-#include <camera_info_manager/camera_info.h>
+#include <camera_info_manager/camera_info_manager.h>
 #include <image_transport/image_transport.h>
 #include <dynamic_reconfigure/server.h>
 #include <dynamic_reconfigure/SensorLevels.h>
@@ -379,6 +379,7 @@
   /** Read camera data */
   void read()
   {
+
         // get current CameraInfo data
         left_cam_info_ = right_cam_info_= cinfo_->getCameraInfo();
         left_image_.header.frame_id = right_image_.header.frame_id = image_.header.frame_id = left_cam_info_.header.frame_id = right_cam_info_.header.frame_id = frame_id_;
Index: src/dev_camera1394.cpp
===================================================================
--- src/dev_camera1394.cpp    (revision 12)
+++ src/dev_camera1394.cpp    (working copy)
@@ -34,7 +34,6 @@


#include <stdint.h>
#include <sensor_msgs/image_encodings.h>
-
#include "bumblebee2.h"

 namespace enc = sensor_msgs::image_encodings;
@@ -108,10 +107,14 @@
     videoMode_ = DC1394_VIDEO_MODE_800x600_YUV422;
   else if (0 == strcmp(mode, "1024x768_mono"))
     videoMode_ = DC1394_VIDEO_MODE_1024x768_MONO8;
+  else if (0 == strcmp(mode, "1024x768_stereo_mono"))
+    videoMode_ = DC1394_VIDEO_MODE_1024x768_MONO16;
   else if (0 == strcmp(mode, "1024x768_yuv422"))
     videoMode_ = DC1394_VIDEO_MODE_1024x768_YUV422;
   else if (0 == strcmp(mode, "1280x960_mono"))
     videoMode_ = DC1394_VIDEO_MODE_1280x960_MONO8;
+  else if (0 == strcmp(mode, "format7_3"))
+    videoMode_ = DC1394_VIDEO_MODE_FORMAT7_3;
   else //if (0 == strcmp(mode, "1280x960_yuv422")) {
     videoMode_ = DC1394_VIDEO_MODE_1280x960_YUV422;
   //}
@@ -219,7 +222,6 @@
              const char* bayer,
              const char* method)
 {
-
   findFrameRate(fps);
   findVideoMode(video_mode);
   findBayerFilter(bayer, method);
@@ -336,6 +338,7 @@
       ROS_WARN("Failed to set iso speed");
       DMA_Success = false;
     }
+
   if (DC1394_SUCCESS != dc1394_video_set_mode(camera_,videoMode_))
     {
       ROS_WARN("Failed to set mode");
@@ -621,11 +624,10 @@
   return 0;
 }


-
+using namespace std;
 /** Return an image frame */
 void Camera1394::readData(sensor_msgs::Image& image)
 {
-
   if (camera_ == NULL) {
     CAM_EXCEPT(bumblebee2::Exception, "Read attempted on NULL camera port!");
     return;
@@ -634,7 +636,6 @@
   //  CAM_EXCEPT(bumblebee2::Exception, "Read not implemented.");


   dc1394video_frame_t * frame = NULL;
-
   dc1394_capture_dequeue (camera_, DC1394_CAPTURE_POLICY_WAIT, &frame);
   if (!frame)
     {
@@ -721,6 +722,8 @@
         }
       break;
     case DC1394_VIDEO_MODE_640x480_MONO16:        // added by soonhac for bumblebee2
+    case DC1394_VIDEO_MODE_1024x768_MONO16:
+    case DC1394_VIDEO_MODE_FORMAT7_3:
       image.step=image.width;
       image_size = image.height*image.step*2;        //image size should be double size of image size because each pixel has 16 bit data.
       image.encoding = "mono8";
Index: launch/Bumblebee2.launch
===================================================================
--- launch/Bumblebee2.launch    (revision 12)
+++ launch/Bumblebee2.launch    (working copy)
@@ -3,8 +3,8 @@
 <launch>
   <node pkg="bumblebee2" type="bumblebee2" name="bumblebee2"
     output="screen" respawn="false">
-    <param name="video_mode" value="640x480_stereo_mono" />
-    <param name="fps" value="15" />
+    <param name="video_mode" value="format7_3" />
+    <param name="fps" value="1" />
     <param name="gain" value="auto" />   
     <param name="brightness" value="auto" /> 
     <param name="whitebalance" value="auto" />