基于matplotlib的FRC日志和网络表绘图仪
frc1678-lime-plotter的Python项目详细描述
概述
lime plotter应用程序绘制从中的机器人收集的数据 第一次机器人比赛,并将它们绘制到屏幕上或 PNG文件。它可以从基于CSV的日志文件中读取数据,或者通过 networktables服务器(即通过其无线网络从机器人获得)。在
使用
安装
安装任何需要的模块和石灰绘图仪:
pip3 install --user --upgrade frc1678-lime-plotter
要绘制的内容可以通过复杂的命令行参数指定 使用-p开关,或通过更易于读写YAML 配置文件(请参阅下面的示例)。在
从日志中读取
石灰-绘图仪.py可以使用-L开关来从 文件、多个文件或一个目录。例如称之为:
^{pr2}$将从DIR目录加载所有文件。表名 将假定来自CSV文件名。在
从FRC网络表读取
要从网络表读取,请使用-N开关指定 要连接到的网络地址,以及可选的要指定的-T开关 要从中读取的默认表。在
lime-plotter.py -N 10.0.0.1 -t nettable
列出可用的表/列
这适用于NetworkTables和CSV日志:
lime-plotter.py -N 10.0.0.1 -l
示例配置
以下是YAML文件配置示例。在
单个图形示例
下面的配置文件示例指定了一个打印 调用position并从 机器人的drivetrain_status表:
plots:position:-x:estimated_x_positiony:estimated_y_positionxmax:7xmin:-7ymax:7ymin:-7table:drivetrain_statusfixedAspect:Truetitle:X/Y Test-x:profiled_x_goaly:profiled_y_goaltable:drivetrain_statuslast:100
将此保存到xy.yml公司和流动石灰-绘图仪.py从中加载日志 'log'目录如下:
lime-plotter.py -L log -y xy.yml -o xytest.png
可能会生成以下图表:
示例多个图
要显示多个打印,配置文件可以包含多个 命名条目。注意,在这种情况下,工具将尝试查找 适合您的右表;也就是说,您不需要指定表甚至 如果你不愿意的话,请按x列。在
plots:
velocity:
- y: linear_velocity
- y: angular_velocity
title: Velocity
elevator:
- y: elevator_height
title: elevator Height
和他一起跑
lime-plotter.py -L log -y multiple.yml -o multiple.yng
将生成类似于以下内容的图形:
注意:可以使用-Y标志仅打印选定的一组截面
YAML文件的。例如lime-plotter.py -L log -y multiple.yml -Y velocity
将只绘制第一个图形。在
包括svg图像(如字段映射)
可以使用绘图中的“数据源”项完成:
plots:
- data_source: svg
file: 2020map.svg
xmax: 629.25 # scale svg to these dimensions
ymax: 323.25 # (2020 dimensions in inches)
alpha: .5
以下是作为可打印SVG的FRC 2020 map的副本:
包括内置地图
可以指定以下映射文件,而不实际具有 文件存在,因为它们包含在包数据中:
- 2019年地图.svg在
- 2020年地图.svg(只是比赛场地)
- 2020地图-svg版(从上到下颠倒比赛场地)
- 2020地图-完整.svg(全场有人区)
为机器人的起始位置添加偏移
当你的机器人在场地的某个点开始时,你可以调整它的
xoff
和yoff
值设置字段中的偏移量,使用0,0
在左下角。在
plots:
position:
- x: Robot X
y: Robot Y
xoff: 100
yoff: 50
fixedAspect: true
动画
从networktables或应用-a开关进行绘图时, 将打开一个窗口,该窗口将动态显示随时间流动的数据(实时 对于networktables)。您可以使用-f开关来 改变帧速率(当绘制CSV文件时,使用 更高的值——默认值为20;从网络表绘制时 它将使用此值作为轮询频率,并应设置为 与robot用于更新表的毫秒数相同)。在
时间标记
你可以打开时间标记,每N秒标记一个更大的点 配置如下:
plots:
timemarkers:
# plot the regular robot x/y coordinates
- x: Robot X
y: Robot Y
fixedAspect: true
# Plot a larger (size 20) dot every 1 second ontop the Robot X/Y marks
- data_source: timer
marker_size: 20
x: Robot X
y: Robot Y
delta: 1
- 项目
标签: