Skip to content

Commit 4e4cc56

Browse files
committed
Merge branch 'release1.1.0' into 'master'
Update to ifm3d 1.2.6 See merge request syntron/support/csr/ifm3d/ifm3d-ros!28
2 parents 1b1766a + 1f05f3d commit 4e4cc56

36 files changed

+1535
-1122
lines changed

.gitignore

+50
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,53 @@
11
#editor temp/backup files
22
*~
33
*.swp
4+
5+
## VSCode and Python
6+
.DS_Store
7+
.huskyrc.json
8+
out
9+
log.log
10+
**/node_modules
11+
*.pyc
12+
*.vsix
13+
**/.vscode/.ropeproject/**
14+
**/testFiles/**/.cache/**
15+
*.noseids
16+
.nyc_output
17+
.vscode-test
18+
__pycache__
19+
npm-debug.log
20+
**/.mypy_cache/**
21+
!yarn.lock
22+
coverage/
23+
cucumber-report.json
24+
**/.vscode-test/**
25+
**/.vscode test/**
26+
**/.vscode-smoke/**
27+
**/.venv*/
28+
port.txt
29+
precommit.hook
30+
pythonFiles/lib/**
31+
debug_coverage*/**
32+
languageServer/**
33+
languageServer.*/**
34+
bin/**
35+
obj/**
36+
.pytest_cache
37+
tmp/**
38+
.python-version
39+
.vs/
40+
test-results*.xml
41+
xunit-test-results.xml
42+
build/ci/performance/performance-results.json
43+
!build/
44+
debug*.log
45+
debugpy*.log
46+
pydevd*.log
47+
nodeLanguageServer/**
48+
nodeLanguageServer.*/**
49+
dist/**
50+
# translation files
51+
*.xlf
52+
package.nls.*.json
53+
l10n/

CHANGELOG.rst

+34-1
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,46 @@
22
Changelog for package ifm3d-ros
33
^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
1.1 (unreleased)
6+
===============
7+
8+
1.1.0
9+
-----
10+
* Update camera nodelet for ifm3d >= v1.2.3
11+
* Switch from looped image retrieval to callback based image retrieval
12+
* Updated schema mask handling: uint based schema mask replaced with default 2D and 3D bufferID based lists
13+
Between ifm3d API version 0.93 and 1.1 the internal handling of the amplitude and distance image and the point cloud has changed: The previously automatically applied masking based on the confidence image is no longer applied. As a result, more image pixels are displayed as valid pixels.
14+
If you want to apply a binary mapping to these images, use the confidence image as provided in the ROS node and apply the mask `confidence&1` for backward compatibility.
15+
16+
* Nodelet interface changes:
17+
* additional parameters:
18+
* xyz_image_stream: boolean value - Enable / disable publishing and streaming of point cloud topic / messages.
19+
* confidence_image_stream: boolean value - Enable / disable publishing and streaming of confidence image topic / messages
20+
* radial_distance_image_stream: boolean value - Enable / disable publishing and streaming of radial distance image topic / messages
21+
* radial_distance_noise_stream: boolean value - Enable / disable publishing and streaming of radial distance noise image topic / messages
22+
* amplitude_image_stream: boolean value - Enable / disable publishing and streaming of amplitude image topic / messages
23+
* extrinsic_image_stream: boolean value - Enable / disable publishing and streaming of extrinsics topic / messages
24+
* intrinsic_image_stream: boolean value - Enable / disable publishing and streaming of intrinsics topic / messages
25+
* rgb_image_stream: boolean value - Enable / disable publishing and streaming of 2D RGB image topic / messages
26+
* Updated the default launch files for 2D RGB / 3D TOF cameras accordingly
27+
* Added support for JSON schema dump service
28+
* ifm3d-ros logging:
29+
* Reduced level of logging messages
30+
* Changed default behavior of info log messages: NODELET_INFO_STREAM replaced by NODELET_INFO_ONCE
31+
* Removed:
32+
* Compressed amplitude stream: only amplitude publisher is used
33+
* Unit vector publisher
34+
* Robustness improvements:
35+
* Only publish data to image streams if API frames include the corresponding image data
36+
537
1.0
638
===
39+
740
1.0.2
841
-----
942
* Fix the IP parameter that was not being used
1043

11-
1.0.1
44+
1.0.1
1245
-----
1346

1447
* Removed dependency to OpenCV and PCL.

README.md

+33-18
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,48 @@
11
# ifm3d-ros
22

3-
## Release versions
3+
*This documentation is formatted to be read on www.ifm3d.com.*
44

5-
warning:: Note that the `master` branch is generally in a work in progress, and you probably want to use a tagged [release version](https://github.com/ifm/ifm3d-ros/releases) for production.
5+
:::{note} The ifm3d-ros package has had major changes recently. Please be aware that this might cause problems on your system for building pipelines based on our old build instructions.
6+
:::
67

7-
## ifm3d-ros for the O3R
8+
## Compatibility Matrix
9+
:::{warning} Note that the `master` branch is generally in a work in progress, and you probably want to use a tagged [release version](https://github.com/ifm/ifm3d-ros/releases) for production.
10+
:::
11+
12+
| **ifm3d-ros version** | **ifm3d version** | **embedded O3R FW version** | **ROS distribution(s)** |
13+
| --------------------- | ----------------- | --------------------------- | ----------------------- |
14+
| 1.1.1 | 1.2.6 | 1.0.14 | ROS Noetic |
15+
| 1.1.0 (unreleased) | 1.2.3 | 1.0.x | ROS Noetic |
16+
| 1.0.1 | 0.93.0 | 0.14.23 | ROS Noetic |
17+
| 1.0.0 | 0.91.0 | 0.14.23 | ROS Noetic |
18+
19+
20+
### Internal ifm3d-ros subpackage version structure
21+
Please see the internal subpackage version structure for a known `ifm3d-ros version`.
22+
23+
| **ifm3d-ros version** | **ifm3d_ros_driver** | **ifm3d_ros_msgs** | **ifm3d_ros_examples** |
24+
| --------------------- | -------------------- | ------------------ | ---------------------- |
25+
| 1.1.1 | 1.1.1 | 0.2.0 | 0.2.0 |
26+
| 1.1.0 (unreleased) | 1.1.0 | 0.2.0 | 0.2.0 |
27+
| 1.0.1 | 1.0.1 | 0.1.0 | 0.1.0 |
28+
| 1.0.0 | 0.7.0 | 0.1.0 | 0.1.0 |
829

9-
**NOTE: The ifm3d-ros package has had major changes recently. Please be aware that this might cause problems on your system for building pipelines based on our old build instructions.**
10-
We tried to ensure backward compatibility where ever possible. If you find any major breaks, please let us know.
1130

31+
## Changelogs
32+
+ ifm3d-ros: For changes between on the ifm3d-ros node source code, please see the respective information in the [CHANGELOG](CHANGELOG.rst).
33+
+ ifm3d: For changes between on the ifm3d API source code, please see the respective information in the [ifm3d CHANGELOG](https://github.com/ifm/ifm3d/blob/main/ChangeLog.md).
34+
+ O3R firmware: For changes between on the different FW versions, please see the respective information in the [FW release notes](https://ifm3d.com/documentation/Firmware/index.html).
35+
36+
37+
## ifm3d-ros for the O3R
1238

1339
ifm3d-ros is a wrapper around [ifm3d](ifm3d/doc/sphinx/content/README:ifm3d%20Overview) enabling the usage of the O3R camera platform (ifm ToF cameras) from within [ROS](http://ros.org) software systems.
1440
**Please make sure to use version {{ ifm3d_ros_latest_version }} or above for O3R compatibility.**
1541

1642
![rviz1](ifm3d_ros_driver/doc/figures/O3R_merged_point_cloud.png)
1743

18-
## Software Compatibility Matrix
19-
20-
|**ifm3d-ros version**|**ifm3d version**|**ROS distribution(s)**|
21-
| ------------ | ------------ | ------------ |
22-
| 1.0.0 | 0.91.0 | Noetic |
23-
| 1.0.1 | 0.93.0 | Noetic |
44+
**NOTE** The confidence image handling inside the ifm3d API has changed which results in more valid pixels - for more information see the [Release Notes](Release_notes.md)
2445

25-
### Internal ifm3d-ros subpackage version structure
26-
Please see the internal subpackage version structure for a known `ifm3d-ros version`.
27-
28-
|**ifm3d-ros version**|**ifm3d_ros_driver**|**ifm3d_ros_msgs**|**ifm3d_ros_examples**|
29-
| ------------ | ------------ | ------------ | ------------ |
30-
| 1.0.0 | 0.7.0 | 0.1.0 | 0.1.0 |
31-
| 1.0.1 | 1.0.1 | 0.1.0 | 0.1.0 |
3246

3347
## Organization of the software
3448

@@ -47,5 +61,6 @@ Preparing your system <ifm3d_ros_driver/doc/noetic>
4761
Installing the ifm3d-ros node <ifm3d_ros_driver/doc/building>
4862
Build for distributed systems <ifm3d_ros_driver/doc/distributed_build>
4963
:::
64+
5065
## LICENSE
5166
Please see the file called [LICENSE](LICENSE).

Release_notes.md

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Release notes ifm3d-ros
2+
3+
## Dependent software and firmware release notes and changelogs
4+
+ ifm3d-ros: For changes between on the ifm3d-ros node source code, please see the respective information in the [CHANGELOG](CHANGELOG.rst).
5+
+ ifm3d: For changes between on the ifm3d API source code, please see the respective information in the [ifm3d CHANGELOG](https://github.com/ifm/ifm3d/blob/main/ChangeLog.md).
6+
+ O3R firmware: For changes between on the different FW versions, please see the respective information in the [FW release notes](https://ifm3d.com/documentation/Firmware/index.html).
7+
8+
9+
10+
## ifm3d-ros 1.1
11+
The ifm3d-ros node version 1.1 depends on ifm3d API 1.2.6, as can be seen in the [compatibility matrix](README.md#software-compatibility-matrix).
12+
13+
Between ifm3d API version 0.93 and 1.1 the internal handling of the amplitude and distance image and the point cloud has changed: The previously automatically applied masking based on the confidence image is no longer applied. As a result, more image pixels are displayed as valid pixels.
14+
If you want to apply a binary mapping to these images, use the confidence image as provided in the ROS node and apply the mask `confidence&1` for backward compatibility.

docker/Dockerfile

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#############################################
2+
# Copyright 2023-present ifm electronic, gmbh
3+
# SPDX-License-Identifier: Apache-2.0
4+
#############################################
5+
ARG BASE_IMAGE
6+
ARG BUILD_IMAGE_TAG
7+
ARG FINAL_IMAGE_TAG
8+
FROM ${BASE_IMAGE}:${BUILD_IMAGE_TAG} AS build
9+
ARG IFM3D_VERSION
10+
ARG IFM3D_ROS_REPO
11+
ARG IFM3D_ROS_BRANCH
12+
ARG ARCH
13+
ARG UBUNTU_VERSION
14+
15+
# Create the ifm user
16+
RUN id ifm 2>/dev/null || useradd --uid 30000 --create-home -s /bin/bash -U ifm
17+
WORKDIR /home/ifm
18+
19+
# Dependencies for both ifm3d and ifm3d-ros2
20+
ARG DEBIAN_FRONTEND=noninteractive
21+
RUN apt-get update && apt-get install -y \
22+
git \
23+
jq \
24+
libxmlrpc-c++8-dev \
25+
libproj-dev \
26+
build-essential \
27+
coreutils \
28+
cmake \
29+
wget \
30+
libssl-dev \
31+
libgoogle-glog-dev \
32+
libgoogle-glog0v5 \
33+
python3-rosdep
34+
35+
# Install ifm3d using the deb files
36+
RUN mkdir /home/ifm/ifm3d
37+
ADD https://github.com/ifm/ifm3d/releases/download/v${IFM3D_VERSION}/ifm3d-ubuntu-${UBUNTU_VERSION}-${ARCH}-debs_${IFM3D_VERSION}.tar /home/ifm/ifm3d
38+
RUN cd /home/ifm/ifm3d &&\
39+
tar -xf ifm3d-ubuntu-${UBUNTU_VERSION}-${ARCH}-debs_${IFM3D_VERSION}.tar && \
40+
dpkg -i *.deb
41+
42+
# Clone and build ifm3d-ros repo
43+
SHELL ["/bin/bash", "-c"]
44+
# RUN mkdir -p /home/ifm/catkin_ws/src && \
45+
# cd /home/ifm/catkin_ws/src && \
46+
# git clone ${IFM3D_ROS_REPO} -b ${IFM3D_ROS_BRANCH} --single-branch
47+
ADD . /home/ifm/catkin_ws/src
48+
RUN cd /home/ifm/catkin_ws && \
49+
rosdep update --rosdistro=${ROS_DISTRO} && \
50+
rosdep install --from-path src -y --ignore-src
51+
52+
RUN cd /home/ifm/catkin_ws && \
53+
source /opt/ros/${ROS_DISTRO}/setup.bash && \
54+
catkin_make
55+
56+
# Multistage build to reduce image size
57+
ARG BASE_IMAGE
58+
FROM ${BASE_IMAGE}:${FINAL_IMAGE_TAG}
59+
# Copy files built in previous stage
60+
COPY --from=build /home/ifm/catkin_ws /home/ifm/catkin_ws
61+
COPY --from=build /home/ifm/ifm3d/*.deb /home/ifm/ifm3d/
62+
WORKDIR /home/ifm
63+
64+
# Install ifm3d and ifm3d-ros2 runtime dependencies
65+
ARG DEBIAN_FRONTEND=noninteractive
66+
RUN apt-get update \
67+
&& apt-get install -y --no-install-recommends \
68+
libxmlrpc-c++8v5 \
69+
locales \
70+
sudo \
71+
libssl-dev \
72+
libgoogle-glog0v5 \
73+
libboost-all-dev \
74+
python3-rosdep \
75+
&& rm -rf /var/lib/apt/lists/*
76+
77+
# Install ifm3d
78+
RUN cd /home/ifm/ifm3d &&\
79+
dpkg -i *.deb
80+
81+
RUN cd /home/ifm/catkin_ws && \
82+
apt-get update && \
83+
rosdep init && \
84+
rosdep update --rosdistro=${ROS_DISTRO} && \
85+
rosdep install --from-path src -y --ignore-src
86+
87+
# Setup localisation
88+
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && \
89+
locale-gen en_US.UTF-8 && \
90+
/usr/sbin/update-locale LANG=en_US.UTF-8
91+
92+
ENV LANG en_US.UTF-8
93+
ENV LANGUAGE en_US:en
94+
ENV LC_ALL en_US.UTF-8
95+
96+
# NOTE: Make sure to run export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

docker/Dockerfile_buildstage_only

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#############################################
2+
# Copyright 2023-present ifm electronic, gmbh
3+
# SPDX-License-Identifier: Apache-2.0
4+
#############################################
5+
6+
ARG BASE_IMAGE
7+
ARG BUILD_IMAGE_TAG
8+
ARG FINAL_IMAGE_TAG
9+
FROM ${BASE_IMAGE}:${BUILD_IMAGE_TAG} AS build
10+
ARG IFM3D_VERSION
11+
ARG IFM3D_ROS_REPO
12+
ARG IFM3D_ROS_BRANCH
13+
ARG ARCH
14+
ARG UBUNTU_VERSION
15+
16+
# Create the ifm user
17+
RUN id ifm 2>/dev/null || useradd --uid 30000 --create-home -s /bin/bash -U ifm
18+
WORKDIR /home/ifm
19+
20+
# Dependencies for both ifm3d and ifm3d-ros2
21+
ARG DEBIAN_FRONTEND=noninteractive
22+
RUN apt-get update && apt-get install -y \
23+
git \
24+
jq \
25+
libxmlrpc-c++8-dev \
26+
libproj-dev \
27+
libcurl4 \
28+
libgoogle-glog-dev \
29+
libgoogle-glog0v5 \
30+
build-essential \
31+
coreutils \
32+
cmake \
33+
wget \
34+
libssl-dev \
35+
python3-rosdep
36+
37+
# Install ifm3d using the deb files
38+
RUN mkdir /home/ifm/ifm3d
39+
ADD https://github.com/ifm/ifm3d/releases/download/v${IFM3D_VERSION}/ifm3d-ubuntu-${UBUNTU_VERSION}-${ARCH}-debs_${IFM3D_VERSION}.tar /home/ifm/ifm3d
40+
RUN cd /home/ifm/ifm3d &&\
41+
tar -xf ifm3d-ubuntu-${UBUNTU_VERSION}-${ARCH}-debs_${IFM3D_VERSION}.tar && \
42+
dpkg -i *.deb
43+
44+
SHELL ["/bin/bash", "-c"]
45+
# Manually install ifm3d-ros additional ROS packages: based on noetic-ros-core base image
46+
RUN apt-get update && apt-get install -y \
47+
ros-noetic-tf2-ros \
48+
ros-noetic-tf \
49+
ros-noetic-image-transport
50+
51+
ADD . /home/ifm/catkin_ws/src
52+
53+
RUN cd /home/ifm/catkin_ws && \
54+
source /opt/ros/${ROS_DISTRO}/setup.bash && \
55+
catkin_make --only-pkg-with-deps ifm3d_ros_msgs
56+
57+
RUN cd /home/ifm/catkin_ws && \
58+
source /opt/ros/${ROS_DISTRO}/setup.bash && \
59+
catkin_make --only-pkg-with-deps ifm3d-ros

0 commit comments

Comments
 (0)