Skip to content

Commit cfc9f00

Browse files
committed
Merge branch 'dev/0.7.1' into '0.7.1'
add Dev/0.7.1 changes for 0.7.1 release See merge request syntron/support/csr/ifm3d/ifm3d-ros!37
2 parents 24aa8c3 + 63a61f7 commit cfc9f00

9 files changed

+40
-208
lines changed

.dockerignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.tar
2+
*.zip

README.md

+11-27
Original file line numberDiff line numberDiff line change
@@ -82,45 +82,30 @@ ROS Interface
8282

8383
## camera nodelet
8484

85-
The core `ifm3d-ros` sensor interface is implemented as a ROS nodelet. This
86-
allows for lower-latency data processing vs. the traditional out-of-process
87-
node-based ROS interface for applications that require it. However, we ship a
88-
launch file with this package that allows for using the core `ifm3d-ros` driver
89-
as a standard node. To launch the node, the following command can be used:
85+
The core `ifm3d-ros` sensor interface is implemented as a ROS nodelet. This allows for lower-latency data processing vs. the traditional out-of-process node-based ROS interface for applications that require it. However, we ship a launch file with this package that allows for using the core `ifm3d-ros` driver as a standard node. To launch the node, the following command can be used:
9086

9187
```
9288
$ roslaunch ifm3d camera.launch
9389
```
9490

95-
We note, the above command is equivalent to the following and is used for
96-
purposes of providing a backward compatible interface to versions of
97-
`ifm3d-ros` prior to the conversion to a nodelet architecture:
91+
We note, the above command is equivalent to the following and is used for purposes of providing a backward compatible interface to versions of `ifm3d-ros` prior to the conversion to a nodelet architecture:
9892

9993
**NOTE:**
10094
For the O3X1xx cameras, the PCIC connections are limited to only one. Therefore if there is already an active session established via ifmVisionAssistant then it is not possible to launch the camera node because the PCIC connection is currently picked up by iVA.
10195
```
10296
$ roslaunch ifm3d nodelet.launch __ns:=ifm3d
10397
```
10498

105-
Regardless of which command line you used from above, the launch file(s)
106-
encapsulate several features:
99+
Regardless of which command line you used from above, the launch file(s) encapsulate several features:
107100

108-
1. It exposes some of the `camera_nodelet` parameters as command-line arguments
109-
for ease of runtime configuration.
110-
2. It instantiates a nodelet manager which the `camera_nodelet` will be loaded
111-
into.
101+
1. It exposes some of the `camera_nodelet` parameters as command-line arguments for ease of runtime configuration.
102+
2. It instantiates a nodelet manager which the `camera_nodelet` will be loaded into.
112103
3. It launches the camera nodelet itself.
113-
4. It publishes the static transform from the camera's optical frame to a
114-
traditional ROS sensor frame as a tf2 `static_transform_publisher`.
104+
4. It publishes the static transform from the camera's optical frame to a traditional ROS sensor frame as a tf2 `static_transform_publisher`.
115105

116-
You can either use [this launch file](launch/camera.launch) directly, or, use
117-
it as a basis for integrating `ifm3d-ros` into your own robot software system.
106+
You can either use [this [launch file](launch/camera.launch) directly or, use it as a basis for integrating `ifm3d-ros` into your own robot software system.
118107

119-
We note: due to the change in architecture from a standalone node to a nodelet,
120-
we have seen one behavior whose solution is not clear to have us provide
121-
backward compatible behavior with older versions of `ifm3d-ros`. Specifically,
122-
if you plan to run the camera in software triggered mode, you should lanch the
123-
node as follows:
108+
We note: due to the change in architecture from a standalone node to a nodelet, we have seen one behavior whose solution is not clear to have us provide backward compatible behavior with older versions of `ifm3d-ros`. Specifically, if you plan to run the camera in software-triggered mode, you should launch the node as follows:
124109

125110
```
126111
$ GLOG_minloglevel=3 roslaunch ifm3d camera.launch assume_sw_triggered:=true
@@ -130,7 +115,6 @@ The incompatibility here is that in prior versions, one would not need to
130115
explicitly set the `GLOG_` environment variable. While not strictly necessary,
131116
it is recommended for keeping the noise level of the `ifm3d` logs low.
132117

133-
134118
### Parameters
135119

136120
<table>
@@ -192,7 +176,7 @@ it is recommended for keeping the noise level of the `ifm3d` logs low.
192176
<td>uint16</td>
193177
<td>0xf</td>
194178
<td>
195-
The pcic schema mask to apply to the active session with the frame
179+
The PCIC schema mask to apply to the active session with the frame
196180
grabber. This determines which images are available for publication from
197181
the camera. More about pcic schemas can be gleaned from the
198182
<a href="https://github.com/ifm/ifm3d">ifm3d</a> project.
@@ -409,9 +393,9 @@ To build the docker image based on your OS and OS architecture, chose the respec
409393

410394
**To build the image**
411395

396+
Edit the `build.sh` script to the required architecture and system setup
412397
Execute the shell script `build.sh` which automatically starts building the Docker image.
413398

414-
415399
After the successful build, run the container by executing the following command.
416400
```sh
417401
$ docker run -ti --network=host ifm3d-ros:melodic-x86_64
@@ -437,4 +421,4 @@ Please see the file called [LICENSE](LICENSE).
437421

438422
1. Does the schema mask value have any effect on UVEC's data streaming?
439423

440-
A: Schema mask value has no effect on streaming UVECs because the UVEC's will be always latched along.
424+
A: Schema mask value has no effect on streaming UVECs because the UVECs will be always latched along.

doc/building.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33

44
### Prerequisites
55

6-
1. [Ubuntu 16.04 LTS](http://www.ubuntu.com)
7-
2. [ROS Kinetic](http://www.ros.org/install) - we recommend `ros-kinetic-desktop-full`.
8-
3. [ifm3d](https://github.com/lovepark/ifm3d) - version >= 0.9.0
6+
1. [Ubuntu 18.04 LTS](http://www.ubuntu.com)
7+
2. [ROS Melodic](http://www.ros.org/install) - we recommend `ros-melodic-desktop-full`.
8+
3. [ifm3d](https://github.com/ifm/ifm3d) - version == 0.20.3
99

1010
or
1111

12-
1. [Ubuntu 18.04 LTS](http://www.ubuntu.com)
13-
2. [ROS Melodic](http://www.ros.org/install) - we recommend `ros-melodic-desktop-full`.
14-
3. [ifm3d](https://github.com/lovepark/ifm3d) - version >= 0.9.2
12+
1. [Ubuntu 20.04 LTS](http://www.ubuntu.com)
13+
2. [ROS Noetic](http://www.ros.org/install) - we recommend `ros-noetic-desktop-full`.
14+
3. [ifm3d](https://github.com/ifm/ifm3d) - version == 0.20.3
1515

1616
### Step-by-Step Build Instructions
1717

doc/dump_and_config.md

+5-20
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,9 @@
22
ifm3d-ros: Dump and Config
33
==========================
44

5-
`ifm3d-ros` provides access to the camera/imager parameters via the `Dump` and
6-
`Config` services exposed by the `camera_nodelet`. Additionally, command-line
7-
scripts called `dump` and `config` are provided as wrapper interfaces to those
8-
services. This gives a feel similar to using the underlying `ifm3d`
9-
command-line tool from the ROS-independent driver except proxying the calls
10-
through the ros network.
11-
12-
For example, to dump the state of the camera:
5+
`ifm3d-ros` provides access to the camera/imager parameters via the `Dump` and `Config` services exposed by the `camera_nodelet`. Additionally, command-line scripts called `dump` and `config` are provided as wrapper interfaces to those services. This gives a feel similar to using the underlying `ifm3d` command-line tool from the ROS-independent driver except proxying the calls through the ros network.
136

7+
For example, to dump the state of the camera:
148
(exemplary output from an O3D303 is shown)
159

1610
```
@@ -155,9 +149,7 @@ $ rosrun ifm3d dump
155149
}
156150
```
157151

158-
Chaining together Linux pipelines works just as it does in `ifm3d`. For
159-
example, using a combination of `dump` and `config` to set a new name on the
160-
camera would look like:
152+
Chaining together Linux pipelines works just as it does in `ifm3d`. For example, using a combination of `dump` and `config` to set a new name on the camera would look like:
161153

162154
```
163155
$ rosrun ifm3d dump | jq '.ifm3d.Device.Name="My 3D Camera"' | rosrun ifm3d config
@@ -167,17 +159,10 @@ $ rosrun ifm3d dump | jq .ifm3d.Device.Name
167159

168160
**NOTE:** If you do not have `jq` on your system, it can be installed with: `$ sudo apt-get install jq`
169161

170-
For the `config` command, one difference between our ROS implementation and the
171-
`ifm3d` implementation is that we only accept input on `stdin`. So, if you had
172-
a file with JSON you wish to configure your camera with, you would simply use the
173-
file I/O redirection facilities of your shell (or something like `cat`) to feed
174-
the data to `stdin`. For example, in `bash`:
162+
For the `config` command, one difference between our ROS implementation and the `ifm3d` implementation is that we only accept input on `stdin`. So, if you had a file with JSON you wish to configure your camera with, you would simply use the file I/O redirection facilities of your shell (or something like `cat`) to feed the data to `stdin`. For example, in `bash`:
175163

176164
```
177165
$ rosrun ifm3d config < camera.json
178166
```
179167

180-
Beyond the requirement of prefacing your command-line with `rosrun` to invoke
181-
the ROS version of these tools, they operate the same. To learn more about the
182-
functionality and concepts, you can read the docs
183-
[here](https://github.com/lovepark/ifm3d/blob/master/doc/configuring.md).
168+
Beyond the requirement of prefacing your command line with `rosrun` to invoke the ROS version of these tools, they operate the same. To learn more about the functionality and concepts, you can read the docs [here](https://github.com/ifm/ifm3d/blob/master/doc/configuring.md).

doc/indigo.md

-65
This file was deleted.

doc/kinetic.md

-68
This file was deleted.

docker/Dockerfile

+9-11
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
ARG BASE_IMAGE
2+
3+
FROM ${BASE_IMAGE} AS build
4+
25
ARG ROS_DISTRO
3-
ARG LSB_RELEASE
4-
ARG CMAKE_VERSION=3.20.6
56
ARG IFM3D_TAG
67
ARG IFM3D_ROS_BRANCH
7-
8-
FROM ${BASE_IMAGE} AS build
8+
ARG IFM3D_ROS_CLONE_REPO=https://github.com/ifm/ifm3d-ros
9+
ARG IFM3D_CLONE_REPO=https://github.com/ifm/ifm3d
910

1011
# Create the ifm user
1112
RUN id ifm 2>/dev/null || useradd --uid 30000 --create-home -s /bin/bash -U ifm
@@ -33,19 +34,17 @@ RUN apt-get update && \
3334
gpg
3435
RUN apt-get clean
3536

37+
ARG CMAKE_VERSION=3.20.6
3638
# Install cmake
3739
RUN wget -O - "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -i).tar.gz" \
3840
| tar -xz --strip-components=1 -C /usr
3941

40-
4142
# First clone ifm3d repo
42-
ARG IFM3D_CLONE_REPO
43-
4443
RUN mkdir src && \
4544
cd src && \
4645
git clone ${IFM3D_CLONE_REPO} ifm3d && \
4746
cd ifm3d && \
48-
git checkout ${IFM3D_TAG} && \
47+
git checkout tags/v${IFM3D_TAG} && \
4948
echo "Building from tag ${IFM3D_TAG}" && \
5049
mkdir build && \
5150
cd build && \
@@ -66,17 +65,16 @@ RUN mkdir -p catkin_ws/ifm3d-ros/src
6665
RUN /bin/bash -c 'cd catkin_ws/ifm3d-ros/src; . /opt/ros/${ROS_DISTRO}/setup.bash; catkin_init_workspace'
6766

6867
# Clone and build ifm3d-ros repo
69-
ARG IFM3D_ROS_CLONE_REPO
7068
RUN cd /home/ifm/catkin_ws/ifm3d-ros/src && \
71-
git clone ${IFM3D_ROS_CLONE_REPO} -b ${IFM3D_ROS_BRANCH} --single-branch
69+
git clone ${IFM3D_ROS_CLONE_REPO} -b v${IFM3D_ROS_BRANCH} --single-branch
7270

7371
RUN /bin/bash -c 'cd catkin_ws/ifm3d-ros; . /opt/ros/${ROS_DISTRO}/setup.bash; catkin_make'
7472

7573
RUN mkdir -p /home/ifm/catkin_ws/ifm3d-ros/
7674
RUN /bin/bash -c 'cd /home/ifm/catkin_ws/ifm3d-ros/; . /opt/ros/${ROS_DISTRO}/setup.bash; catkin_make install -DCMAKE_INSTALL_PREFIX=/home/ifm/catkin_ws/ifm3d-ros/install'
7775

7876

79-
FROM ros:melodic-ros-core
77+
FROM ${BASE_IMAGE}
8078

8179
ARG DEBIAN_FRONTEND=noninteractive
8280
COPY --from=build /install/ /usr/

docker/build.sh

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
#!/bin/bash
22
set -euo pipefail
33

4-
IFM3D_CLONE_REPO=https://github.com/ifm/ifm3d
5-
IFM3D_ROS_CLONE_REPO=https://github.com/ifm/ifm3d-ros
6-
IFM3D_ROS_BRANCH="v0.7.1"
7-
IFM3D_TAG=tags/v0.20.3
4+
IFM3D_ROS_BRANCH="0.7.1"
5+
IFM3D_TAG="0.20.3"
86

97
## Melodic
10-
BASE_IMAGE=ros:melodic-perception # amd64
11-
# BASE_IMAGE=arm64v8/ros:melodic-perception # arm64
8+
# BASE_IMAGE=amd64/ros:melodic-perception # amd64
9+
BASE_IMAGE=arm64v8/ros:melodic-perception # arm64
1210
ROS_DISTRO=melodic
1311
LSB_RELEASE=bionic
1412

@@ -18,11 +16,9 @@ LSB_RELEASE=bionic
1816
# ROS_DISTRO=noetic
1917
# LSB_RELEASE=focal
2018

21-
docker build -t ifm3d-ros:melodic-x86_64 \
19+
docker build -t ifm3d-ros:melodic-arm64 \
2220
--build-arg BASE_IMAGE=$BASE_IMAGE \
2321
--build-arg ROS_DISTRO=$ROS_DISTRO \
2422
--build-arg LSB_RELEASE=$LSB_RELEASE \
2523
--build-arg IFM3D_TAG=$IFM3D_TAG \
26-
--build-arg IFM3D_ROS_BRANCH=$IFM3D_ROS_BRANCH \
27-
--build-arg IFM3D_CLONE_REPO=$IFM3D_CLONE_REPO \
28-
--build-arg IFM3D_ROS_CLONE_REPO=$IFM3D_ROS_CLONE_REPO -f Dockerfile .
24+
--build-arg IFM3D_ROS_BRANCH=$IFM3D_ROS_BRANCH -f Dockerfile .

0 commit comments

Comments
 (0)