Skip to main content

A matplotlib based plotter for FRC logs and networktables

Project description

Overview

The lime-plotter application plots data collected from robots in the First Robotics Competitions and plots them to the screen or to a PNG file. It can read data from CSV based log files, or via a networktables server (IE, from a robot over its wireless network).

Usage

Installation

Install any needed modules and the lime-plotter itself:

pip3 install --user --upgrade frc1678-lime-plotter

Things to plot are specified either via complex command line arguments with the -p switch, or via easier-to-read-and-write YAML configuration files (see the example below).

Reading from logs

lime-plotter.py can be run with a -L switch to load CSV files from a file, multiple files, or a directory. EG calling it as:

lime-plotter.py -L DIR

Will load all the files it can from the DIR directory. Table names will be assumed from the CSV file names.

Reading from FRC network tables

To read from a network table, use the -N switch to specify the network address to connect to, and optionally a -T switch to specify a default table to read from.

lime-plotter.py -N 10.0.0.1 -t nettable

Listing available tables / columns

This works for both NetworkTables and CSV logs:

lime-plotter.py -N 10.0.0.1 -l

Example configuration

The following are YAML file configuration examples.

Example single graph

The following example configuration file specifies a single plot called position and plots two overlayed graphs from the robot's drivetrain_status table:

plots:
  position:
    - x: estimated_x_position
      y: estimated_y_position
      xmax: 7
      xmin: -7
      ymax: 7
      ymin: -7
      table: drivetrain_status
      fixedAspect: True
      title: X/Y Test
    - x: profiled_x_goal
      y: profiled_y_goal
      table: drivetrain_status
      last: 100

Saving this to xy.yml and running lime-plotter.py to load logs from a 'log' directory as follows:

lime-plotter.py -L log -y xy.yml -o xytest.png

Might produce the following graph:

X/Y Test Graph

Example multiple graphs

To display multiple plots, configuration files can contain multiple named entries:

plots:
  velocity:
    - y: linear_velocity
    - y: angular_velocity
      title: Velocity
  elevator:
    - y: elevator_height
      title: elevator Height

And run with

lime-plotter.py -L log -y multiple.yml -o multiple.yng

Will produce a graph similar to the following:

Multiple Graphs

Including an svg image (such as a field map)

Can be done with a 'data_source' entry inside a plot:

plots:
  - data_source: svg
    file: 2020map.svg
    y: bogus
    x: bogus
    xmax: 54.0833333333 # scale svg to these dimensions
    ymax: 26.5833333333
    alpha: .5

Here's a copy of the FRC 2020 map as a plottable SVG:

Animation

When plotting from networktables or with the -a switch applied, a window will open that will animate the data flowing over time (live in the case of networktables). You can use the -f switch to change the frame rate (when graphing CSV files, it'll draw faster with higher values -- the default is 20; when drawing from network tables it'll use this value as the polling frequency, and should be set to the same number of milliseconds that the robot is using to update tables).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frc1678-lime-plotter-0.5.4.tar.gz (15.3 kB view details)

Uploaded Source

Built Distributions

frc1678_lime_plotter-0.5.4-py3.7.egg (557.3 kB view details)

Uploaded Source

frc1678_lime_plotter-0.5.4-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file frc1678-lime-plotter-0.5.4.tar.gz.

File metadata

  • Download URL: frc1678-lime-plotter-0.5.4.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.2 pkginfo/1.4.2 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.5

File hashes

Hashes for frc1678-lime-plotter-0.5.4.tar.gz
Algorithm Hash digest
SHA256 8a93da4e7ba3813564a4e90a9f4ec0d2d2d0348da68540aff23f363a97f53b7b
MD5 f8383a715ae48292653b854689d05574
BLAKE2b-256 0be205c783cc83c8390ae9fd36691ee936c1dbc2feff965f86dcac86a5f3608d

See more details on using hashes here.

File details

Details for the file frc1678_lime_plotter-0.5.4-py3.7.egg.

File metadata

  • Download URL: frc1678_lime_plotter-0.5.4-py3.7.egg
  • Upload date:
  • Size: 557.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.2 pkginfo/1.4.2 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.6

File hashes

Hashes for frc1678_lime_plotter-0.5.4-py3.7.egg
Algorithm Hash digest
SHA256 89a1c9ece531c621bc96eaabe8971b387d60b830161064ffd515c70ebbe814a2
MD5 3100e3bac987e48a443c37fe222153fe
BLAKE2b-256 69f461b2d9bab7deca69a40abad03d20abd9532729ce414041150efb025b7c8e

See more details on using hashes here.

File details

Details for the file frc1678_lime_plotter-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: frc1678_lime_plotter-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.2 pkginfo/1.4.2 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.5

File hashes

Hashes for frc1678_lime_plotter-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4521c76bdc367b3c159df06af3aaebb5a9f30a43d2248b3cae9cab0943180186
MD5 46fa062fe3266e5b706c1c22c89467e3
BLAKE2b-256 a95ce84b7e37791ab651c3dc0bc684734f41ee67b7b1a4a172282498b1a8e5a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page