Library and utilities for working with ifm pmd-based 3D ToF Cameras.
master
branch is generally in a work in progress state and you probably want to use a
tagged release version for production.
ifm3d version | Supported O3D Firmware Version | Supported O3X Firmware Version | Supported Ubuntu Linux Version | Notes |
---|---|---|---|---|
0.20.0 | 1.6.2114, 1.23.1522, 1.23.1522, 1.23.2848, 1.30.4123, 1.30.5309 | 1.0.122, 1.0.126, 1.0.156 | 16.04,18.04,20.04 | Removed Boost dependence,Added clang-format,SPDX license Headers |
A full software compatibility matrix, including older releases, is available here.
The ifm3d software is organized into modules, they are:
Module Name | Description |
---|---|
camera | Provides an implementation of the XMLRPC protocol for configuring the camera and pmd imager settings. |
framegrabber | Provides an implementation of the PCIC protocol for streaming pixel data and triggered image acquisition. |
swupdater | Provides utilities for managing the SWUpdate subsystem of the camera. |
image | Provides a bridge from raw camera bytes to OpenCV and PCL image encodings. |
opencv | This is an officially supported and alternate data container to the default Image module. This module provides a bridge from raw camera bytes to OpenCV image encodings without any dependence upon PCL. |
pcicclient | Direct access to PCIC to, for example, actuate digital IO. |
tools | Provides the ifm3d command line tool for manipulating and introspecting the hardware interactively. It is also suitable for usage within shell scripts to, for example, manage fleets of cameras. |
pybind11 | Provides python bindings through pybind11 to the native C++ API. Supports all general camera functionality as well as a zero-copy interface to image data, exposed as NumPy arrays. |
As of version 0.9.0, we have removed the viewer
sub-command from the ifm3d
command line tool (part of the tools
module). The objective was to lessen the
dependencies for the core library. However, a clone of the pre-0.9.0
viewer is available in its own repository:
ifm3d-pcl-viewer.
Binaries for ifm3d are available on a few supported platforms. Instructions for each now follow.
We provide apt repositories for the following Ubuntu Linux distributions and architectures:
Ubuntu 16.04 Xenial | Ubuntu 18.04 Melodic | Ubuntu 20.04 Focal | |
---|---|---|---|
amd64 | X | X | X |
arm64 | X | X | X |
Add the repository to your sources.list:
$ sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://nexus.ifm.com/repository/ifm-robotics_ubuntu_$(lsb_release -sc)_$(dpkg --print-architecture) $(lsb_release -sc) main" > /etc/apt/sources.list.d/ifm-robotics.list'
Add the public key for the repository:
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 8AB59D3A2BD7B692
If you experience issues with connecting the key server you can try this alternative which uses curl. This is maybe helpful when you are behind a proxyserver.
curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8AB59D3A2BD7B692' | sudo apt-key add -
❗ In case of any name resolution issues, it is worth to check the environment variable $https_proxy
for proper proxy configuration.
Install the software:
$ sudo apt-get update
$ sudo apt-get install ifm3d-camera \
ifm3d-framegrabber \
ifm3d-swupdater \
ifm3d-image \
ifm3d-opencv \
ifm3d-pcicclient \
ifm3d-tools \
ifm3d-python3 \
ifm3d-pcl-viewer \
Linux for Tegra is an NVIDIA Linux distribution for the Jetson family of GPU
SoC systems. NVIDIA distributes a software package called JetPack with various
utilities and libraries optimized for the target hardware. There are a few
packages which override the core Ubuntu packages (OpenCV
as the primary
example). We provide alternate apt repositories for ifm3d
built on top of
the JetPack libraries rather than the Ubuntu libraries.
Add one of the following repositories based on your desired JetPack/L4T release:
Jetpack 4.4:
$ sudo sh -c 'echo "deb https://nexus.ifm.com/repository/ifm-robotics_l4t_jetpack_4_4_arm64 melodic main" > /etc/apt/sources.list.d/ifm-robotics.list'
Jetpack 4.3:
$ sudo sh -c 'echo "deb https://nexus.ifm.com/repository/ifm-robotics_l4t_jetpack_4_3_arm64 melodic main" > /etc/apt/sources.list.d/ifm-robotics.list'
Add the public key for the repository:
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 8AB59D3A2BD7B692
Install the software:
$ sudo apt-get update
$ sudo apt-get install ifm3d-camera \
ifm3d-framegrabber \
ifm3d-swupdater \
ifm3d-image \
ifm3d-opencv \
ifm3d-pcicclient \
ifm3d-tools \
ifm3d-python3 \
ifm3d-pcl-viewer \
For users interested in using our ROS
bindings, ifm3d
and ifm3d-ros
are both available in the ROS distribution
for Kinetic and Melodic (Noetic coming shortly).
$ sudo apt install ros-kinetic-ifm3d
or
$ sudo apt install ros-melodic-ifm3d
For users interested in using our ROS2
bindings, binaries will be included (starting with dashing) very soon. For now,
packages must be built from source. Do not use the debian mirror for
ifm3d
since (depending on version) ROS2 ships parallel versions of some core
libraries (OpenCV, PCL) as compared with standard Ubuntu. ifm3d
must be built
against the proper dependencies.
Pre-built binaries are not yet available. For now we recommend manually compiling for the target MSVC/SDK versions according to the building on windows instructions.
If you are running on a platform we did not mention above, the links below will
assist you in building from source code. Alternatively, if you are simply
looking to do a quick evaluation of an ifm3d
supported sensor we recommend
the use of Docker containers.
- Building from source on Linux
- Building on Windows
- Building and using Python bindings
- Basic library usage
- ifm3d command line tool
- Configuring Your Camera
- Viewing the Point Cloud
- Implementing your own image container
- ROS
- ROS 2
- Troubleshoot
- Computing Cartesian data off-board using the
ifm3dpy
Python bindings.
Please see the Github Issue Tracker.
Please see the file called LICENSE.