Library and utilities for working with IFM Efector O3D3xx Cameras.
libo3d3xx provides facilities for interfacing with O3D3xx cameras built and sold by IFM Efector. The O3D3xx cameras are 3D cameras based on the PMD Tech Photonic Mixer Device time-of-flight imager. This toolbox bridges the IFM hardware to the open-source computer vision packages: OpenCV and PCL.
At its core, libo3d3xx provides a way to stream images from an O3D3xx camera in
real-time and access the 2D data as OpenCV images (applies to the Amplitude,
Depth, and Confidence images) and the 3D data as PCL point clouds (i.e., the
CARTESIAN_X
, CARTESIAN_Y
, and CARTESIAN_Z
are fused to create a point
cloud). We note that the PCL point cloud constructed by this library has point
type pcl::PointXYZI
(referred to as o3d3xx::PointT
). For the intensity
channel, we use the Amplitude image data registered to each point. We do this
because, unlike in earlier PMD-based IFM cameras, the Intensity image is not
currently available. We expect the Amplitude image can act as a proxy for the
Intensity image as it relates to PCL algorithms that may rely on that data.
The code has been developed on 64-bit Ubuntu Linux 14.04 LTS. This is currently the only platform that the software has been tested on. It is expected that some tweaks will need to be made to use the software on other platforms. You can contact Love Park Robotics for assistance in porting or file an issue request
libo3d3xx version | IFM Firmware Version | Supported Cameras | Notes |
---|---|---|---|
0.1.7 | 0.06.13 | O3D303 | Initial Release |
0.1.8 | 0.06.39 | O3D303 | DEPRECATED, USE 0.1.9 |
0.1.9 | 0.06.39 | O3D303 | Initial support for 100k pixel images |
High-level features of this library include:
- The code is written in modern C++11.
- The library employs PCL and OpenCV native image formats.
- Easily scriptable command line utilities are provided for performing common tasks associated with configuring, backing up, restoring, and introspecting, the camera settings. This scriptability lends itself to managing fleets of cameras for large-scale installations.
- A simple viewer application is provided for concurrently inspecting the point cloud, depth, amplitude, and confidence image.
- A business-friendly (Apache 2.0) License is employed.
- The code is being actively developed and maintained at Love Park Robotics. Pull requests are welcome from those who wish to contribute code!
ROS bindings are available here
- Boost (>= 1.54)
- Gtest (unit testing)
- Glog (logging infrastructure)
- libxmlrpc
- OpenCV (>= 2.4)
- PCL (>= 1.7.1)
- CMake (>= 2.8.11)
Additionally, your compiler must support C++11. We are using g++ 4.8.2 on Ubuntu Linux 14.04 LTS.
(Assumes Linux)
To build and install libo3d3xx
you can issue the following commands
from the top-level directory of this source distribution:
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make check
$ sudo make install
NOTE: Running make check
will run unit tests. It assumes that the hardware is
available and running with factory default settings. If your camera is using an
IP address different from the factory default of 192.168.0.69, you can set the
O3D3XX_IP
environment variable to point to the proper IP. Please note, the unit
tests will wipe out your current camera settings and applications. You should
back up your camera prior to running the unit tests.
There is also a make package
target that will build the binary debian
package. You can then install this with the usual Debian/Ubuntu dpkg
tool.
After installation, you may find it useful to add the following to your
~/.bash_profile
:
if [ -f /opt/libo3d3xx/etc/setup.bash ]; then
source /opt/libo3d3xx/etc/setup.bash
fi
This will modify your LD_LIBRARY_PATH
and PATH
to ensure the library is
available to your environment.
Please see the Github Issues.
Please see the file called LICENSE.
Tom Panzarella tom@loveparkrobotics.com