Skip to content

Commit

Permalink
ODS Integration
Browse files Browse the repository at this point in the history
  • Loading branch information
chriseichmann authored and lola-masson committed Nov 13, 2024
1 parent 3c4c3cb commit 04ad503
Show file tree
Hide file tree
Showing 87 changed files with 5,388 additions and 3,145 deletions.
24 changes: 11 additions & 13 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,14 @@ SpaceAfterCStyleCast: false
BreakBeforeBraces: Custom

# Control of individual brace wrapping cases
BraceWrapping: {
AfterClass: 'true'
AfterControlStatement: 'true'
AfterEnum : 'true'
AfterFunction : 'true'
AfterNamespace : 'true'
AfterStruct : 'true'
AfterUnion : 'true'
BeforeCatch : 'true'
BeforeElse : 'true'
IndentBraces : 'false'
}
...
BraceWrapping:
AfterClass: 'true'
AfterControlStatement: 'true'
AfterEnum : 'true'
AfterFunction : 'true'
AfterNamespace : 'true'
AfterStruct : 'true'
AfterUnion : 'true'
BeforeCatch : 'true'
BeforeElse : 'true'
IndentBraces : 'false'
29 changes: 2 additions & 27 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,6 @@
# Built Visual Studio Code Extensions
*.vsix


# ROS
devel/
logs/
build/
bin/
lib/
msg_gen/
srv_gen/
msg/*Action.msg
msg/*ActionFeedback.msg
msg/*ActionGoal.msg
msg/*ActionResult.msg
msg/*Feedback.msg
msg/*Goal.msg
msg/*Result.msg
msg/_*.py
build_isolated/
devel_isolated/

# Generated by dynamic reconfigure
*.cfgc
/cfg/cpp/
/cfg/*.py

# Ignore generated docs
*.dox
*.wikidoc
Expand All @@ -63,5 +38,5 @@ qtcreator-*
# Emacs
.#*

# Catkin custom files
CATKIN_IGNORE
# Builds
build*/
72 changes: 72 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# General concept is strongly inspired by the industrial_ci project https://github.com/ros-industrial/industrial_ci
---
variables:
GIT_STRATEGY: clone

stages:
- build

.build_matrix:
parallel:
matrix:
- RUN_NAME: "22.04+1.4.3" # No effect on CI, just for making the gitlab pipeline view easier to read
CI_IMAGE: ros:humble-ros-core-jammy
IFM3D_PACKAGE_PATH: https://github.com/ifm/ifm3d/releases/download/v1.4.3/ifm3d-ubuntu-22.04-amd64-debs_1.4.3.tar
ROS_DISTRO: humble
- RUN_NAME: "22.04+1.5.0"
CI_IMAGE: ros:humble-ros-core-jammy
IFM3D_PACKAGE_PATH: https://github.com/ifm/ifm3d/releases/download/v1.5.0/ifm3d-ubuntu-22.04-amd64-debs_1.5.0.tar
ROS_DISTRO: humble
- RUN_NAME: "22.04+1.5.1"
CI_IMAGE: ros:humble-ros-core-jammy
IFM3D_PACKAGE_PATH: https://github.com/ifm/ifm3d/releases/download/v1.5.1/ifm3d-ubuntu-22.04-amd64-debs_1.5.1.tar
ROS_DISTRO: humble
- RUN_NAME: "22.04+1.5.2"
CI_IMAGE: ros:humble-ros-core-jammy
IFM3D_PACKAGE_PATH: https://github.com/ifm/ifm3d/releases/download/v1.5.2/ifm3d-ubuntu-22.04-amd64-debs_1.5.2.tar
ROS_DISTRO: humble
- RUN_NAME: "22.04+1.5.3"
CI_IMAGE: ros:humble-ros-core-jammy
IFM3D_PACKAGE_PATH: https://github.com/ifm/ifm3d/releases/download/v1.5.3/ifm3d-ubuntu-22.04-amd64-debs_1.5.3.tar
ROS_DISTRO: humble

- RUN_NAME: "24.04+1.5.3"
CI_IMAGE: ros:jazzy-ros-core-noble
IFM3D_PACKAGE_PATH: https://github.com/ifm/ifm3d/releases/download/v1.5.3/ifm3d-ubuntu-22.04-amd64-debs_1.5.3.tar
ROS_DISTRO: jazzy


build: # very short job name to keep the pipeline preview readable on Gitlab
stage: build
image: $CI_IMAGE
parallel: !reference [.build_matrix,parallel]

before_script:
# Download the released version ofifm3d from github
- apt-get update
- apt-get install -y curl
- curl --location $IFM3D_PACKAGE_PATH | tar x
# Install dependencies
- apt-get install -y libboost-all-dev git libcurl4-openssl-dev libgtest-dev libgoogle-glog-dev
libxmlrpc-c++8-dev libopencv-dev libpcl-dev libproj-dev python3-dev python3-pip build-essential
coreutils findutils cmake locales ninja-build
# Install ifm3d packages
- dpkg -i ./ifm3d_*.deb
# Cleanup
- rm ifm3d_*.deb

script:
# Install some dependencies, update rosdep
- apt-get update
- apt-get install -y ros-dev-tools
- rosdep init || true # init needed for 22.04 image but throws error on 24.04; error can be ignored
- rosdep update > /dev/null
# Create Workspace and copy sources
- mkdir -p /root/target_ws/src
- cp -r . /root/target_ws/src
- cd /root/target_ws/
# Install dependencies, build workspace and run tests
- source /opt/ros/$ROS_DISTRO/setup.bash
- rosdep install --from-paths /root/target_ws/src --ignore-src -y
- colcon build --event-handlers desktop_notification- status- terminal_title- --cmake-args -DENABLE_COVERAGE_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- colcon test --event-handlers desktop_notification- status- terminal_title- console_cohesion+ --executor sequential --ctest-args -j1
85 changes: 85 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"files.associations": {
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"csignal": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"any": "cpp",
"array": "cpp",
"atomic": "cpp",
"strstream": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"bitset": "cpp",
"chrono": "cpp",
"codecvt": "cpp",
"compare": "cpp",
"complex": "cpp",
"concepts": "cpp",
"condition_variable": "cpp",
"coroutine": "cpp",
"cstdint": "cpp",
"deque": "cpp",
"forward_list": "cpp",
"list": "cpp",
"map": "cpp",
"set": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"regex": "cpp",
"source_location": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"future": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"numbers": "cpp",
"ostream": "cpp",
"ranges": "cpp",
"semaphore": "cpp",
"shared_mutex": "cpp",
"span": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"stop_token": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cfenv": "cpp",
"cinttypes": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"valarray": "cpp",
"variant": "cpp",
"*.ipp": "cpp"
}
}
27 changes: 27 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,33 @@
^^^^^^^^^^^^^^^^^^^^^^^^^
Changelog for package ifm3d-ros2
^^^^^^^^^^^^^^^^^^^^^^^^^
1.2
===

1.2.0
-----
* Create an ODS node to publish ODS data:
* The launch file `ods.launch.py` can be used,
* Add two topics, `"~/ods_info"` and `"~/ods_occupancy_map_ros"`,
* An example launch configuration for ODS is provided `ods_default_parameters.yaml` and can be used with the launch file,
* It is expected that ODS is configured before the node is launched. Alternatively, one can use the new `config_file` parameter.
* Remove the `diag_mode` parameter: diagnostic is always polled periodically and published to `"/diagnostic"`
* Add the `GetDiag` service for polling filtered diagnostic data.
* Camera info topic:
* Add a `"~/camera_info"` topic for RGB cameras.
* The `"~/camera_info"` topic for the TOF cameras is published when the `TOF_INFO` buffer is requested, instead of the `INTRINSIC` buffer.
* Add a `config_file` parameter. It should be formatted in JSON and will be used to configure the device when the `CONFIGURE` state is triggered.
* Transforms:
* The `cloud_link` was renamed to `ifm_base_link`, and is used as the reference ifm calibrated coordinate system for all ifm data (RGB, 3D and ODS).
* The transforms between the `cloud_link` (now `ifm_base_link`), and the `mounting_link` and `optical_link` are fixed.
* The `mounting_link` to `optical_link` transform is read when the first `TOF_INFO` or `RGB_INFO` buffer is received, and remains constant.
* The `ifm_base_link` to `mounting_link` transform is published once when the first `TOF_INFO` or `RGB_INFO` buffer is received, and is only re-published subsequently if changed.
* The camera node parameters related to tf publication got reworked, the new parameters are:
* `tf.base_frame_name`: Name for ifm reference frame
| * `tf.mounting_frame_name`: Name for the mounting point frame
| * `tf.optical_frame_name`: Name for the optical frame
| * `tf.publish_base_to_mounting`: Whether the transform from the ifm base link to the camera mounting point should be published
| * `tf.publish_mounting_to_optical`: Whether the transform from the cameras mounting point to the optical center should be published
1.1
===
Expand Down
Loading

0 comments on commit 04ad503

Please sign in to comment.