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. Note that in this case the tool will try and find the right table for you; I.E. you don't need to specify the table or even x column if you don't wish.

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: 629.25 # scale svg to these dimensions
    ymax: 323.25 # (2020 dimensions in inches)
    alpha: .5

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

Including built in maps

The following map files can be specified without actually having a file present, as they're included in the package data:

  • 2019map.svg
  • 2020map.svg (just the playing field)
  • 2020map-rev.svg (reverses the playing field top to bottom)
  • 2020map-full.svg (the full field with human areas)

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.5.tar.gz (410.9 kB view details)

Uploaded Source

Built Distributions

frc1678_lime_plotter-0.5.5-py3.7.egg (320.0 kB view details)

Uploaded Source

frc1678_lime_plotter-0.5.5-py3-none-any.whl (301.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: frc1678-lime-plotter-0.5.5.tar.gz
  • Upload date:
  • Size: 410.9 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.5.tar.gz
Algorithm Hash digest
SHA256 0560ab65fcb4b9c060633af5a02578d1be2b36cd9a2a77f96a8fa6f16364afc5
MD5 61c4e76a64c690bd5d640c6282999d05
BLAKE2b-256 a387c10dc01033c9efe7f05d19a379a0987f5b5b279877fe0136d8c315e1c07f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: frc1678_lime_plotter-0.5.5-py3.7.egg
  • Upload date:
  • Size: 320.0 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.5-py3.7.egg
Algorithm Hash digest
SHA256 c8028fd50a857783c352996beba32471ade3dd2bef5a9b6676bf6074d09054a0
MD5 5cfcfe442aa34854cad64fa67adf20d8
BLAKE2b-256 1903e20b64aebe1ff65cffdc98baba23f811bd555ca15ee4ba8ddf7957f9874b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: frc1678_lime_plotter-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 301.8 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.6

File hashes

Hashes for frc1678_lime_plotter-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6dc1b81c6a3a23ca31e9d6bd22fb12b47234b3440f7985ddec341f126a0a7db0
MD5 9c45333ada1b7f9183b6bb3767a7b519
BLAKE2b-256 199ddc746faa580d9416f1d56d9a5c765a5337332eed1a6628980ec10805d277

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