Giter Club home page Giter Club logo

plotjuggler-mqtt's Introduction

PlotJuggler

windows ubuntu macos ROS1 ROS2 Tweet

Gold Sponsor: Greenzie

PlotJuggler 3.9

PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.

Noteworthy features:

  • Simple Drag & Drop user interface.
  • Load data from file.
  • Connect to live streaming of data.
  • Save the visualization layout and configurations to re-use them later.
  • Fast OpenGL visualization.
  • Can handle thousands of timeseries and millions of data points.
  • Transform your data using a simple editor: derivative, moving average, integral, etc…
  • PlotJuggler can be easily extended using plugins.

PlotJuggler

Data sources (file and streaming)

  • Load CSV files.
  • Load ULog (PX4).
  • Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
  • Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
  • Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
  • Supports the Lab Streaming Layer, that is used by many devices.
  • Easily add your custom data source and/or formats...

Transform and analyze your data

PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.

If you are not familiar with Lua, don't be afraid, you won't need more than 5 minutes to learn it ;)

Tutorials

To learn how to use PlotJuggler, check the tutorials here:

Tutorial 1 Tutorial 2 Tutorial 3

Supported plugins

Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.

Please submit specific issues, Pull Requests and questions on the related Github repository:

If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins

Installation

Snap (recommended in Ubuntu, to ROS users too)

The snap contains a version of PlotJuggler that can work with either ROS1 or ROS2.

Get it from the Snap Store

To install it in Ubuntu 22.04, with ROS2 support, run:

sudo snap install plotjuggler

If you are still using ROS1 (Ubuntu 20.04), install instead:

sudo snap install plotjuggler-ros

Windows Binary installer

This installer does not include ROS plugins.

Windows Installer: PlotJuggler-Windows-3.9.0-installer

Debian packages for ROS User

Install the ROS packages with:

sudo apt install ros-$ROS_DISTRO-plotjuggler-ros

To launch PlotJuggler on ROS, use the command:

rosrun plotjuggler plotjuggler

or, if are using ROS2:

ros2 run plotjuggler plotjuggler

ROS plugins are available in a separate repository: https://github.com/PlotJuggler/plotjuggler-ros-plugins

Please take a look at the instructions in that repository if you want to compile PJ and its ROS plugins from source.

Compile from source

You can find the detailed instructions here: COMPILE.md.

Sponsorship and commercial support

PlotJuggler required a lot of work to develop and maintain; my goal is to build the most intuitive and powerful tool to visualize data and timeseries.

If you find PlotJuggler useful, consider donating PayPal or becoming a Github Sponsor.

If you need to extend any of the functionalities of PlotJuggler to cover a specific need or to parse your custom data formats, you can receive commercial support from the main author, Davide Faconti.

License

PlotJuggler is released under the Mozilla Public License Version 2.0, which allows users to develop closed-source plugins.

Please note that some third-party dependencies (including Qt) use the GNU Lesser General Public License.

Star History

Star History Chart

Contributors

plotjuggler-mqtt's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

plotjuggler-mqtt's Issues

Eclipse Paho MQTT shared-object library not found when launching libDataStreamMQTT

Hi @facontidavide,

Thanks for developing this plugin. Please find below the description for the issue.

Issue Description

OS - Ubuntu 20.04
Compiler - Clang (version 10.0)

When launching plotjuggler (built from source, launched from command-line), libDataStreamMQTT.so is not able to fully load libpaho-mqtt-3c.so.1.

Option 1

libDataStreamMQTT plugin installed in /usr/local/bin via sudo make install route.
Log below shows the output when plotjuggler is launched.

Loading compatible plugins from directory: "/usr/local/bin"
"libDataLoadCSV.so is a DataLoader plugin"
"libDataLoadULog.so is a DataLoader plugin"
"libDataStreamMQTT.so" : "Cannot load library /usr/local/bin/libDataStreamMQTT.so: (libpaho-mqtt3c.so.1: cannot open shared object file: No such file or directory)"
"libDataStreamSample.so is a DataStreamer plugin" ...disabled, unless option -t is used
"libDataStreamUDP.so is a DataStreamer plugin"
"libDataStreamWebSocket.so is a DataStreamer plugin"
"libProtobufParser.so is a MessageParser plugin"
"libPublisherCSV.so is a StatePublisher plugin"
QtAV 1.13.0(Apr 10 2020, 19:10:20)
Multimedia framework base on Qt and FFmpeg.
Distributed under the terms of LGPLv2.1 or later.
Shanghai, China Copyright (C) 2012-2019 Wang Bin (aka. Lucas Wang) [email protected]
Donate: http://qtav.org/donate.html
Source: https://github.com/wang-bin/QtAV
Home page: http://qtav.org
"libPublisherVideoViewer.so is a StatePublisher plugin"
Type conversion already registered from type QString to type QwtText
"libToolboxFFT.so is a MessageParser plugin"
Type conversion already registered from type QString to type QwtText
"libToolboxQuaternion.so is a MessageParser plugin"
Number of plugins loaded: 9

Note: plotjuggler-mqtt was built, with a slight change in its dependency cmake script as mentioned here.

Option 2

build directory of plotjuggler-mqtt containing libDataStreamMQTT.so added to PlotJuggler via App -> Preferences route.
ldd on the shared object shows the correct path to libpaho-mqtt3c.so.1, but a symbol error stops it from being loaded. Relevant log below from running plotjuggler

Loading compatible plugins from directory: "/home/ubuntu/plotjuggler-mqtt/build"
"libDataStreamMQTT.so" : "Cannot load library /home/ubuntu/plotjuggler-mqtt/build/libDataStreamMQTT.so: (/home/ubuntu/plotjuggler-mqtt/build/libDataStreamMQTT.so: undefined symbol: _ZN2PJ12DataStreamer16staticMetaObjectE)"
Number of plugins loaded: 0

Question

I noticed that when using Clang as the CMake C/C++ compiler, the shared object paho-mqtt3c is correctly referenced in CMakeLists and in the library object that is built. Do you have any idea as to why it's not linked, or rather installed together, with libDataStreamMQTT?

Ubuntu20: Could NOT find PlotJuggler (missing: PlotJuggler_LIBRARY)

Tried to compile after installing PlotJugler from source on Ubuntu 20.
When performing cmake .. it always fails with the same error:

"Could NOT find PlotJuggler (missing: PlotJuggler_LIBRARY)"

Also tried installing ros-noetiic-plotjugler-ros but the plugin still can't be built.
Anyone have any advice?

Cannot Build plotjuggler-mqtt

I'm not able to build the packages because of the below error.

[ 79%] Building CXX object paho.mqtt.c/src/CMakeFiles/paho-mqtt3a-static.dir/paho-mqtt3a-static_autogen/mocs_compilation.cpp.o [ 82%] Building C object paho.mqtt.c/src/CMakeFiles/paho-mqtt3a-static.dir/MQTTAsync.c.o [ 84%] Building C object paho.mqtt.c/src/CMakeFiles/paho-mqtt3a-static.dir/MQTTAsyncUtils.c.o [ 87%] Linking CXX static library libpaho-mqtt3a.a [ 87%] Built target paho-mqtt3a-static Scanning dependencies of target DataStreamMQTT_autogen [ 89%] Automatic MOC and UIC for target DataStreamMQTT [ 89%] Built target DataStreamMQTT_autogen [ 92%] Generating ui_datastream_mqtt.h Scanning dependencies of target DataStreamMQTT [ 94%] Building CXX object CMakeFiles/DataStreamMQTT.dir/DataStreamMQTT_autogen/mocs_compilation.cpp.o [ 97%] Building CXX object CMakeFiles/DataStreamMQTT.dir/DataStreamMQTT/datastream_mqtt.cpp.o /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp: In function ‘int MessageArrived(void*, char*, int, MQTTAsync_message*)’: /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:88:26: error: ‘class DataStreamMQTT’ has no member named ‘availableParsers’ 88 | auto parser = _this->availableParsers()->at( _this->_protocol )->createInstance({}, _this->dataMap()); | ^~~~~~~~~~~~~~~~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:89:54: error: no matching function for call to ‘std::unordered_map<std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >::insert(<brace-enclosed initializer list>)’ 89 | it = _this->_parsers.insert( {topicName, parser} ).first; | ^ In file included from /usr/include/c++/9/unordered_map:47, from /usr/include/c++/9/functional:61, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:142, from /usr/include/x86_64-linux-gnu/qt5/QtGui/qtguiglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qtwidgetsglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qdialog.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QDialog:1, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.h:4, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:1: /usr/include/c++/9/bits/unordered_map.h:438:7: note: candidate: ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert_return_type std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::node_type&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert_return_type = std::_Node_insert_return<std::__detail::_Node_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>, std::_Node_handle<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, std::allocator<std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, true> > > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::node_type = std::_Node_handle<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, std::allocator<std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, true> > >]’ 438 | insert(node_type&& __nh) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:438:26: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::unordered_map<std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >::node_type&&’ {aka ‘std::_Node_handle<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, std::allocator<std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, true> > >&&’} 438 | insert(node_type&& __nh) | ~~~~~~~~~~~~^~~~ /usr/include/c++/9/bits/unordered_map.h:443:7: note: candidate: ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator, std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::node_type&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator = std::__detail::_Node_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator = std::__detail::_Node_const_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::node_type = std::_Node_handle<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, std::allocator<std::__detail::_Hash_node<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, true> > >]’ 443 | insert(const_iterator, node_type&& __nh) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:443:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/9/bits/unordered_map.h:580:7: note: candidate: ‘std::pair<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::iterator, bool> std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(const value_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::iterator = std::__detail::_Node_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >]’ 580 | insert(const value_type& __x) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:580:32: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘const value_type&’ {aka ‘const std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >&’} 580 | insert(const value_type& __x) | ~~~~~~~~~~~~~~~~~~^~~ /usr/include/c++/9/bits/unordered_map.h:586:7: note: candidate: ‘std::pair<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::iterator, bool> std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::value_type&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::iterator = std::__detail::_Node_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >]’ 586 | insert(value_type&& __x) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:586:27: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::unordered_map<std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >::value_type&&’ {aka ‘std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >&&’} 586 | insert(value_type&& __x) | ~~~~~~~~~~~~~^~~ /usr/include/c++/9/bits/unordered_map.h:592:2: note: candidate: ‘template<class _Pair> std::__enable_if_t<std::is_constructible<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::value_type, _Pair&&>::value, std::pair<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::iterator, bool> > std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_Pair&&) [with _Pair = _Pair; _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >]’ 592 | insert(_Pair&& __x) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:592:2: note: template argument deduction/substitution failed: /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:89:54: note: couldn’t deduce template parameter ‘_Pair’ 89 | it = _this->_parsers.insert( {topicName, parser} ).first; | ^ In file included from /usr/include/c++/9/unordered_map:47, from /usr/include/c++/9/functional:61, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:142, from /usr/include/x86_64-linux-gnu/qt5/QtGui/qtguiglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qtwidgetsglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qdialog.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QDialog:1, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.h:4, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:1: /usr/include/c++/9/bits/unordered_map.h:619:7: note: candidate: ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator, const value_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator = std::__detail::_Node_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator = std::__detail::_Node_const_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >]’ 619 | insert(const_iterator __hint, const value_type& __x) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:619:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/9/bits/unordered_map.h:625:7: note: candidate: ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator, std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::value_type&&) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator = std::__detail::_Node_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator = std::__detail::_Node_const_iterator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >, false, true>; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::value_type = std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >]’ 625 | insert(const_iterator __hint, value_type&& __x) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:625:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/9/bits/unordered_map.h:630:2: note: candidate: ‘template<class _Pair> std::__enable_if_t<std::is_constructible<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::value_type, _Pair&&>::value, typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::iterator> std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator, _Pair&&) [with _Pair = _Pair; _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >]’ 630 | insert(const_iterator __hint, _Pair&& __x) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:630:2: note: template argument deduction/substitution failed: /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:89:54: note: candidate expects 2 arguments, 1 provided 89 | it = _this->_parsers.insert( {topicName, parser} ).first; | ^ In file included from /usr/include/c++/9/unordered_map:47, from /usr/include/c++/9/functional:61, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:142, from /usr/include/x86_64-linux-gnu/qt5/QtGui/qtguiglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qtwidgetsglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qdialog.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QDialog:1, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.h:4, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:1: /usr/include/c++/9/bits/unordered_map.h:645:2: note: candidate: ‘template<class _InputIterator> void std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >]’ 645 | insert(_InputIterator __first, _InputIterator __last) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:645:2: note: template argument deduction/substitution failed: /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:89:54: note: candidate expects 2 arguments, 1 provided 89 | it = _this->_parsers.insert( {topicName, parser} ).first; | ^ In file included from /usr/include/c++/9/unordered_map:47, from /usr/include/c++/9/functional:61, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:142, from /usr/include/x86_64-linux-gnu/qt5/QtGui/qtguiglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qtwidgetsglobal.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qdialog.h:43, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QDialog:1, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.h:4, from /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:1: /usr/include/c++/9/bits/unordered_map.h:656:7: note: candidate: ‘void std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(std::initializer_list<typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::value_type>) [with _Key = std::__cxx11::basic_string<char>; _Tp = std::shared_ptr<PJ::MessageParser>; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >; typename std::_Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, std::__detail::_Select1st, _Pred, _Hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<std::__not_<std::__and_<std::__is_fast_hash<_Hash>, std::__is_nothrow_invocable<const _Hash&, const _Key&> > >::value, false, true> >::value_type = std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> >]’ 656 | insert(initializer_list<value_type> __l) | ^~~~~~ /usr/include/c++/9/bits/unordered_map.h:656:43: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::initializer_list<std::pair<const std::__cxx11::basic_string<char>, std::shared_ptr<PJ::MessageParser> > >’ 656 | insert(initializer_list<value_type> __l) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp: In member function ‘virtual bool DataStreamMQTT::start(QStringList*)’: /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:204:8: error: ‘availableParsers’ was not declared in this scope 204 | if( !availableParsers() ) | ^~~~~~~~~~~~~~~~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:213:25: error: ‘availableParsers’ was not declared in this scope 213 | for( const auto& it: *availableParsers()) | ^~~~~~~~~~~~~~~~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:224:19: error: ‘MessageParserCreator’ was not declared in this scope 224 | std::shared_ptr<MessageParserCreator> parser_creator; | ^~~~~~~~~~~~~~~~~~~~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:224:39: error: template argument 1 is invalid 224 | std::shared_ptr<MessageParserCreator> parser_creator; | ^ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp: In lambda function: /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:230:45: error: base operand of ‘->’ is not a pointer 230 | QWidget* prev_widget = parser_creator->optionsWidget(); | ^~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:234:22: error: ‘availableParsers’ was not declared in this scope 234 | parser_creator = availableParsers()->at( protocol ); | ^~~~~~~~~~~~~~~~ /home/void/Downloads/software/plotjuggler-mqtt/DataStreamMQTT/datastream_mqtt.cpp:236:36: error: base operand of ‘->’ is not a pointer 236 | if(auto widget = parser_creator->optionsWidget() ){ | ^~ make[2]: *** [CMakeFiles/DataStreamMQTT.dir/build.make:80: CMakeFiles/DataStreamMQTT.dir/DataStreamMQTT/datastream_mqtt.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:127: CMakeFiles/DataStreamMQTT.dir/all] Error 2 make: *** [Makefile:152: all] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.