Documentation Status

Cannot load information on name: optris_drivers, distro: electric, which means that it is not yet in our index. Please see this page for information on how to submit your repository to our index.

Package Summary

Documented

ROS nodes wrapping the binary driver for Optris thermal imager devices.

  • Author: Stefan May (Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de), 64-Bit platform supported by Fraunhofer IPA (www.ipa.fraunhofer.de)
  • License: BSD
  • Source: git https://github.com/ohm-ros-pkg/optris_drivers.git (branch: fuerte-devel)

Package Summary

Documented

ROS nodes wrapping the binary driver for Optris thermal imager devices.

  • Maintainer: Stefan May(Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de) <not AT given DOT yet>
  • Author: Stefan May (Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de), 64-Bit platform supported by Fraunhofer IPA (www.ipa.fraunhofer.de), Support for ROS hydro migration by Christopher-Eyk Hrabia (DAI-Labor, Technische Universität Berlin)
  • License: BSD
  • Source: git https://github.com/ohm-ros-pkg/optris_drivers.git (branch: groovy-devel)

Package Summary

Documented

ROS nodes wrapping the binary driver for Optris thermal imager devices.

  • Maintainer: Stefan May(Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de) <stefan.may AT th-nuernberg DOT de>
  • Author: Stefan May (Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de), 64-Bit platform supported by Fraunhofer IPA (www.ipa.fraunhofer.de), Support for ROS hydro migration by Christopher-Eyk Hrabia (DAI-Labor, Technische Universität Berlin)
  • License: BSD
  • Source: git https://github.com/ohm-ros-pkg/optris_drivers.git (branch: groovy-devel)

Package Summary

Documented

ROS nodes wrapping the binary driver for Optris thermal imager devices.

  • Maintainer: Stefan May(Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de) <stefan.may AT th-nuernberg DOT de>
  • Author: Stefan May (Nuremberg Institute of Technology Georg Simon Ohm - www.th-nuernberg.de), 64-Bit platform supported by Fraunhofer IPA (www.ipa.fraunhofer.de), Support for ROS hydro migration by Christopher-Eyk Hrabia (DAI-Labor, Technische Universität Berlin)
  • License: BSD
  • Source: git https://github.com/ohm-ros-pkg/optris_drivers.git (branch: groovy-devel)
Cannot load information on name: optris_drivers, distro: jade, which means that it is not yet in our index. Please see this page for information on how to submit your repository to our index.
Cannot load information on name: optris_drivers, distro: kinetic, which means that it is not yet in our index. Please see this page for information on how to submit your repository to our index.

piimagers.jpg

ROS Nodes

optris_imager_node

ROS driver node that publishes thermal data (and if available images from the visible spectrum).

Published Topics

thermal_image (sensor_msgs/Image)
  • thermal image in unsigned short representation. Temperature data is encoded as: float t = (float)(data - 1000) / 10.f.
visible_image (sensor_msgs/Image)
  • color coded image in YUV422 format from visible channel (only for PI200/PI230 with bi-spectral technology)
temperature_flag (std_msgs/Float32)
  • temperature of shutter flag
temperature_box (std_msgs/Float32)
  • temperature of housing
temperature_chip (std_msgs/Float32)
  • temperature of chip

Services

~auto_flag (optris_drivers/AutoFlag)
  • enables and disables the automatic flag control.
~force_flag (std_srvs/Empty)
  • forces camera to trigger a closing/opening event of shutter flag
~switch_temperature_range (optris_drivers/SwitchTemperatureRange)
  • switches temperature range

Parameters

xmlConfig (string)
  • XML configuration file name containing information about field of view, temperature range and desired frame rate (see config directory for an example). It is mandadory that parameters "fov" and "temperature range" agree with your calibration files. The calibration is chosen in dependency of these parameters (see troubleshooting below).

optris_colorconvert_node

ROS driver node that subscribes the data topics of optris_imager_node (thermal_image and if available visible_image). Data is converted into displayable color representations.

Published Topics

thermal_image_view (sensor_msgs/Image)
  • color encoded image to be displayed with e.g. image_view
visible_image_view (sensor_msgs/Image)
  • RGB image from visible channel (bi-spectral technology necessary, only PI200/PI230)

Parameters

palette (int, default: 6)
  • coloring palette in the range of 1..12
paletteScaling (int, default: 2)
  • scaling method for color conversion (determination of temperature bounds for high contrast coloring, 1=manual, 2=min/max, 3=1sigma, 4=3sigma)
temperatureMin (int, default: 20)
  • minimum value of temperature range (if manual scaling method chosen)
temperatureMax (int, default: 40)
  • maximum value of temperature range (if manual scaling method chosen)

optris_binary_image_node

ROS driver node that subscribes the data topics of optris_imager_node (thermal_image). Data is converted into monochrome color representations, suitable for camera calibration. The package dynamic_reconfigure can be used to change the threshold on run-time.

Published Topics

thermal_binary_image (sensor_msgs/Image)
  • monochrome encoded image to be displayed with e.g. image_view

Parameters

threshold (double, default: 40)
  • temperature threshold to generate binary image from thermal image
invert (bool, default: false)
  • flag to invert binary image

Basic Installation

Binary driver versions for the Optris thermal imager series are available for i386, amd64, atom, armel and eabihf architectures. Debian packages can be downloaded from the vendor's homepage. The driver has been tested on the following platforms:

  • Debian Wheezy armHF (UDOO Quad, BeagleBone Black)

  • Ubuntu 12.04.4 LTS 32-Bit (Intel i7)
  • Ubuntu 12.04.5 LTS armHF (Pandaboard)
  • Ubuntu 14.04.1 & 14.04.2 LTS 64-Bit (AMD Phenom II)

  • Ubuntu 14.04.x LTS (Odroid C1, U3, XU3, XU4)
  • Trusty Ubuntu for i.MX6 Boards (SabreLite)

  • Xubuntu 13.10 (Odroid U3)

Do the basic installation as follows:

$ sudo dpkg -i libirimager-<VERSION>-<ARCH>.deb

Then copy the calibration files of your camera (obtainable from Optris) to /usr/share/libirimager/cali. This default path can be overwritten by your application (see description in next subsection).

Example applications

The directory /usr/share/doc/libirimager contains examples, which one can copy to the preferred development directory, e.g.

$ cp /usr/share/doc/libirimager/examples/minimal/* ~/workspace/mydestination

You might consider the minimal application as a template for your own application. Compilation is performed straightforward:

$ cd ~/workspace/mydestination
$ mkdir build
$ cd build
$ cmake ..
$ make

The examples rely on an XML configuration file (see subdirectory /usr/share/doc/libirimager/examples/config), describing the attached camera and its optics. The directory containing calibration files can be overwritten by the tag calipath, e.g.:

<calipath>~/cali</calipath>

Further information can be found in the included README file (/usr/share/doc/libirimager/examples/README)

Prerequisites

  • Installation of package libudev-dev
  • Installation of binary driver for Optris thermal imagers (see 3rd_party directory)
  • Installation of calibration files (file path can be set with xml configuration, default: /usr/share/libirimager/cali)
  • Connected imager device

Check accessibility with e.g.

$ guvcview

You should see a green image provided at the camera's frame rate.

For PI2xx, PI4xx and PI640 devices the UVC-driver needs to be loaded with the "nodrop" option:

$ sudo rmmod uvcvideo
$ sudo modprobe uvcvideo nodrop=1

This parameter is set in file /etc/modprobe.d/uvcvideo.conf, that comes with the installation of the binary driver package

options uvcvideo nodrop=1

You might need to reload rules after installation:

$ sudo udevadm control --reload-rules

For built-in modules, parameters might be set via /sys, e.g.,

$ sudo echo -n 1 > /sys/modules/uvcvideo/parameters/nodrop

Examples

optris_max.png optris_teepot.png optris_pot.png

Start driver node that publishes thermal data.

$ rosrun optris_drivers optris_imager_node _xmlConfig:=config/12090031.xml

The xml configuration file is camera specific. It comprises the following values:

  • fov: optic's field of view
  • temperature min: minimum value of temperature range
  • temperature max: maximum value of temperature range
  • framerate: desired framerate for the grabbing callback. This value needs to be less or equal the camera's maximum framerate.
  • controller: HID (=1) or pure UVC (=2) interface. In most cases this option is HID (cameras having a pure UVC controller interface need a special firmware version).
  • outputmode: temperature data (=2) or energy data (=1). In most cases temperature data is what you want. Energy data is provided for experimental use.
  • bispectral: available and utilized (=1), not available or deactivated (=0). Bi-spectral technology is only available for PI200 and PI230 devices. Do not set this parameter to 1 for any other device.

Start color conversion node, that publishes data in false color representation.

$ rosrun optris_drivers optris_colorconvert_node _palette:=6 _paletteScaling:=2 _temperatureMin:=10 _temperatureMax:=30

Alternatively, both nodes are started in the namespace "optris" with

$ roslaunch optris_drivers.launch

Display thermal images in false color code

$ rosrun image_view image_view image:=/optris/thermal_image_view

Switch off automatic shutter flag control

$ rosservice call /optris/optris_imager_node/auto_flag 0

Trigger shutter flag manually

$ rosservice call /optris/optris_imager_node/force_flag

Using Compression

The default image transport format is raw. If you have to tunnel data over a low-bandwidth network, you can employ the PNG compression mechanism of image_transport. Launch the subscriber of the thermal_image topic with the following _image_transport option:

$ rosrun optris_drivers optris_colorconvert_node _palette:=6 _paletteScaling:=2 _temperatureMin:=10 _temperatureMax:=30 _image_transport:=compressed

Since thermal images are in 1-channel 16-Bit integer format, JPEG compression can not be used. Moreover, JPEG is not lossless. Switch to PNG with:

$ rosrun dynamic_reconfigure dynparam set /thermal_image/compressed format png

or with the help of a graphical interface:

$ rosrun rqt_reconfigure rqt_reconfigure

With rxgraph the usage of compression can be verified. The remaining bandwidth can be displayed with:

$ rostopic bw /thermal_image/compressed

If you use the roslaunch file, uncomment the following line

<!-- <param name="image_transport" type="string" value="compressed"/> -->

and remind the namespace "optris".

Using BI-SPECTRAL technology

PI 200/230 cameras support a second image channel. Verify that in the corresponding configuration file, bispectral is set to 1. The topic visible_image is providing a yuv422 image format, either in raw or PNG coding depending on _image_transport. Ensure that the compression is set to PNG, JPEG is not supporting yuv422 for the moment. Starting optris_colorconvert_node subscribes to visible_image and publishes visible_image_view, which is in rgb8 format. Either raw or PNG/JPEG compression can be used.

$ rosrun image_view image_view image:=/visible_image_view _image_transport:=compressed

Troubleshooting

If you cannot get image data from above mentioned topics, check

  • ... whether nodes are connected properly, i.e. optris_colorconvert_node is subscribing from optris_imager_node.
  • ... whether the USB bandwidth is sufficient. Unplug every other device on the same USB bus. You can list all attached devices with lsusb -t. Ensure that the thermal imager is the only device on a certain bus.
  • ... if you can get data with guvcview or a similar UVC grabbing module. The frame rate should be >> 1, if not the "nodrop" option might help. If permissions are missing, you need to apply udev rules before connecting the device. An example for those udev rules is included in this package.

  • ... if calibration files for your camera (compare serial number, field of view and temperature range) are present (path can be set with the xml configuration, default: /usr/share/libirimager/cali) and whether they are readable with your system account. The serial number is determined automatically, if it is not set in the xmlConfig file. Field of view and temperature range need to be adjusted in this xmlConfig file, too. The calibration files are looked up in dependency of these settings, e.g.,

<fov>30</fov>
<temperature>
  <min>-20</min>
  <max>100</max>
</temperature>
  • will configure the file names:

Cali-<SERIAL#>.xml
Cali-<SERIAL#>-30-M20-100.dat
Kennlinie-<SERIAL#>-30-M20-100.prn
  • For PI400/450: If your application is crashing while calling the constructor, check whether the file Formats.def has the following entry:

[Format]
  Guid = {A6160508-8450-4c25-B80F-976B2BF06E93}
  Name = "PI400 382x288 @ 27Hz"
  Channels = 1
  In = 385 289 27
  Out = 382 288 27
  SFrames = 1
  Def = (0 288 d:382 s:3)(110880 1 m:385)
[Format end]

Wiki: optris_drivers (last edited 2015-12-23 16:02:46 by StefanMay)