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:
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:
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
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file frc1678-lime-plotter-0.5.3.tar.gz
.
File metadata
- Download URL: frc1678-lime-plotter-0.5.3.tar.gz
- Upload date:
- Size: 15.2 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18aaec811164a21c8ffd6e361adaa7acb5da06b364f02a52cac15e205c0c9bd8 |
|
MD5 | 529445433f746093f06b713d8b23cc56 |
|
BLAKE2b-256 | 506728d5cffc9ff4fa0d35c1b224928757a6728910ca696dda819314563a61fe |
File details
Details for the file frc1678_lime_plotter-0.5.3-py3-none-any.whl
.
File metadata
- Download URL: frc1678_lime_plotter-0.5.3-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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e08e5654418aa08b7cf05754796f4cd7066913830e81c903d7cd7bcaf377937f |
|
MD5 | 227913d8f68d77175467263fbc24c24f |
|
BLAKE2b-256 | 1961e4474568dc75886ce58f93c1d58b0b26dda61fe59fe1dc551de82a758e4c |