diff --git a/.github/workflows/ros2.yaml b/.github/workflows/ros2.yaml
index 145b2c847..de3e7c6dd 100644
--- a/.github/workflows/ros2.yaml
+++ b/.github/workflows/ros2.yaml
@@ -9,6 +9,7 @@ jobs:
env:
- {ROS_DISTRO: foxy, ROS_REPO: main}
- {ROS_DISTRO: galactic, ROS_REPO: main}
+ - {ROS_DISTRO: humble, ROS_REPO: main}
- {ROS_DISTRO: rolling, ROS_REPO: main}
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml
index c0caee4f2..a231dd1a3 100644
--- a/.github/workflows/snap.yaml
+++ b/.github/workflows/snap.yaml
@@ -47,3 +47,41 @@ jobs:
with:
snap: ${{needs.build.outputs.snap-file}}
release: ${{ startsWith(github.ref, 'refs/tags/') && 'candidate' || 'edge'}}
+
+ build22:
+ runs-on: ubuntu-latest
+ outputs:
+ snap-file: ${{ steps.build-snap22.outputs.snap }}
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ # full history for latest tag name
+ fetch-depth: 0
+ - run: rm -r snap && mv snap_core22 snap
+ - uses: snapcore/action-build@v1
+ id: build-snap22
+
+ # Make sure the snap is installable
+ - run: |
+ sudo snap install --dangerous ${{ steps.build-snap22.outputs.snap }}
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: plotjuggler-snap22
+ path: ${{ steps.build-snap22.outputs.snap }}
+
+ publish22:
+ if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
+ runs-on: ubuntu-latest
+ needs: build22
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: plotjuggler-snap22
+ path: .
+ - uses: snapcore/action-publish@v1
+ env:
+ SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
+ with:
+ snap: ${{needs.build.outputs.snap-file}}
+ release: humble/${{ startsWith(github.ref, 'refs/tags/') && 'candidate' || 'edge'}}
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index e90cd5e93..d2b10d9bb 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -232,7 +232,6 @@ parts:
- ros-foxy-object-recognition-msgs
- ros-foxy-octomap-msgs
- ros-foxy-ouster-msgs
- - ros-foxy-pacmod-msgs
- ros-foxy-pcl-msgs
- ros-foxy-pendulum-msgs
- ros-foxy-phidgets-msgs
diff --git a/snap_core22/gui/PlotJuggler.desktop b/snap_core22/gui/PlotJuggler.desktop
new file mode 100644
index 000000000..da513636b
--- /dev/null
+++ b/snap_core22/gui/PlotJuggler.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Name=PlotJuggler
+Exec=plotjuggler
+Icon=${SNAP}/meta/gui/plotjuggler.svg
+Comment=Visualize timeseries like a pro
+Terminal=false
+Categories=Development;
+Name[en_US]=PlotJuggler
diff --git a/snap_core22/gui/plotjuggler.svg b/snap_core22/gui/plotjuggler.svg
new file mode 100644
index 000000000..0a51f6fc7
--- /dev/null
+++ b/snap_core22/gui/plotjuggler.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/snap_core22/local/fastdds_no_shared_memory.xml b/snap_core22/local/fastdds_no_shared_memory.xml
new file mode 100644
index 000000000..a4f010566
--- /dev/null
+++ b/snap_core22/local/fastdds_no_shared_memory.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ CustomUdpTransport
+ UDPv4
+
+
+
+
+
+
+ CustomUdpTransport
+
+
+ false
+
+
+
diff --git a/snap_core22/local/launcher-plotjuggler-ros2 b/snap_core22/local/launcher-plotjuggler-ros2
new file mode 100755
index 000000000..b39a73f54
--- /dev/null
+++ b/snap_core22/local/launcher-plotjuggler-ros2
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# Paths to ROS 2 plugins
+export PLUGIN_FOLDERS=$SNAP/opt/ros/snap/lib/plotjuggler_ros
+export AMENT_PREFIX_PATH=$SNAP/opt/ros/humble
+# Disable FastDDS shared-memory
+export FASTRTPS_DEFAULT_PROFILES_FILE=${SNAP}/usr/share/fastdds_no_shared_memory.xml
+
+${SNAP}/usr/local/bin/plotjuggler --plugin_folders $PLUGIN_FOLDERS $@
+
diff --git a/snap_core22/local/plotjuggler.rosinstall b/snap_core22/local/plotjuggler.rosinstall
new file mode 100644
index 000000000..ea012ab97
--- /dev/null
+++ b/snap_core22/local/plotjuggler.rosinstall
@@ -0,0 +1,2 @@
+- git: {local-name: plotjuggler-ros-plugins, uri: 'https://github.com/PlotJuggler/plotjuggler-ros-plugins.git', version: 1.7.3}
+- git: {local-name: plotjuggler_msgs, uri: 'https://github.com/facontidavide/plotjuggler_msgs.git', version: main}
diff --git a/snap_core22/snapcraft.yaml b/snap_core22/snapcraft.yaml
new file mode 100644
index 000000000..58e45eaf2
--- /dev/null
+++ b/snap_core22/snapcraft.yaml
@@ -0,0 +1,262 @@
+name: plotjuggler
+adopt-info: plotjuggler # parse metadata from the plotjuggler part
+summary: The timeseries visualization tool that you deserve
+description: |
+ QT5 based application to display time series in plots,
+ using an intuitive "drag and drop" interface.
+
+ The snap comes with only ROS 2 plugins.
+ You can launch it with
+
+ $ plotjuggler
+
+ launching PlotJuggler with ROS 2 plugins by default.
+
+issues: https://github.com/facontidavide/plotjuggler/issues
+source-code: https://github.com/facontidavide/plotjuggler
+license: MPL-2.0
+
+confinement: strict
+base: core22
+
+apps:
+ plotjuggler:
+ command: usr/bin/launcher-plotjuggler-ros2
+ plugs: [network, network-bind, home, removable-media]
+ extensions: [kde-neon, ros2-humble]
+
+parts:
+ plotjuggler:
+ plugin: cmake
+ source: .
+ cmake-parameters:
+ - -DCMAKE_BUILD_TYPE=Release
+ - "-DCMAKE_PREFIX_PATH=$(echo $SNAPCRAFT_CMAKE_ARGS | awk -F= '{printf(\"%s/usr/lib/$CRAFT_ARCH_TRIPLET/cmake/Qt5\", $2)}')"
+ build-packages:
+ - distro-info-data
+ - libpulse0
+ - libdw-dev
+ - libbfd-dev
+ - libdwarf-dev
+ - libprotoc-dev
+ - libgl-dev
+ - libmosquitto-dev
+ - libzmq3-dev
+ - libzstd-dev
+ stage-packages:
+ - libdw1
+ - libmosquitto1
+ - libprotobuf23
+ - libprotobuf-dev
+ - libzmq5
+ - libzstd1
+ - libfreetype6
+ override-pull: |
+ craftctl default
+ git config --global --add safe.directory '*'
+ version="$(git describe --always --tags| sed -e 's/^v//;s/-/+git/;y/-/./')"
+ [ -n "$(echo $version | grep "+git")" ] && grade=devel || grade=stable
+ craftctl set version="$version"
+ craftctl set grade="$grade"
+
+ # Necessary to bypass XDG desktop portals because ROS 2 bags metadata.yaml are refering db3 files relatively
+ sed -i '/QApplication app(new_argc, new_argv.data());/a QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs);' plotjuggler_app/main.cpp
+
+ plotjuggler-ros2:
+ after: [plotjuggler]
+ plugin: colcon
+ source: .
+ colcon-cmake-args:
+ - -DCMAKE_BUILD_TYPE=Release
+ - -DBUILD_TESTING=OFF
+ - -DBUILD_DOCS=OFF
+ # point to previously build plotjuggler
+ - -Dplotjuggler_DIR:PATH=$CRAFT_STAGE/usr/local/lib/cmake/plotjuggler
+ # Due to https://github.com/ament/ament_cmake/issues/189 implicity OpenSSL link breaks. So we change CMAKE_PREFIX_PATH and not CMAKE_FIND_ROOT_PATH
+ - -DCMAKE_PREFIX_PATH=$(echo $SNAPCRAFT_CMAKE_ARGS | awk -F= '{printf("%s/usr/lib/x86_64-linux-gnu/cmake/Qt5", $2)}')
+ - --event-handlers=console_direct+
+ build-packages:
+ - git
+ - python3-vcstool
+ - ros-humble-ros-core
+ - patchelf
+ stage-packages:
+ # ROS 2 plugin need to source messages to plot them
+ # No custom message is going to be support for now
+ - ros-humble-ackermann-msgs
+ - ros-humble-action-msgs
+ - ros-humble-actionlib-msgs
+ - ros-humble-actuator-msgs
+ - ros-humble-apriltag-msgs
+ - ros-humble-aruco-msgs
+ - ros-humble-aruco-opencv-msgs
+ - ros-humble-automotive-autonomy-msgs
+ - ros-humble-automotive-navigation-msgs
+ - ros-humble-automotive-platform-msgs
+ - ros-humble-autoware-auto-msgs
+ - ros-humble-can-msgs
+ - ros-humble-cartographer-ros-msgs
+ - ros-humble-cascade-lifecycle-msgs
+ - ros-humble-control-msgs
+ - ros-humble-controller-manager-msgs
+ - ros-humble-create-msgs
+ - ros-humble-dataspeed-dbw-msgs
+ - ros-humble-dataspeed-ulc-msgs
+ - ros-humble-dbw-fca-msgs
+ - ros-humble-dbw-ford-msgs
+ - ros-humble-dbw-polaris-msgs
+ - ros-humble-delphi-esr-msgs
+ - ros-humble-delphi-mrr-msgs
+ - ros-humble-delphi-srr-msgs
+ - ros-humble-depthai-ros-msgs
+ - ros-humble-derived-object-msgs
+ - ros-humble-diagnostic-msgs
+ - ros-humble-dwb-msgs
+ - ros-humble-dynamixel-workbench-msgs
+ - ros-humble-foros-msgs
+ - ros-humble-four-wheel-steering-msgs
+ - ros-humble-foxglove-msgs
+ - ros-humble-gazebo-msgs
+ - ros-humble-geographic-msgs
+ - ros-humble-geometry-msgs
+ - ros-humble-gps-msgs
+ - ros-humble-graph-msgs
+ - ros-humble-grasping-msgs
+ - ros-humble-grbl-msgs
+ - ros-humble-grid-map-msgs
+ - ros-humble-ibeo-msgs
+ - ros-humble-irobot-create-msgs
+ - ros-humble-kartech-linear-actuator-msgs
+ - ros-humble-leo-msgs
+ - ros-humble-lgsvl-msgs
+ - ros-humble-lifecycle-msgs
+ - ros-humble-map-msgs
+ - ros-humble-marker-msgs
+ - ros-humble-marti-can-msgs
+ - ros-humble-marti-common-msgs
+ - ros-humble-marti-dbw-msgs
+ - ros-humble-marti-introspection-msgs
+ - ros-humble-marti-nav-msgs
+ - ros-humble-marti-perception-msgs
+ - ros-humble-marti-sensor-msgs
+ - ros-humble-marti-status-msgs
+ - ros-humble-marti-visualization-msgs
+ - ros-humble-marvelmind-ros2-msgs
+ - ros-humble-mavros-msgs
+ - ros-humble-micro-ros-diagnostic-msgs
+ - ros-humble-micro-ros-msgs
+ - ros-humble-microstrain-inertial-msgs
+ - ros-humble-mobileye-560-660-msgs
+ - ros-humble-moveit-msgs
+ - ros-humble-mrpt-msgs
+ - ros-humble-nao-command-msgs
+ - ros-humble-nao-sensor-msgs
+ - ros-humble-nav-2d-msgs
+ - ros-humble-nav-msgs
+ - ros-humble-nav2-msgs
+ - ros-humble-neobotix-usboard-msgs
+ - ros-humble-nmea-msgs
+ - ros-humble-novatel-gps-msgs
+ - ros-humble-novatel-oem7-msgs
+ - ros-humble-object-recognition-msgs
+ - ros-humble-octomap-msgs
+ - ros-humble-ouster-msgs
+ - ros-humble-pal-statistics-msgs
+ - ros-humble-pcl-msgs
+ - ros-humble-pendulum-msgs
+ - ros-humble-phidgets-msgs
+ - ros-humble-plansys2-msgs
+ - ros-humble-play-motion2-msgs
+ - ros-humble-polygon-msgs
+ - ros-humble-radar-msgs
+ - ros-humble-raspimouse-msgs
+ - ros-humble-rc-common-msgs
+ - ros-humble-rc-reason-msgs
+ - ros-humble-rclpy-message-converter-msgs
+ - ros-humble-rcss3d-agent-msgs
+ - ros-humble-realsense2-camera-msgs
+ - ros-humble-rmf-api-msgs
+ - ros-humble-rmf-building-map-msgs
+ - ros-humble-rmf-charger-msgs
+ - ros-humble-rmf-dispenser-msgs
+ - ros-humble-rmf-door-msgs
+ - ros-humble-rmf-fleet-msgs
+ - ros-humble-rmf-ingestor-msgs
+ - ros-humble-rmf-lift-msgs
+ - ros-humble-rmf-obstacle-msgs
+ - ros-humble-rmf-scheduler-msgs
+ - ros-humble-rmf-site-map-msgs
+ - ros-humble-rmf-task-msgs
+ - ros-humble-rmf-traffic-msgs
+ - ros-humble-rmf-visualization-msgs
+ - ros-humble-rmf-workcell-msgs
+ - ros-humble-robot-calibration-msgs
+ - ros-humble-robot-controllers-msgs
+ - ros-humble-rosapi-msgs
+ - ros-humble-rosbridge-msgs
+ - ros-humble-rosbridge-test-msgs
+ - ros-humble-rosgraph-msgs
+ - ros-humble-rtabmap-msgs
+ - ros-humble-rtcm-msgs
+ - ros-humble-rviz-2d-overlay-msgs
+ - ros-humble-sensor-msgs
+ - ros-humble-sensor-msgs-py
+ - ros-humble-shape-msgs
+ - ros-humble-soccer-object-msgs
+ - ros-humble-soccer-vision-2d-msgs
+ - ros-humble-soccer-vision-3d-msgs
+ - ros-humble-soccer-vision-attribute-msgs
+ - ros-humble-statistics-msgs
+ - ros-humble-std-msgs
+ - ros-humble-stereo-msgs
+ - ros-humble-stubborn-buddies-msgs
+ - ros-humble-system-modes-msgs
+ - ros-humble-teleop-tools-msgs
+ - ros-humble-test-msgs
+ - ros-humble-tf2-geometry-msgs
+ - ros-humble-tf2-msgs
+ - ros-humble-tf2-sensor-msgs
+ - ros-humble-trajectory-msgs
+ - ros-humble-turtlebot3-msgs
+ - ros-humble-turtlebot4-msgs
+ - ros-humble-tuw-geometry-msgs
+ - ros-humble-ublox-msgs
+ - ros-humble-ublox-ubx-msgs
+ - ros-humble-udp-msgs
+ - ros-humble-unique-identifier-msgs
+ - ros-humble-ur-dashboard-msgs
+ - ros-humble-ur-msgs
+ - ros-humble-urg-node-msgs
+ - ros-humble-velodyne-msgs
+ - ros-humble-vision-msgs
+ - ros-humble-visualization-msgs
+ - ros-humble-webots-ros2-msgs
+ - ros-humble-wiimote-msgs
+ - ros-humble-wireless-msgs
+
+ # Additional DDS vendors
+ - ros-humble-rmw-cyclonedds-cpp
+ - ros-humble-rmw-fastrtps-cpp
+ - ros-humble-rmw-gurumdds-cpp
+ - ros-humble-rmw-connextdds
+ override-pull: |
+ if [ ! -d plotjuggler-ros-plugins ]; then
+
+ vcs import < /root/parts/plotjuggler/src/snap/local/plotjuggler.rosinstall
+
+ # prevent rosdep from installing plotjuggler
+ sed -i "s|plotjuggler||" plotjuggler-ros-plugins/package.xml
+
+ # add plotjuggler_LIBRARIES link
+ sed -i '/\${Qt5Xml_LIBRARIES}/a ${plotjuggler_LIBRARIES}' plotjuggler-ros-plugins/plugins/CMakeLists.txt
+
+ # Qt dependencies are managed by the kde neon-extension
+ sed -i '/qt/d' plotjuggler-ros-plugins/package.xml
+ fi
+
+ fastdds-no-shared-memory:
+ plugin: dump
+ source: snap/local/
+ organize:
+ 'fastdds_no_shared_memory.xml': usr/share/
+ 'launcher-plotjuggler*': usr/bin/