Last modified 8 years ago Last modified on 23/07/13 11:31:29

Laser Range Finder Plugin

Hardware driver plugin to access data from Bumblebee2 stereo camera by Point Grey. This includes raw and rectified images, disparities, and point clouds (XYZ and XYZRGB). The plugin uses the Triclops SDK for the rectification using the internal calibration information that comes with the cameras. Stereo corresponding matching is performed using the Triclops SDK or OpenCV. The former currently crashes on recent Linux systems and therefore cannot be used very often.

A calibration GUI provides access to the stereo parameters for on-the-fly tuning and evaluation.


Config Values

  # Can be either triclops or opencv
  # Note that current triclops versions crash on modern Linux systems
  # due to an incompatible Boost version
  stereo-matcher: opencv

  # Coordinate frame ID of the basis of the BB2, i.e. the center point
  # at the lower camera bound (the screw hole)
  base-frame: /bumblebee2/base

  # Prefix to prepend to coordinate frame IDs the two cameras. The plugin will
  # append left and right respectively and publish them
  # at the lower camera bound (the screw hole)
  frames-prefix: /bumblebee2/

  # Interval in seconds in which to publish the transforms
  frames-interval: 1.0

  # OpenCV stereo correspondence by block matching parameters
    # *** pre-filtering (normalization of input images)
    # Filter type, can be xsobel or normalized_response
    pre-filter-type: normalized_response

    # averaging window size: 5x5..21x21
    pre-filter-size: 15

    # the output of pre-filtering is clipped by [- pre-filter-cap,pre-filter-cap]
    pre-filter-cap: 15

    # *** correspondence using Sum of Absolute Difference (SAD)
    # 5x5..21x21
    sad-window-size: 15

    # minimum disparity (can be negative)
    min-disparity: 32

    # maximum disparity - minimum disparity (> 0)
    num-disparities: 128

    # *** post-filtering
    # the disparity is only computed for pixels
    # with textured enough neighborhood
    texture-threshold: 20

    # accept the computed disparity d* only if
    # SAD(d) >= SAD(d*)*(1 + uniquenessRatio/100.)
    # for any d != d*+/-1 within the search range.
    uniqueness-ratio: 30

    # disparity variation window
    speckle-window-size: 32

    # acceptable range of variation in window
    speckle-range: 32

    # if enabled, the results may be more accurate,
    # at the expense of slower processing
    try-smaller-windows: false


Make sure that you have a (static) transform that connects the frame /bumblebee2/base (or whatever you choose to set in the configuration) to your transforms tree. The base of the Bumblebee is essentially the lower center of the middle screw hole. The coordinate system is expected to have X pointing forward, Y to the left, and Z upwards (in the camera viewing direction). Note, however, that the coordinate frames for the individual lenses have Z pointing forward, X to the right, and Y downwards. The former coordinate system typical in robot applications (often aligning loosely with the base link), while the latter is typical for vision applications and what is specified in the documentation of the Bumblebee2. The plugin will publish two transforms for the two lenses with respect to the base frame.


BlackBoard Interfaces

  • OpenCVStereoParamsInterface::bumblebee2: View and set stereo processing parameters of the OpenCV matcher.
  • SwitchInterface::bumblebee2: Enable or disable processing

Compilation and Runtime Requirements

Usage Instructions

Connect the Bumblebee2 camera to your machine and use Coriander to verify that it is working in principle.

To run the plugin do:

ffplugin -l static-transforms,bumblebee2

To visualize the point cloud also run the plugins ros, ros-tf, and ros-pcl. Afterwards, you can run the Bumblebee2 Calibration GUI? to view the image and disparity data or rviz to visualize the point clouds.