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
<
sturm@informatik.uni-freiburg.de> 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 <abachrach@gmail.com> 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 <sh2723@columbia.edu> 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 <abachrac@mit.edu> 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, <sh2723@columbia.edu> 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
>>>> ros-users@code.ros.org
>>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users@code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users@code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>
>>
>> _______________________________________________
>> ros-users mailing list
>> ros-users@code.ros.org
>> 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" />