/cv_camera

ROS opencv camera driver, with support for the FLIR Boson thermal camera

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

FLIR Boson Capture

The Boson is a thermal camera from FLIR, which plugs in to USB and acts like a webcam. You can capture data from the Boson by setting the parameter _boson:=true for this node.

Importantly, this repository does not use the OpenCV VideoCapture class. OpenCV VideoCapture has a capture buffer which introduces delays in the data capture. The user cannot control the size of this buffer! Empirically I have observed this causes the timestamps to be off by about 500 ms for FLIR Boson. Hence this repository uses V4L code from the official Boson driver, which does not use any buffer, and hence avoids delays.

In comparison, the flir_boson_usb package does not publish the raw 16-bit thermal data. It applies a linear AGC and some image processing. This repository will publish the raw 16-bit thermal data. You are responsible for manipulating it downstream.

Original README follows.

ROS OpenCV camera driver

It is very easy to capture video device if we use cv::VideoCapture of OpenCV.

If you are searching ROS2 driver, check here

cv_camera_node

This node uses camera_info_manager for dealing with camera_info. If no calibration data is set, it has dummy values except for width and height.

Publish

  • ~image_raw (sensor_msgs/Image)
  • ~camera_info (sensor_msgs/CameraInfo)

Service

  • ~set_camera_info (sensor_msgs/SetCameraInfo)

Parameters

  • ~rate (double, default: 30.0) – publish rate [Hz].
  • ~device_id (int, default: 0) – capture device id.
  • ~device_path (string, default: "") – path to camera device file, e. g. /dev/video0.
  • ~frame_id (string, default: "camera") – frame_id of message header.
  • ~image_width (int) – try to set capture image width.
  • ~image_height (int) – try to set capture image height.
  • ~camera_info_url (string) – url of camera info yaml.
  • ~file (string, default: "") – if not "" then use movie file instead of device.
  • ~capture_delay (double, default: 0) – estimated duration of capturing and receiving the image.
  • ~rescale_camera_info (bool, default: false) – rescale camera calibration info automatically.
  • ~boson (bool, default: true) – use this node for a FLIR Boson camera.

Supports CV_CAP_PROP_*, by below params.

  • ~cv_cap_prop_pos_msec (double)
  • ~cv_cap_prop_pos_avi_ratio (double)
  • ~cv_cap_prop_frame_width (double)
  • ~cv_cap_prop_frame_height (double)
  • ~cv_cap_prop_fps (double)
  • ~cv_cap_prop_fourcc (double)
  • ~cv_cap_prop_frame_count (double)
  • ~cv_cap_prop_format (double)
  • ~cv_cap_prop_mode (double)
  • ~cv_cap_prop_brightness (double)
  • ~cv_cap_prop_contrast (double)
  • ~cv_cap_prop_saturation (double)
  • ~cv_cap_prop_hue (double)
  • ~cv_cap_prop_gain (double)
  • ~cv_cap_prop_exposure (double)
  • ~cv_cap_prop_convert_rgb (double)
  • ~cv_cap_prop_rectification (double)
  • ~cv_cap_prop_iso_speed (double)

And supports any props. Thanks to Hernan Badino!

  • ~property_$(i)_code (int) – set this code property using ~property_$(i)_value, $(i) must start from 0.
  • ~property_$(i)_value (double) – the value to be set to ~property_$(i)_code

If you want to set the property which code is 404 as 1,

rosrun cv_camera cv_camera_node _property_0_code:=404 _property_0_code:=1

If you want to set more, use ~property_1_code and ~property_1_code.

Nodelet

This node works as nodelet (cv_camera/CvCameraNodelet).

Contributors

PR is welcome. I'll review your code to keep consistency, be patient.

  • Oleg Kalachev
  • Mikael Arguedas
  • Maurice Meedendorp
  • Max Schettler
  • Lukas Bulwahn