GithubHelp home page GithubHelp logo

anybotics / rqt_multiplot_plugin Goto Github PK

View Code? Open in Web Editor NEW
124.0 38.0 44.0 450 KB

An rqt plugin for visualizing numeric values in multiple 2D plots.

License: GNU Lesser General Public License v3.0

CMake 1.55% C++ 98.30% Python 0.15%

rqt_multiplot_plugin's Introduction

Rqt Multiplot Plugin

Overview

Author(s): Ralf Kaestner

Maintainer: Ralf Kaestner [email protected]

License: GNU Lesser General Public License (LGPL)

Operating system(s): Debian-based Linux, Mac OS X

Package PPA: ppa:anybotics/ros

Content

This project provides a GUI plugin for visualizing numeric values in multiple 2D plots using the Qwt plotting backend.

Installation

Dependencies

ROS Distribution

The package is in the ROS (melodic, noetic) distribution.

sudo apt-get update
sudo apt-get install ros-melodic-rqt-multiplot
sudo apt-get install ros-noetic-rqt-multiplot

Building from Source

Create a symlink in your catkin source folder, e.g.:

ln -s ~/git/rqt_multiplot_plugin ~/catkin_ws/src
cd ~/catkin_ws
catkin build rqt_multiplot

Debian Package

sudo add-apt-repository ppa:anybotics/ros
sudo apt-get update
sudo apt-get install ros-indigo-rqt-multiplot

Usage

To launch the standalone rqt plugin, run

rosrun rqt_multiplot rqt_multiplot

To launch the rqt GUI without a perspective, run

rqt --force-discover

This will discover all plugins, which can then be loaded manually.

To delete the default configuration files (in case of problems):

rqt --clear-config

Import ROS Bag

To plot an imported ROS bag, the desired curves have to be configured before importing the bag.

Example Views

enter image description here

Configure Plot

enter image description here

Edit Curve

enter image description here

Bugs & Feature Requests

Please report bugs and feature requests on the Issue Tracker.

Build Status

Devel Job Status

Melodic Noetic
rqt_multiplot_plugin Build Status Build Status

Release Job Status

Melodic Noetic
rqt_multiplot Build Status Build Status

rqt_multiplot_plugin's People

Contributors

anybotics-sync-runner avatar aravindev avatar domingoesteban avatar fgiraldez avatar hogabrie avatar hwyss-anybotics avatar kralf avatar pfankhauser avatar pleemann avatar prajishkumar avatar remod avatar samuelba avatar stonier avatar tkazik avatar yoshuanava avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rqt_multiplot_plugin's Issues

Crash with Kinetic

Hi,

I've followed the instruction to build from source to try to use multiplot on Ubuntu 16.04 with Ros kinetic.
The cakin_make process was successful but unfortunately the plugin encounter a issue at launch.

If launch through rqt, rqt crash without warning.
If launch with rosrun rqt_multiplot rqt_multiplot, the following error is observed: Segmentation fault (core dumped)

Is their specific step/workaround to use this tool with Kinetic?

Thanks

Support for more export formats

Hi,
I am using rqt_multiplot to obtain some results for research and the file formats that can be exported are unfortunately quite limited. Support for the EPS file format would be ideal.

Kind Regards,
Sharif

Moving time and value scales at plot level from curves

I'm not sure what's the use case for that,
but I found strange that time frame and scale are defined at curve level rather than plot level.

Most of the times you want to set a time window of, say, 10 seconds for all the curves in a plot, because I can't really think of different time or value scales for individual curves in the same plot, which one would then be applied to the plot?

So I would suggest to move the scale and time sections up to the plot level, because I think it would make more sense, what do you think?

Chrash if plotting simulation duration vs. covariance value

Hi,
I'm having issues with rqt_multiplot when plotting a value of an element of a covariance matrix from a nav_msgs/Odometry message on the y-axis and the simulation duration from a std_msgs/Duration message on the x-axis. I also plot linear velocity values from the same nav_msgs/Odometry message vs. the same duration values from the same std_msgs/Duration message and it works. I'm confused about this error as linear velocities and covariance matrix values have the same type, namely float64.

Is there a bug or did I miss something?

Unable to install multiplot in ROS Kinetic

While executing the following command in the terminal - sudo apt-get install ros-kinetic-rqt-multiplot I get the following error:

`Err:1 http://packages.ros.org/ros/ubuntu xenial/main amd64 ros-kinetic-variant-msgs amd64 0.1.5-0xenial-20181128-003748-0800
404 Not Found [IP: 64.50.236.52 80]
Err:2 http://packages.ros.org/ros/ubuntu xenial/main amd64 ros-kinetic-variant-topic-tools amd64 0.1.5-0xenial-20190320-124933-0800
404 Not Found [IP: 64.50.236.52 80]
Err:3 http://packages.ros.org/ros/ubuntu xenial/main amd64 ros-kinetic-rqt-multiplot amd64 0.0.10-0xenial-20190320-141655-0800
404 Not Found [IP: 64.50.236.52 80]
E: Failed to fetch http://packages.ros.org/ros/ubuntu/pool/main/r/ros-kinetic-variant-msgs/ros-kinetic-variant-msgs_0.1.5-0xenial-20181128-003748-0800_amd64.deb 404 Not Found [IP: 64.50.236.52 80]

E: Failed to fetch http://packages.ros.org/ros/ubuntu/pool/main/r/ros-kinetic-variant-topic-tools/ros-kinetic-variant-topic-tools_0.1.5-0xenial-20190320-124933-0800_amd64.deb 404 Not Found [IP: 64.50.236.52 80]

E: Failed to fetch http://packages.ros.org/ros/ubuntu/pool/main/r/ros-kinetic-rqt-multiplot/ros-kinetic-rqt-multiplot_0.0.10-0xenial-20190320-141655-0800_amd64.deb 404 Not Found [IP: 64.50.236.52 80]

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?`

How do I solve this?

rqt_multiplot_plugin catkin build error

hi. I followed all the instruction and installed the dependencies. still I get build error while running catkin build

Errors     << rqt_multiplot:make /home/mobiiin/catkin_ws/logs/rqt_multiplot/build.make.014.log
/usr/bin/ld: cannot find -lQWT_LIBRARIES-NOTFOUND
collect2: error: ld returned 1 exit status
make[2]: *** [/home/mobiiin/catkin_ws/devel/.private/rqt_multiplot/lib/librqt_multiplot.so] Error 1
make[1]: *** [CMakeFiles/rqt_multiplot.dir/all] Error 2
make: *** [all] Error 2

I also have all the libqwt.so* files in /usr/lib/

rqt_multiplot crashes when loading from bag file

Multiplot crashes immediately with a segfault if I try to load data from a bagfile. Works fine if the bagfile is being played back with rosbag play. Seemed to work fine on Kinetic, but doesn't seem to be working with Melodic.

[ INFO] [1555335543.646435217]: Loaded configuration from [file:///home/jburklund/bagfiles/2019-04-05-Wyss-ICP/mapping_localization_time.xml]
Gtk-Message: 15:39:06.650: GtkDialog mapped without a transient parent. This is discouraged.
terminate called after throwing an instance of 'pluginlib::CreateClassException'
  what():  MultiLibraryClassLoader: Could not create object of class type rosbag::NoEncryptor as no factory exists for it. Make sure that the library exists and was explicitly loaded through MultiLibraryClassLoader::loadLibrary()                                                                                                                                     
Aborted (core dumped)

Automatic conversion of quaternions to angles?

A use case that pops up quite frequently is visualization of orientation data. Given that the standard representation are quaternions, the orientation they represent cannot be visualized easily by plotting (not counting the few % of people who can "see" quaternion orientations here). It would thus be very nice to optionally generate a rpy angle representation and plot that for quaternion data. Thoughts if this could be implemented somehow (i.e. perhaps via plugins for certain types or so)?

Window resizing

Hi,

I've been having this issue when trying plot multiple rows (more then 2 rows on 1920X1080) when the plot window resize and the lower plots are out of bound. Up to now I've always cycled the "toggle floating" feature to fix it but it's only momentary. Do you know any method to fix it?

Thanks

Alexandre

Make a plot only with recent data

Hi,
I am trying to use multiplot to plot odom x vs odom y (which I have converted from lat/long to UTM). In the plot I want to be able to see the most recent point (or points). I tried to accomplish this by adding 2 curves, one with the data being a vector and a 2nd curve for the recent points. For the 2nd curve I have tried using circular buffer with low capacities and time frames of 1-5 secs. In the plot I can get the desired behavior for a few secs after which the 2nd plot keeps the full track. If I clear the plots I can get the behavior for a few secs again.
Is this the correct way of achieving the desired behavior or is there a better way?

Meaningful x-axis times

rqt_plot has a nice feature where the x-axis is the difference between message timestamp and program start time, so the x-axis timestamp display is in the order of hundreds or thousands, not on the scale of 1.5e+09 seconds.

Am I missing some configuration setting to allow this in rqt_multiplot, as in the README? Or would that require diving into the code and submitting a PR to allow an option for this when using Message Receipt Time?

License in package.xml

Can you please include the license version in package.xml?

Currently
https://github.com/ANYbotics/rqt_multiplot_plugin/blob/master/rqt_multiplot/package.xml#L12
says only LGPL, while:
https://github.com/ANYbotics/rqt_multiplot_plugin/blob/master/LICENSE
says LGPL-3.0

superflore maps this to LGPL-2 in:
https://github.com/ros-infrastructure/superflore/blob/master/superflore/utils.py#L179
and LGPL-2 isn't valid SPDX Identifier in:
https://spdx.org/licenses/
and doesn't really match your license, so it would be better to declare the license correctly at the source - in package.xml.

found no plugin matching "MultiplotPlugin"

I have successfully installed rat_multiplot via sudo apt-get install ros-kinetic-rqt-multiplot and got the error below while running via rqt_multiplot or rosrun rqt_multiplot rqt_multiplot

qt_gui_main() found no plugin matching "MultiplotPlugin"

Anyone know how to fix this kind of issue please help me out.

this is a part result from ls /opt/ros/kinetic/lib

...
rqt_bag
rqt_console
rqt_dep
rqt_graph
rqt_gui
rqt_image_view
rqt_launch
rqt_logger_level
rqt_moveit
rqt_msg
rqt_multiplot
rqt_nav_view
rqt_plot
rqt_pose_view
rqt_publisher
rqt_py_console
rqt_reconfigure
rqt_robot_monitor
rqt_robot_steering
rqt_runtime_monitor
rqt_rviz
rqt_service_caller
rqt_shell
rqt_srv
rqt_tf_tree
rqt_top
rqt_topic
rqt_web
...

Issues on Mac OS

First off, this is awesome— thanks for sharing!

When I try to build from source on Yosemite, I get the following:

Errors     << rqt_multiplot:cmake /Users/mikepurvis/multiplot_ws/logs/rqt_multiplot/build.cmake.000.log                                               
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
QWT_INCLUDE_DIRS
   used as include directory in directory /Users/mikepurvis/multiplot_ws/src/rqt_multiplot_plugin/rqt_multiplot
   used as include directory in directory /Users/mikepurvis/multiplot_ws/src/rqt_multiplot_plugin/rqt_multiplot
   used as include directory in directory /Users/mikepurvis/multiplot_ws/src/rqt_multiplot_plugin/rqt_multiplot

This seems to be because qwt is in an OSX "framework", so its headers can't be found given the current find_path hints:

$ brew list qwt
/usr/local/Cellar/qwt/6.1.3/doc/html/ (1416 files)
/usr/local/Cellar/qwt/6.1.3/doc/man/ (144 files)
/usr/local/Cellar/qwt/6.1.3/features/ (3 files)
/usr/local/Cellar/qwt/6.1.3/lib/qt4/plugins/designer/libqwt_designer_plugin.dylib
/usr/local/Cellar/qwt/6.1.3/lib/qwt.framework/ (101 files)

I hacked around this to get a build:

@@ -28,6 +28,7 @@ find_path(
     /usr/include/qwt-qt4
     /usr/include/qwt
     /usr/local/include/qwt
+    /usr/local/Cellar/qwt/6.1.3/lib/qwt.framework/Headers
 )

But now I get a runtime issue on startup:

$ rosrun rqt_multiplot rqt_multiplot 
Could not import "pyqt" bindings of qt_gui_cpp library - so C++ plugins will not be available:
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/python2.7/site-packages/qt_gui_cpp/cpp_binding_helper.py", line 43, in <module>
    import libqt_gui_cpp_sip
ImportError: dlopen(/opt/ros/indigo/lib/python2.7/site-packages/qt_gui_cpp/libqt_gui_cpp_sip.so, 2): Library not loaded: @rpath/libclass_loader.dylib
  Referenced from: /opt/ros/indigo/lib/python2.7/site-packages/qt_gui_cpp/libqt_gui_cpp_sip.so
  Reason: image not found

But the missing library is definitely present:

$ ls -la /opt/ros/indigo/lib/libclass_loader.dylib 
-rwxr-xr-x  1 mikepurvis  wheel  138276  3 Aug 23:37 /opt/ros/indigo/lib/libclass_loader.dylib

Anyhow, I'm enjoying this on my Ubuntu VM; would love to get it working natively on OS X. Thanks again for the package and any suggestions!

Is it possible to save pictures and text files automatically (from a command line)?

Hello there,
thank you very much for rqt-multiplot! It is a really nice tool!

Is it possible to trigger to save pictures and text files automatically? for example using a console command.

I can find the function to save images and text files from void PlotWidget::saveToImageFile(const QString& fileName) and void PlotWidget::saveToTextFile(const QString& fileName) . Can I create another function which will wait for trigger signal and save images and files automaticlly?

Any help is appreciated!

Subcategories of "Field" and Time frame length settings do not persist in saved configurations

With multiple plots (joint positions on a robot arm against clock - so numbered subcategories of the "position" field) and a custom time frame of 0.5s, when saving these settings and then re-opening the configuration file these settings do not persist, and must then be individually re-set for each plot.

Not sure if a bug, or an enhancement feature for the future - just have to work around it at the moment by inputting the settings on each use

Images in README are dead links

I would love to see what this library is doing, unfortunately the text explanation is sparse and the images would be precious but they are missing.

Extend rqt-multiplot with tabs

Hello,
thank you very much for rqt-multiplot!
I was wondering if you plan to extend rqt-multiplot with tabs in the near future. Thank you.

How to plot from bag?

My plots are working great live, but I can't seem to plot from a bag.

There's some code here that looks like it accepts a multiplot-bag argument, but it's not clear how that argument is supplied. Looks like #10 addresses breaking it out to the Python wrapper, and in the meantime it seems something like this should work, but it's not doing right thing for me:

rqt --standalone rqt_multiplot --args --multiplot-bag path/to/my.bag

The only other place readBag is called looks like it's from a UI interaction, but there is commented out as well: https://github.com/ethz-asl/rqt_multiplot_plugin/blob/85f86a083eb47d5d8baefba168290b09fff333cf/rqt_multiplot/src/rqt_multiplot/MultiplotWidget.cpp#L109-L111

Is there something silly I'm missing here?

Release to ROS Noetic

Hi, are there currently any plans or timeline to release this plugin for ROS Noetic?

Support Array Plots

Thanks for the great plugin, it makes my everyday ROS life much easier :)

However, I'm often faced with plotting arrays as such, not over time, and there is no single plotter out there capable of this. So this might be a nice feature to add here.

I'd fancy a plotter, that can handle array types, e.g. float32[] data-fields. The x-axis would be the index of the element, y-axis the value of the element. The whole plot would refresh with every new message.

Additionally nice to have:

  • keep a history of past plots and fade them over time
  • support arrays of custom data types by selecting the element to be plotted
    • e.g. think an array of PoseWithCovariance[] pose_list
    • then the user could select pose.pose.position.x
  • support multiple data-series per plot
    • by selecting multiple elements
  • custom x-axis
    • in the pose example, plot e.g. pose.pose.position.y over pose.pose.position.x for each pose in the array

Plotting non-float values

Plotting booleans and/or uint8 does not seem to work:

rostopic pub /bla std_msgs/UInt8 -r 10 -- 2
rqt_multiplot # plot /bla/receipt_time vs /bla/data

More verbose output when failing to plot with a given config

I made multiple configs for plotting and mainly want to use those with the "Import from bag file" functionality. This works well most of the time, but sometimes it just doesn't work and "nothing happens". The same happens to a lesser extend when playing back bag files. Some plotting configs work, some do not and it is completely unclear what the reasons could be. The existing verbose output option does not provide any useful information.

I'm currently using rqt_multiplot cloned from source (master) in my indigo setup.

Here is an example bag file.

If I clear my config, then select argo_tracker_joint_trajectory_controller_state.xml and import the bag file I get a plot and the following on the terminal:

[ INFO] [1484693965.379257674, 1484649926.288922911]: Loaded configuration from [file:///home/kohlbrecher/argo2/src/hector_rqt_multiplot_config/config/argo_tracker_joint_trajectory_controller_state.xml]
[ INFO] [1484693976.333224726, 1484649926.288922911]: Read bag from [file:///media/kohlbrecher/data/argo_log/driving_test_paul/2017-01-17-23-48-52.bag]

If I clear my config, then select pdout.xml and import the bag file I get no plot and the following on the terminal:

[ INFO] [1484693997.489607086, 1484649926.288922911]: Loaded configuration from [file:///home/kohlbrecher/argo2/src/hector_rqt_multiplot_config/config/pdout.xml]
[ INFO] [1484694009.362378172, 1484649926.288922911]: Read bag from [file:///media/kohlbrecher/data/argo_log/driving_test_paul/2017-01-17-23-48-52.bag]

Any hints and improvements indicating to the user what is going wrong are appreciated :)

Loading/importing multiple (consecutive) bag files

Bag data recorded over a longer period of time tends to get unwieldy, for this reason we split it up into 1GB chunks. Existing tools like rqt_bag and rosbag support this well and one can load multiple bags for instance by providing *.bag as an argument. The same capability would be very useful for rqt_multiplot (both via command line and/or via selecting multiple files for import).

Issues with custom topic message

Hi,

I've run-in a other problem. When I'm trying to plot a custom message, it seems that it not plotting the right component.

For a exemple if my message had X, Y, Z component and I tried to plot all of then, it would plot Y, X, X or something like that.

Thanks

define as a nodelet

To see the rate of the message correctly, the rqt_multiplot node should be in the same nodelet manager or has NoTcpDelay, therefore it is useful to define whole node as a nodelet, which nodelet manager name could be set!

Unusable X-Axis Times

When using header/stamps or message receipt times for displaying data, the x-axis becomes impossible to parse in a meaningful way. Times are represented in unix-time that is to say on the order of 1,500,000,000 seconds and display as 1.52824e+09. So it's really unintuitive to know how long a particular sequence is, let alone any given tick mark.

Ideally I'd to

  1. Change the x-axis to "shift" the times to staring at 0 (time offset),
  2. have a sub-scale (like rqt_plot does), or
  3. display the times differently (1.52824e+0910:32:06 PM)

Am I missing something? I fiddled with all the settings I could find.

Thank you.

Bar graph emulation

I need to plot array data and to overcome lacking of such functions I did:

  • created curve for each array index as vertical sticks with 50 pen size
  • have message with consecutive indexes (e.g from 0 to 15, array of 16 elements) which are constant over time
  • each curve uses constant index as it's X value

It looks something like this:

| |
| | |
| | | | |


BUT, each time new data come it plots in the same coordinate (since X is fixed for each curve) without clearing previous value (even if I have circular buffer with size of 1). So if I have 50 value it will stay 50 (even if actual data is 10) until bigger value appear. In this case it will become bigger and going back to 50 won't decrease bar size.

Can I somehow clean plot each time new data received?

Load perspective file from network drive

For our project we use rqt_multiplot on multiple machines connected to the same robot.
It would be great if we could load perspective files from a network drive so all developers have access to the same perspectives instead of everyone having local copies.

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.