{
    "docs": [
        {
            "location": "/index.html", 
            "text": "Welcome to Plotjuggler\n\n\nPlotJuggler is an application to plot logged data, in particular timeseries.\n\n\nThe design focus on simplicty of use rather than completeness. It you want to\nsubmit a issue report or a suggestion, don't hesitate to visit the \n\nofficial webpage\n.\n\n\n\n\nArchitecture\n\n\nThe functionalities of the application can be extended using \nplugins\n. \nThere are three types of plugins:\n\n\n\n\nDataLoaders\n: they are used to load static data from log files.\n\n\nDataStreamers\n: used to load and plot data that is continously streamed to the user.\n\n\nStatePublishers\n: provide a way to publish data that was previously loaded.\n\n\n\n\nNote\n: \nROS\n funtionalities are implemented exclusively \nthrough plugins. The core of PlotJuggler does not (and will not) depend on ROS.", 
            "title": "Introduction"
        }, 
        {
            "location": "/index.html#welcome-to-plotjuggler", 
            "text": "PlotJuggler is an application to plot logged data, in particular timeseries.  The design focus on simplicty of use rather than completeness. It you want to\nsubmit a issue report or a suggestion, don't hesitate to visit the  official webpage .", 
            "title": "Welcome to Plotjuggler"
        }, 
        {
            "location": "/index.html#architecture", 
            "text": "The functionalities of the application can be extended using  plugins . \nThere are three types of plugins:   DataLoaders : they are used to load static data from log files.  DataStreamers : used to load and plot data that is continously streamed to the user.  StatePublishers : provide a way to publish data that was previously loaded.   Note :  ROS  funtionalities are implemented exclusively \nthrough plugins. The core of PlotJuggler does not (and will not) depend on ROS.", 
            "title": "Architecture"
        }, 
        {
            "location": "/visualization_howto/index.html", 
            "text": "Main concepts\n\n\nFurther we will use the following terms to describe some items and concepts of \nPlotJuggler.\n\n\nThe application consists in 1 or more \nWindows\n.\n\n\nThese is a single \nMainWindow\n and 0 or more \nSubWindows\n.\n\n\nA window can have 1 or more \nTabs.\n\n\nA tab can have 1 or more \nPlotWidgets\n. These widgets are arranged in \na table of N\n=1 columns and M\n=1 rows. \n\n\nA plot can have 0 or more \nCurves.\n Each curve corresponds to a single \nTimeserie\n.\n\n\nThe \nMainWindow\n has a searchable \nList of Timeseries\n on its left side.\n\n\n\n\nAdd one or multiple timeseries to a PlotWidget\n\n\nTo display a curve inside a PlotWidget, simply select the timeserie using the \nLeft Mouse\n button\n then drag-and-drop it inside the plotting area.\n\n\nYou can select multiple curves pressing \nCTRL\n or \nSHIFT\n. \n\n\n\n\nCreate multiple Plots\n\n\nUse the \nAdd Column\n and \nAdd Row\n buttons to create a table of PlotWidgets. \nYou can also add multiple Tabs and additional Windows.\n\n\n\n\nDisplay a XY curve\n\n\nEven if PlotJuggler focuses mainly on timeseries, it is possible to mix two timeseries\nthat share the same time axis.\nA classical example is the XY position of a robot.\n\n\nTo activate this mode, drag and drop the curve that shall be used as X axis using the\n\nRIGHT MOUSE\n button instead of the LEFT one.\n\n\n\n\nUndo / Redo\n\n\nMost of the time \nCTRL + Z\n does just what you expect it to do: to revert the last action.\nThis includes adding a plot, deleting it, add a row/column to the Tab, etc.\nPress  \nCTRL + SHIFT + Z\n to redo the action.\n\n\nSwap Plots\n\n\nDrag and Drop an entire plot into another one to swap them. \nCTRL + Right Mouse\n. \n\n\n\n\nZoom area\n\n\nZoom Into a user defined rectangle pressing the \nLeft Mouse\n button on the plot area.\n\n\n\n\nZoom In/Out\n\n\nZoom In and Out using the \nMiddle Wheel\n of the Mouse. Alternatively, you can use the buttons\n\nPlus(+)\n and \nMinus(-)\n.\n\n\n\n\nPan\n\n\nPanning is activated keeping pressed \nCTRL + Left Mouse\n.", 
            "title": "Basics: how to visualize your data"
        }, 
        {
            "location": "/visualization_howto/index.html#main-concepts", 
            "text": "Further we will use the following terms to describe some items and concepts of \nPlotJuggler.  The application consists in 1 or more  Windows .  These is a single  MainWindow  and 0 or more  SubWindows .  A window can have 1 or more  Tabs.  A tab can have 1 or more  PlotWidgets . These widgets are arranged in \na table of N =1 columns and M =1 rows.   A plot can have 0 or more  Curves.  Each curve corresponds to a single  Timeserie .  The  MainWindow  has a searchable  List of Timeseries  on its left side.", 
            "title": "Main concepts"
        }, 
        {
            "location": "/visualization_howto/index.html#add-one-or-multiple-timeseries-to-a-plotwidget", 
            "text": "To display a curve inside a PlotWidget, simply select the timeserie using the  Left Mouse  button\n then drag-and-drop it inside the plotting area.  You can select multiple curves pressing  CTRL  or  SHIFT .", 
            "title": "Add one or multiple timeseries to a PlotWidget"
        }, 
        {
            "location": "/visualization_howto/index.html#create-multiple-plots", 
            "text": "Use the  Add Column  and  Add Row  buttons to create a table of PlotWidgets. \nYou can also add multiple Tabs and additional Windows.", 
            "title": "Create multiple Plots"
        }, 
        {
            "location": "/visualization_howto/index.html#display-a-xy-curve", 
            "text": "Even if PlotJuggler focuses mainly on timeseries, it is possible to mix two timeseries\nthat share the same time axis.\nA classical example is the XY position of a robot.  To activate this mode, drag and drop the curve that shall be used as X axis using the RIGHT MOUSE  button instead of the LEFT one.", 
            "title": "Display a XY curve"
        }, 
        {
            "location": "/visualization_howto/index.html#undo-redo", 
            "text": "Most of the time  CTRL + Z  does just what you expect it to do: to revert the last action.\nThis includes adding a plot, deleting it, add a row/column to the Tab, etc.\nPress   CTRL + SHIFT + Z  to redo the action.", 
            "title": "Undo / Redo"
        }, 
        {
            "location": "/visualization_howto/index.html#swap-plots", 
            "text": "Drag and Drop an entire plot into another one to swap them.  CTRL + Right Mouse .", 
            "title": "Swap Plots"
        }, 
        {
            "location": "/visualization_howto/index.html#zoom-area", 
            "text": "Zoom Into a user defined rectangle pressing the  Left Mouse  button on the plot area.", 
            "title": "Zoom area"
        }, 
        {
            "location": "/visualization_howto/index.html#zoom-inout", 
            "text": "Zoom In and Out using the  Middle Wheel  of the Mouse. Alternatively, you can use the buttons Plus(+)  and  Minus(-) .", 
            "title": "Zoom In/Out"
        }, 
        {
            "location": "/visualization_howto/index.html#pan", 
            "text": "Panning is activated keeping pressed  CTRL + Left Mouse .", 
            "title": "Pan"
        }, 
        {
            "location": "/data_sources/index.html", 
            "text": "Data Sources\n\n\nPlotJuggler is most commonly used to visualize data that is stored in a log file,\nfor instance a \nCSV\n\n or a \nrosbag\n.\nThis kind of data is usually loaded using plugins named \"DataLoader\".   \n\n\nAdditionally, it is possible to visualize data that is being streamed.\nThe user can easily start and stope streaming and decide the size of the buffer (in seconds).\n\n\nNote that some functionalities such as zoom, pan and the time tracker are disabled\nwhen streaming is ON.", 
            "title": "Data Sources: Static vs streamed data"
        }, 
        {
            "location": "/data_sources/index.html#data-sources", 
            "text": "PlotJuggler is most commonly used to visualize data that is stored in a log file,\nfor instance a  CSV \n or a  rosbag .\nThis kind of data is usually loaded using plugins named \"DataLoader\".     Additionally, it is possible to visualize data that is being streamed.\nThe user can easily start and stope streaming and decide the size of the buffer (in seconds).  Note that some functionalities such as zoom, pan and the time tracker are disabled\nwhen streaming is ON.", 
            "title": "Data Sources"
        }, 
        {
            "location": "/tracker/index.html", 
            "text": "The TimeTracker and the StatePublishers\n\n\nThe TimeTracker is a red vertical line which position is shared among all the PlotWidgets.\n\n\n\n\nThe position of the TimeTracker (A) can be changed either pressing \n\nSHIFT + LEFT MOUSE\n on a certain location of a PlotWidget, or moving \nthe time slider at the bottom of the screen (B).\n\n\n\n\nThe exact time will be diplayed in the box at the left side of the time slider (C).\n\n\nTo customize the way time is displayed, you can show/hide extra option pressing\nthe gear shaped icon (D).\n\n\nEven if, apparently, the TimeTracker is just an enhancement of the UI, it \nhides a more usefull functionality.\n\n\nWhen it is moved, all the plugins of type StatePublisher are invoked.\nThese plugins are mostly used to display and/or publish data points related\nto the time selected by the tracker.", 
            "title": "Time tracker and publishers"
        }, 
        {
            "location": "/tracker/index.html#the-timetracker-and-the-statepublishers", 
            "text": "The TimeTracker is a red vertical line which position is shared among all the PlotWidgets.   The position of the TimeTracker (A) can be changed either pressing  SHIFT + LEFT MOUSE  on a certain location of a PlotWidget, or moving \nthe time slider at the bottom of the screen (B).   The exact time will be diplayed in the box at the left side of the time slider (C).  To customize the way time is displayed, you can show/hide extra option pressing\nthe gear shaped icon (D).  Even if, apparently, the TimeTracker is just an enhancement of the UI, it \nhides a more usefull functionality.  When it is moved, all the plugins of type StatePublisher are invoked.\nThese plugins are mostly used to display and/or publish data points related\nto the time selected by the tracker.", 
            "title": "The TimeTracker and the StatePublishers"
        }, 
        {
            "location": "/ros_plugins/index.html", 
            "text": "Data sources\n\n\nDataLoadROS\n\n\nThis plugin is used to load rosbags.\nWhen the user load a \n.bag\n file, the following dialog is displayed:\n\n\n\n\nThis allows to select one or multiple topics stored inside the file.\n\n\nAdditionally, it is possible to activate an option called \"Enable renaming of ROS field\".\nThis option is used to rename a field in a vector using the value of a string stored in\nanother field of the message.\n\n\nFor example, we can use it to rename topic such as \nsensor_msgs/JointState\n\nand \ntf/tfMessage\n.\n\n\nThe user can add additional rules editing the corresponding XML (Edit Rules).\n\n\nFor more informations, see the documentation of the package \n\nros-type-introspection\n.\n\n\nDataStreamROS\n\n\nWhen activated, it will show the same Dialog used by DataLoadROS to select \nthe available topics.\n\n\nIt must be noted that a topic message can be parsed only if at least one \nmessage was received.\n\n\nOnce stopped, it provides also the ability to saved the received (and cached) \nROS messages inside a rosbag.\n\n\nPublishers\n\n\nRosoutPublisher\n\n\nThis plugins simply republish the topics received by DataStreamROS.\n\n\nThis is usefull to connect PlotJuggler with other tools like RViz.\n\n\nRosoutPublisher\n\n\nSince PlotJuggler can only visualize time series, we need a convenient way to \nmatch the data with the output of \nrosout\n messages.\n\n\nThis plugin creates a separate window with a GUI very similar to \n\nrqt_console\n.\n\n\nIt allows to filter messages by severity, node name or text of the message.\n\n\n\n\nBeing a StatePublisher, it is activated by the \nTimeTracker\n.\nIt will display only those message stored before the timestamp that corresponds\nto the current position of the TimeTracker.", 
            "title": "ROS plugins"
        }, 
        {
            "location": "/ros_plugins/index.html#data-sources", 
            "text": "", 
            "title": "Data sources"
        }, 
        {
            "location": "/ros_plugins/index.html#dataloadros", 
            "text": "This plugin is used to load rosbags.\nWhen the user load a  .bag  file, the following dialog is displayed:   This allows to select one or multiple topics stored inside the file.  Additionally, it is possible to activate an option called \"Enable renaming of ROS field\".\nThis option is used to rename a field in a vector using the value of a string stored in\nanother field of the message.  For example, we can use it to rename topic such as  sensor_msgs/JointState \nand  tf/tfMessage .  The user can add additional rules editing the corresponding XML (Edit Rules).  For more informations, see the documentation of the package  ros-type-introspection .", 
            "title": "DataLoadROS"
        }, 
        {
            "location": "/ros_plugins/index.html#datastreamros", 
            "text": "When activated, it will show the same Dialog used by DataLoadROS to select \nthe available topics.  It must be noted that a topic message can be parsed only if at least one \nmessage was received.  Once stopped, it provides also the ability to saved the received (and cached) \nROS messages inside a rosbag.", 
            "title": "DataStreamROS"
        }, 
        {
            "location": "/ros_plugins/index.html#publishers", 
            "text": "", 
            "title": "Publishers"
        }, 
        {
            "location": "/ros_plugins/index.html#rosoutpublisher", 
            "text": "This plugins simply republish the topics received by DataStreamROS.  This is usefull to connect PlotJuggler with other tools like RViz.", 
            "title": "RosoutPublisher"
        }, 
        {
            "location": "/ros_plugins/index.html#rosoutpublisher_1", 
            "text": "Since PlotJuggler can only visualize time series, we need a convenient way to \nmatch the data with the output of  rosout  messages.  This plugin creates a separate window with a GUI very similar to  rqt_console .  It allows to filter messages by severity, node name or text of the message.   Being a StatePublisher, it is activated by the  TimeTracker .\nIt will display only those message stored before the timestamp that corresponds\nto the current position of the TimeTracker.", 
            "title": "RosoutPublisher"
        }
    ]
}