Skip to main content
Version: ROS 2 Humble

FLIR Blackfly S

Item Numbers

DescriptionCPR ItemSales KitInstallation Kit, With Fasteners
FLIR Blackfly sensorMany options027118027218

Specifications

DescriptionValue
Mass, Camera53 g
Voltage, Minimum8 V or USB
Voltage, Maximum24 V or USB
Power, Average4.2 W
DataGigE or USB3
Resolution0.4 - 24.5 MP (depending on model)
Frame Rate15 - 552 FPS
Operating Temperature, Min0°C
Operating Temperature, Max50°C

Software Bringup

This sensor is included in the Clearpath Robotics robot package that is installed on all of our robots. This allows you to add or remove the sensor from your robot's software description by modifying the robot configuration yaml.

camera:
- model: flir_blackfly
urdf_enabled: true
launch_enabled: true
parent: base_link
xyz: [0.0, 0.0, 0.0]
rpy: [0.0, 0.0, 0.0]
ros_parameters:
flir_blackfly:
serial_number: ''
gain_auto: Continuous
pixel_format: BayerRG8
# Resolution
# image_width: 1408
# image_height: 1080
# offset_x: 0
# offset_y: 0
binning_x: 2
binning_y: 2
frame_rate_enable: true
frame_rate_auto: Off
frame_rate: 30

Package and Setup

The Flir Blackfly cameras use the spinnaker_camera_driver ROS 2 package. The driver is open source, maintained by the ROS community, and hosted on GitHub. The spinnaker_camera_driver depends on the Spinnaker SDK, which is installed automatically alongside the package.

Before using the camera, the computer needs further setup. The setup can be done automatically using the linux setup script:

ros2 run spinnaker_camera_driver linux_setup_flir

Or, manually by following the instructions on the GitHub README.

For specifics on the way Clearpath's configuration system launches the camera, see the Flir Blackfly launch file and the default parameter file in clearpath_sensors.

Serial Number

The serial_number parameter must be set to successfully launch the node. The serial number can be found on the label on the camera. However, if this label is not available and the camera is a USB camera, connect the camera to the computer and use lsusb to its three digit Bus and Device number. Then, find the serial number using the following command, replacing BUS and DEV with the three digit numbers found in the previous step:

udevadm info --attribute-walk /dev/bus/usb/BUS/DEV | grep -i serial

The resulting output of the command should appear as:

ATTR{serial}=="013686A9"

Then, convert attribute serial hexadecimal value to decimal representation and set it to the serial_number parameter. Convert values from hexadecimal to decimal representation using the following terminal command, where HEX needs to be swapped with the hexadecimal value:

echo $((16#HEX))

For the example above, the hexadecimal serial number 013686A9 would be converted to 20350633. Use the decimal representation to set the parameter: serial_number: 20350633.

Resolution

The image_height and image_width parameters define the area of the raw image to crop. It does not downsample the image. Use the offset_x and offset_y parameters to change the origin of the cropped area. These parameters would be best used to define an area of interest.

To reduce the size of the image using downsampling, use the binning_x and binning_y parameters. These parameters define the number of pixels that will be binned together in each axis. If both binning_x and binning_y are set to 2, then the resolution of the image will be quartered.

Reducing the resolution of the image improves the performance of the camera driver and network transit of image packets.

Image Compression

By default, the camera feed is also available in compressed formats including compressed (JPEG) and ffmpeg (H.264). Each of these topics is made available by an image transport plugin. Which plugins are active can be controlled by adding the following ROS parameters to the Blackfly section of the robot.yaml:

    ros_parameters:
flir_blackfly:
serial_number: ''
image_debayer:
image_mono:
enable_pub_plugins:
- image_transport/compressed
- image_transport/ffmpeg
- image_transport/raw
image_color:
enable_pub_plugins:
- image_transport/compressed
- image_transport/ffmpeg
- image_transport/raw

FFMPEG Compression Settings

To modify the FFMPEG compression settings, add the following ROS parameters to the Blackfly section of the robot.yaml:

    ros_parameters:
flir_blackfly:
serial_number: ''
image_debayer:
ffmpeg_image_transport:
qmax: 40
preset: superfast
tune: zerolatency
bit_rate: 1000000
gop_size: 15

For documentation on these parameters see the ffmpeg_image_transport GitHub repo.


Troubleshooting

Clearpath is committed to your success. Please get in touch with us and we will do our best to get you rolling again quickly: support@clearpathrobotics.com.

To get in touch with a salesperson regarding Clearpath Robotics products, please email research-sales@clearpathrobotics.com.

If you have an issue that is specifically about ROS and is something which may be of interest to the broader community, consider asking it on https://robotics.stackexchange.com. If you do not get a satisfactory response, please ping us and include a link to your question as posted there. If appropriate, we will answer in the ROS Answers context for the benefit of the community.


Further Reading

  1. Clearpath Robotics Store
  2. FLIR website
  3. ROS webpage