Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plotting tool #66

Closed
17 tasks
chapulina opened this issue May 28, 2020 · 1 comment · Fixed by #69
Closed
17 tasks

Plotting tool #66

chapulina opened this issue May 28, 2020 · 1 comment · Fixed by #69
Assignees
Labels
close the gap Features from Gazebo-classic 🔮 dome Ignition Dome enhancement New feature or request

Comments

@chapulina
Copy link
Contributor

chapulina commented May 28, 2020

Gazebo-classic has a featureful plotting tool so users can visualize various types of data coming from simulation.

We initially ported that tool to Ignition back in ign-gui0, when we were still using QWidgets. Since we moved to QML, we need a new plotting tool using QML's QtCharts.

User stories

Here are some user stories ordered from the most important to the least important. The users are defined as follows:

  • ign-gui user: someone running an application built on top of Ignition GUI which they didn’t necessarily write themselves
  • ign-gazebo user: someone running a simulation which they didn’t necessarily write themselves. All ign-gazebo users are ign-gui users.
  • ign-gui developer: someone writing new ign-gui plugins
  • ign-gazebo developer: someone writing new ign-gazebo plugins. Some ign-gazebo developers are also ign-gui developers (if they write ign-gazebo GUI plugins).

Some stories:

  1. As an ign-gazebo user, I want to plot the X position of my robot over sim time
  2. As an ign-gazebo user, I want to plot the acceleration data of my robot's IMU
  3. As an ign-gazebo user, I want to plot the angular velocities of all my robot’s wheels on the same plot
    1. I want to add new variables to an existing plot
    2. I want to remove variables from an existing plot
  4. As an ign-gazebo user, I want to different plots side-by-side
  5. As an ign-gazebo user, I want to be able to zoom into a plot
  6. As an ign-gui developer, I want to plot the value of an Ignition Transport topic over time
  7. As an ign-gazebo user, I want to plot the value of a built-in component over time
  8. As an ign-gazebo developer, I want to plot the value of a custom component over time
  9. As an ign-gui user, I want to hover over a plot and see the exact value at that point
  10. As an ign-gui user, I want to clear the current values in a plot
  11. As an ign-gui user, I want to export a plot as a CSV file to process it with a different application
  12. As an ign-gui user, I want to export a plot as a SVG file to display it on a presentation

Features

Based on the user stories above, here's a list of features to be implemented:

Ignition GUI

These features should be implemented on Ignition GUI, so they can be used by users that are not using Ignition Gazebo.

  • Plot messages and fields from ign-transport topics
    • User stories: 2, 6
  • List all topics and their “plottable” fields Transport Topics Plugin #69
    • User stories: 3
  • Add new variables to a plot, choosing from list
    • User stories: 3
  • Remove variables from a plot
    • User stories: 3
  • Multiple plot plugins can be instantiated at the same time
    • User stories: 4
  • Zoom
    • User stories: 5
  • Hover line and value
    • User stories: 9
  • Clear plot
    • User stories: 10
  • Export to CSV
    • User stories: 11
  • Export to SVG
    • User stories: 12

Ignition Gazebo

Additional features that are only needed in Ignition Gazebo.

Keeping track of them here just to have it all in one place.

  • List all components and their “plottable” fields (leverage Component Inspector)
    • User stories: 1, 3, 7, 8
  • Plot ign-gazebo components
    • User stories: 1, 3, 7, 8

Implementation

@AmrElsersy has started implementation at https://github.com/AmrElsersy/Ignition-plotting. That will be refactored and moved to ign-gazebo / ign-gui.

The current plan is to split the implementation into a few parts:

  • Ignition GUI
      • PlottingInterface: A QML component that displays plots and provides an API to be updated.
        • It's installed with ign-gui and is not a plugin by itself, similar to IgnSpinBox, but including some C++ logic.
        • Most features should be here, like all the interactions (zoom, hover...), exporting to CSV, etc.
        • This is currently PlottingInterface on @claireyywang 's branch.
      • TopicPlotting: An ign-gui plugin which plots ign-transport topics.
        • It uses PlottingInterface
        • It accepts topics being dropped from TransportTopics.
        • It's a regular ign-gui plugin.
        • This is currently TopicPlotting on @claireyywang 's branch.
  • Ignition Gazebo
      • PlottingTool: An ign-gui plugin which plots ign-gazebo components.
        • It uses PlottingInterface
        • It accepts components being dropped from ComponentInspector.
        • It's an ign-gazebo GUI plugin (has access to components).
        • This is currently PlottingTool on @claireyywang 's branch.
@chapulina chapulina added enhancement New feature or request 🔮 dome Ignition Dome labels May 28, 2020
@AmrElsersy
Copy link
Contributor

Happy to work on that issue :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
close the gap Features from Gazebo-classic 🔮 dome Ignition Dome enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants