From d593cfd11acf4a2e2f901a9ad93631344b37fd65 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 11:37:50 +0100 Subject: [PATCH 01/10] fix issue #906: support nanoseconds timestamp in csv --- .../DataLoadCSV/dataload_csv.cpp | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp b/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp index ec95349d4..26116e449 100644 --- a/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp +++ b/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp @@ -508,9 +508,34 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data bool parse_date_format = _ui->checkBoxDateFormat->isChecked(); QString format_string = _ui->lineEditDateFormat->text(); - auto ParseNumber = [&](QString str, bool& is_number) { + auto ParseNumber = [&](QString str, bool& is_number, bool maybe_timestamp = false) { QString str_trimmed = str.trimmed(); - double val = str_trimmed.toDouble(&is_number); + double val = 0.0; + // Support the case where the timestamp is in nanoseconds / microseconds + if(maybe_timestamp) + { + uint64_t ts = str_trimmed.toULong(&is_number); + uint64_t first_ts = 1400000000; //May 13, 2014 + uint64_t last_ts = 2000000000; // May 18, 2033 + if(is_number) + { + if(ts > first_ts*1e9 && ts < last_ts*1e9) { + // convert from nanoseconds to seconds + val = double(ts) * 1e-9; + } + else if(ts > first_ts*1e6 && ts < last_ts*1e6) { + // convert from nanoseconds to seconds + val = double(ts) * 1e-6; + } + } + else { + val = str_trimmed.toDouble(&is_number); + } + } + else { + val = str_trimmed.toDouble(&is_number); + } + // handle numbers with comma instead of point as decimal separator if (!is_number) { @@ -589,13 +614,13 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data return false; } - double t = linecount; + double timestamp = linecount; if (time_index >= 0) { bool is_number = false; t_str = string_items[time_index]; - t = ParseNumber(t_str, is_number); + timestamp = ParseNumber(t_str, is_number, true); time_header_str = header_string_items[time_index]; if (!is_number) @@ -627,7 +652,7 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data return false; } - if (prev_time > t && !sortRequired) + if (prev_time > timestamp && !sortRequired) { QMessageBox msgBox; QString timeName; @@ -671,7 +696,7 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data } } - prev_time = t; + prev_time = timestamp; prev_t_str = t_str; } @@ -682,11 +707,11 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data double y = ParseNumber(str, is_number); if (is_number) { - plots_vector[i]->pushBack({ t, y }); + plots_vector[i]->pushBack({ timestamp, y }); } else { - string_vector[i]->pushBack({ t, str.toStdString() }); + string_vector[i]->pushBack({ timestamp, str.toStdString() }); } } From 00689170d06d8526166884779e98fad4c48721e9 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 11:47:44 +0100 Subject: [PATCH 02/10] comsetic changes --- .../DataLoadCSV/dataload_csv.cpp | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp b/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp index 26116e449..9a67e103f 100644 --- a/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp +++ b/plotjuggler_plugins/DataLoadCSV/dataload_csv.cpp @@ -508,12 +508,11 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data bool parse_date_format = _ui->checkBoxDateFormat->isChecked(); QString format_string = _ui->lineEditDateFormat->text(); - auto ParseNumber = [&](QString str, bool& is_number, bool maybe_timestamp = false) { - QString str_trimmed = str.trimmed(); - double val = 0.0; - // Support the case where the timestamp is in nanoseconds / microseconds - if(maybe_timestamp) - { + auto ParseTimestamp = [&](QString str, bool& is_number) { + QString str_trimmed = str.trimmed(); + double val = 0.0; + is_number = false; + // Support the case where the timestamp is in nanoseconds / microseconds uint64_t ts = str_trimmed.toULong(&is_number); uint64_t first_ts = 1400000000; //May 13, 2014 uint64_t last_ts = 2000000000; // May 18, 2033 @@ -528,14 +527,32 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data val = double(ts) * 1e-6; } } - else { + // Try a double value (seconds) + if (!is_number) { val = str_trimmed.toDouble(&is_number); } - } - else { - val = str_trimmed.toDouble(&is_number); - } + // handle numbers with comma instead of point as decimal separator + if (!is_number) + { + static QLocale locale_with_comma(QLocale::German); + val = locale_with_comma.toDouble(str_trimmed, &is_number); + } + if (!is_number && parse_date_format && !format_string.isEmpty()) + { + QDateTime ts = QDateTime::fromString(str_trimmed, format_string); + is_number = ts.isValid(); + if (is_number) + { + val = ts.toMSecsSinceEpoch() / 1000.0; + } + } + return val; + }; + + auto ParseNumber = [&](QString str, bool& is_number) { + QString str_trimmed = str.trimmed(); + double val = val = str_trimmed.toDouble(&is_number); // handle numbers with comma instead of point as decimal separator if (!is_number) { @@ -620,7 +637,7 @@ bool DataLoadCSV::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_data { bool is_number = false; t_str = string_items[time_index]; - timestamp = ParseNumber(t_str, is_number, true); + timestamp = ParseTimestamp(t_str, is_number); time_header_str = header_string_items[time_index]; if (!is_number) From c6b3af1efcdb3893615504a86ae8f39e32d36eb2 Mon Sep 17 00:00:00 2001 From: TheOtherMarcus Date: Tue, 9 Jan 2024 11:52:29 +0100 Subject: [PATCH 03/10] Added a clear() function to Lua timeseries. (#898) Co-authored-by: Marcus Andersson --- plotjuggler_base/include/PlotJuggler/reactive_function.h | 2 ++ plotjuggler_base/src/reactive_function.cpp | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/plotjuggler_base/include/PlotJuggler/reactive_function.h b/plotjuggler_base/include/PlotJuggler/reactive_function.h index 2333b7893..601cfe43e 100644 --- a/plotjuggler_base/include/PlotJuggler/reactive_function.h +++ b/plotjuggler_base/include/PlotJuggler/reactive_function.h @@ -29,6 +29,8 @@ struct TimeseriesRef unsigned size() const; + void clear() const; + PJ::PlotData* _plot_data = nullptr; }; diff --git a/plotjuggler_base/src/reactive_function.cpp b/plotjuggler_base/src/reactive_function.cpp index d8915d046..d9c713a36 100644 --- a/plotjuggler_base/src/reactive_function.cpp +++ b/plotjuggler_base/src/reactive_function.cpp @@ -114,6 +114,7 @@ void ReactiveLuaFunction::prepareLua() _timeseries_ref["at"] = &TimeseriesRef::at; _timeseries_ref["set"] = &TimeseriesRef::set; _timeseries_ref["atTime"] = &TimeseriesRef::atTime; + _timeseries_ref["clear"] = &TimeseriesRef::clear; //--------------------------------------- _created_timeseries = _lua_engine.new_usertype("Timeseries"); @@ -194,6 +195,11 @@ unsigned TimeseriesRef::size() const return _plot_data->size(); } +void TimeseriesRef::clear() const +{ + _plot_data->clear(); +} + CreatedSeriesBase::CreatedSeriesBase(PlotDataMapRef* data_map, const std::string& name, bool timeseries) { From 7450c6ab8a1cc0b5929dd418c78cb8a062db91dc Mon Sep 17 00:00:00 2001 From: Zach Davis Date: Tue, 9 Jan 2024 04:53:48 -0600 Subject: [PATCH 04/10] #879 Inverted option for STEPS style (#880) * #879 Inverted option for STEPS style New line style like STEPS but drawn the opposite way * Better steps nomenclature * Fix steps naming Co-authored-by: Davide Faconti --------- Co-authored-by: Davide Faconti --- plotjuggler_app/plotwidget.cpp | 8 ++++++++ plotjuggler_app/plotwidget_editor.cpp | 12 ++++++++++++ plotjuggler_app/plotwidget_editor.h | 2 ++ plotjuggler_app/plotwidget_editor.ui | 9 ++++++++- .../include/PlotJuggler/plotwidget_base.h | 3 ++- plotjuggler_base/src/plotwidget_base.cpp | 5 +++++ 6 files changed, 37 insertions(+), 2 deletions(-) diff --git a/plotjuggler_app/plotwidget.cpp b/plotjuggler_app/plotwidget.cpp index 7a9311d4b..9eea88646 100644 --- a/plotjuggler_app/plotwidget.cpp +++ b/plotjuggler_app/plotwidget.cpp @@ -674,6 +674,10 @@ QDomElement PlotWidget::xmlSaveState(QDomDocument& doc) const { plot_el.setAttribute("style", "Steps"); } + else if (curveStyle() == PlotWidgetBase::STEPSINV) + { + plot_el.setAttribute("style", "StepsInv"); + } for (auto& it : curveList()) { @@ -877,6 +881,10 @@ bool PlotWidget::xmlLoadState(QDomElement& plot_widget, bool autozoom) { changeCurvesStyle(PlotWidgetBase::STEPS); } + else if (style == "StepsInv") + { + changeCurvesStyle(PlotWidgetBase::STEPSINV); + } } QString bg_data = plot_widget.attribute("background_data"); diff --git a/plotjuggler_app/plotwidget_editor.cpp b/plotjuggler_app/plotwidget_editor.cpp index f0971c35e..9358befd9 100644 --- a/plotjuggler_app/plotwidget_editor.cpp +++ b/plotjuggler_app/plotwidget_editor.cpp @@ -68,6 +68,10 @@ PlotwidgetEditor::PlotwidgetEditor(PlotWidget* plotwidget, QWidget* parent) { ui->radioSteps->setChecked(true); } + else if (_plotwidget->curveStyle() == PlotWidgetBase::STEPSINV) + { + ui->radioSteps->setChecked(true); + } else { ui->radioBoth->setChecked(true); @@ -320,6 +324,14 @@ void PlotwidgetEditor::on_radioSteps_toggled(bool checked) } } +void PlotwidgetEditor::on_radioStepsInv_toggled(bool checked) +{ + if (checked) + { + _plotwidget->changeCurvesStyle(PlotWidgetBase::STEPSINV); + } +} + void PlotwidgetEditor::on_checkBoxMax_toggled(bool checked) { ui->lineLimitMax->setEnabled(checked); diff --git a/plotjuggler_app/plotwidget_editor.h b/plotjuggler_app/plotwidget_editor.h index a28104824..6c1ac7cf2 100644 --- a/plotjuggler_app/plotwidget_editor.h +++ b/plotjuggler_app/plotwidget_editor.h @@ -86,6 +86,8 @@ private slots: void on_radioSteps_toggled(bool checked); + void on_radioStepsInv_toggled(bool checked); + private: Ui::PlotWidgetEditor* ui; diff --git a/plotjuggler_app/plotwidget_editor.ui b/plotjuggler_app/plotwidget_editor.ui index ad7860f30..cc49f2c34 100644 --- a/plotjuggler_app/plotwidget_editor.ui +++ b/plotjuggler_app/plotwidget_editor.ui @@ -344,7 +344,14 @@ - Steps + Steps (pre) + + + + + + + Step (post) diff --git a/plotjuggler_base/include/PlotJuggler/plotwidget_base.h b/plotjuggler_base/include/PlotJuggler/plotwidget_base.h index 4865ff17f..8b5b3fd88 100644 --- a/plotjuggler_base/include/PlotJuggler/plotwidget_base.h +++ b/plotjuggler_base/include/PlotJuggler/plotwidget_base.h @@ -33,7 +33,8 @@ class PlotWidgetBase : public QWidget DOTS, LINES_AND_DOTS, STICKS, - STEPS + STEPS, + STEPSINV }; struct CurveInfo diff --git a/plotjuggler_base/src/plotwidget_base.cpp b/plotjuggler_base/src/plotwidget_base.cpp index b5ed59dfb..b5969d8b9 100644 --- a/plotjuggler_base/src/plotwidget_base.cpp +++ b/plotjuggler_base/src/plotwidget_base.cpp @@ -723,6 +723,11 @@ void PlotWidgetBase::setStyle(QwtPlotCurve* curve, CurveStyle style) break; case STEPS: curve->setStyle(QwtPlotCurve::Steps); + curve->setCurveAttribute(QwtPlotCurve::Inverted, false); + break; + case STEPSINV: + curve->setStyle(QwtPlotCurve::Steps); + curve->setCurveAttribute(QwtPlotCurve::Inverted, true); break; } } From 64e3b81662f78572ac6f2056b7f39cfef760dae1 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 11:55:47 +0100 Subject: [PATCH 05/10] version bump --- CHANGELOG.rst | 7 +++++++ CMakeLists.txt | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 612c68618..bb02d00ac 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,13 @@ Changelog for package plotjuggler ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Forthcoming +----------- +* fix issue `#906 `_: support nanoseconds timestamp in csv +* fix issue `#904 `_: wring ROS odometry parsing +* add moving variance +* Contributors: Davide Faconti + 3.8.5 (2024-01-03) ------------------ * fix issue `#901 `_ diff --git a/CMakeLists.txt b/CMakeLists.txt index 12c7ca48e..013a17514 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.10.2) -PROJECT(plotjuggler LANGUAGES C CXX VERSION 3.8.5) +PROJECT(plotjuggler LANGUAGES C CXX VERSION 3.8.6) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) From ab6b8b1cf5ce6fe5f20cd325b52e4491b34d5744 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 11:57:23 +0100 Subject: [PATCH 06/10] 3.8.6 --- CHANGELOG.rst | 4 ++-- package.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bb02d00ac..377282ec2 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,8 +2,8 @@ Changelog for package plotjuggler ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Forthcoming ------------ +3.8.6 (2024-01-09) +------------------ * fix issue `#906 `_: support nanoseconds timestamp in csv * fix issue `#904 `_: wring ROS odometry parsing * add moving variance diff --git a/package.xml b/package.xml index 39ac0590a..4fba45616 100644 --- a/package.xml +++ b/package.xml @@ -1,7 +1,7 @@ plotjuggler - 3.8.5 + 3.8.6 PlotJuggler: juggle with data Davide Faconti From 91a27714e7daf0df983235018a4dc1ea75d56201 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 12:31:16 +0100 Subject: [PATCH 07/10] WIP --- .gitignore | 1 + snap_core20/snapcraft.yaml | 9 +++++---- snap_core22/snapcraft.yaml | 8 ++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 962d0b24d..0399f2c04 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ _deps # Clangd .cache +/snap/* diff --git a/snap_core20/snapcraft.yaml b/snap_core20/snapcraft.yaml index f569b97fd..a1a666b13 100644 --- a/snap_core20/snapcraft.yaml +++ b/snap_core20/snapcraft.yaml @@ -1,5 +1,5 @@ -name: plotjuggler -adopt-info: plotjuggler # parse metadata from the plotjuggler part +name: plotjuggler-ros +adopt-info: plotjuggler-ros # parse metadata from the plotjuggler part summary: The timeseries visualization tool that you deserve description: | QT5 based application to display time series in plots, @@ -8,7 +8,7 @@ description: | The snap comes with only ROS 2 plugins. You can launch it with - $ plotjuggler + $ plotjuggler-ros issues: https://github.com/facontidavide/plotjuggler/issues source-code: https://github.com/facontidavide/plotjuggler @@ -57,7 +57,6 @@ parts: - libprotobuf-dev - libzmq5 - libzstd1 - - libpsm-infinipath1 override-pull: | snapcraftctl pull @@ -87,6 +86,8 @@ parts: - python3-vcstool - ros-noetic-ros-environment - ros-noetic-catkin + stage-packages: + - libpsm-infinipath1 override-pull: | if [ ! -d plotjuggler-ros-plugins ]; then diff --git a/snap_core22/snapcraft.yaml b/snap_core22/snapcraft.yaml index 6b13d7426..6c682ee9c 100644 --- a/snap_core22/snapcraft.yaml +++ b/snap_core22/snapcraft.yaml @@ -1,5 +1,5 @@ -name: plotjuggler -adopt-info: plotjuggler # parse metadata from the plotjuggler part +name: plotjuggler-ros2 +adopt-info: plotjuggler-ros2 # parse metadata from the plotjuggler part summary: The timeseries visualization tool that you deserve description: | QT5 based application to display time series in plots, @@ -8,7 +8,7 @@ description: | The snap comes with only ROS 2 plugins. You can launch it with - $ plotjuggler + $ plotjuggler-ros2 issues: https://github.com/facontidavide/plotjuggler/issues @@ -19,7 +19,7 @@ confinement: strict base: core22 apps: - plotjuggler: + plotjuggler-ros2: command: usr/bin/launcher-plotjuggler-ros2 plugs: [network, network-bind, home, removable-media] extensions: [kde-neon, ros2-humble] From 12bbdecbd4f2747c1656b7e5263a34090b0708cc Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 13:25:43 +0100 Subject: [PATCH 08/10] update snaps --- snap_core20/snapcraft.yaml | 2 +- snap_core22/local/launcher-plotjuggler-ros2 | 2 ++ snap_core22/snapcraft.yaml | 10 +++++----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/snap_core20/snapcraft.yaml b/snap_core20/snapcraft.yaml index a1a666b13..ba562d646 100644 --- a/snap_core20/snapcraft.yaml +++ b/snap_core20/snapcraft.yaml @@ -28,7 +28,7 @@ package-repositories: url: http://packages.ros.org/ros/ubuntu apps: - plotjuggler: + plotjuggler-ros: command: usr/bin/launcher-plotjuggler-ros plugs: [network, network-bind, home, removable-media] extensions: [kde-neon] diff --git a/snap_core22/local/launcher-plotjuggler-ros2 b/snap_core22/local/launcher-plotjuggler-ros2 index b39a73f54..695572fe4 100755 --- a/snap_core22/local/launcher-plotjuggler-ros2 +++ b/snap_core22/local/launcher-plotjuggler-ros2 @@ -1,5 +1,7 @@ #!/bin/bash +export LD_LIBRARY_PATH=$SNAP/opt/ros/humble/lib:$SNAP/opt/ros/snap/lib:$SNAP/usr/local/lib:$LD_LIBRARY_PATH + # Paths to ROS 2 plugins export PLUGIN_FOLDERS=$SNAP/opt/ros/snap/lib/plotjuggler_ros export AMENT_PREFIX_PATH=$SNAP/opt/ros/humble diff --git a/snap_core22/snapcraft.yaml b/snap_core22/snapcraft.yaml index 6c682ee9c..7e2335cf6 100644 --- a/snap_core22/snapcraft.yaml +++ b/snap_core22/snapcraft.yaml @@ -1,14 +1,14 @@ -name: plotjuggler-ros2 -adopt-info: plotjuggler-ros2 # parse metadata from the plotjuggler part +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 + You can launch it with: - $ plotjuggler-ros2 + $ plotjuggler issues: https://github.com/facontidavide/plotjuggler/issues @@ -19,7 +19,7 @@ confinement: strict base: core22 apps: - plotjuggler-ros2: + plotjuggler: command: usr/bin/launcher-plotjuggler-ros2 plugs: [network, network-bind, home, removable-media] extensions: [kde-neon, ros2-humble] From d01a9566f2b11777ed7e14ffd909232d25c806b8 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 13:26:11 +0100 Subject: [PATCH 09/10] fix issue #908: wrong quaternion parsing in ROS --- plotjuggler_plugins/ParserROS/ros_parser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plotjuggler_plugins/ParserROS/ros_parser.cpp b/plotjuggler_plugins/ParserROS/ros_parser.cpp index ce66c066b..989a3554d 100644 --- a/plotjuggler_plugins/ParserROS/ros_parser.cpp +++ b/plotjuggler_plugins/ParserROS/ros_parser.cpp @@ -205,7 +205,7 @@ void ParserROS::parseQuaternion(const std::string& prefix, double& timestamp) getSeries(prefix + "/x").pushBack({ timestamp, quat.x }); getSeries(prefix + "/y").pushBack({ timestamp, quat.y }); getSeries(prefix + "/z").pushBack({ timestamp, quat.z }); - getSeries(prefix + "/z").pushBack({ timestamp, quat.w }); + getSeries(prefix + "/w").pushBack({ timestamp, quat.w }); auto rpy = Msg::QuaternionToRPY(quat); getSeries(prefix + "/roll").pushBack({ timestamp, rpy.roll }); From 153a9c938ab17e700066297a4a840ffd8e951933 Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Tue, 9 Jan 2024 14:07:52 +0100 Subject: [PATCH 10/10] updated readme --- README.md | 16 +++++++--------- snap_core20/snapcraft.yaml | 3 ++- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ee080a159..61de8b567 100644 --- a/README.md +++ b/README.md @@ -114,22 +114,20 @@ Refer to the instructions in that repository if you want to compile PJ and its R This massive file will install a version of PlotJuggler that can work with both ROS1 and ROS2. -[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/plotjuggler) +![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg) + +To install it in Ubuntu 22.04, with ROS2 support, run: ``` sudo snap install plotjuggler ``` -When launching you have two options available: +If you are still use ROS1 (Ubuntu 20.04), install instead: -- `plotjuggler.ros` to load the ROS1 plugins. -- `plotjuggler.ros2` to load the ROS2 plugins. +``` +sudo snap install plotjuggler-ros +``` -In addition, the command `plotjuggler` is an alias to `plotjuggler.ros`. -If you'd prefer to alias `plotjuggler.ros2` instead, -you can do so with the command `sudo snap set plotjuggler ros-plugin-version=2`. -Revert it simply replacing `2` with `1`. -Note that this also affect the desktop launcher. ## Compile from source diff --git a/snap_core20/snapcraft.yaml b/snap_core20/snapcraft.yaml index ba562d646..974fb9d88 100644 --- a/snap_core20/snapcraft.yaml +++ b/snap_core20/snapcraft.yaml @@ -1,5 +1,5 @@ name: plotjuggler-ros -adopt-info: plotjuggler-ros # parse metadata from the plotjuggler part +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, @@ -57,6 +57,7 @@ parts: - libprotobuf-dev - libzmq5 - libzstd1 + - libpsm-infinipath1 override-pull: | snapcraftctl pull