| syntax = "proto2"; |
| |
| package frc971.analysis; |
| |
| // Specification fo a Channel to pull from the logfile. The name and type will |
| // be the full name/type of the channel to pull from the logfile. The alias is a |
| // shorter, easier to type, name that the rest of the logfile will use to refer |
| // to the channel. |
| message Channel { |
| optional string name = 1; |
| optional string type = 2; |
| optional string alias = 3; |
| } |
| |
| // A specification for a single signal within a Channel. |
| message Signal { |
| // Alias for the channel to pull the signal from--this should match an alias |
| // specified in one of the Channels. |
| optional string channel = 1; |
| // Specification of the field to plot. Currently, this only supports simple |
| // submessages, using dots. To access, e.g., the "bar" member of the "foo" |
| // submessage, field would be "foo.bar". This does not currently support |
| // working with repeated fields. |
| optional string field = 2; |
| } |
| |
| // A single line to plot. |
| message Line { |
| // The signal to plot on the y-axis. |
| optional Signal y_signal = 1; |
| // If set, we will use this signal for the x-axis of the plot. By default, we |
| // will use the monotonic sent time of the message. This is helpful for both |
| // plotting against non-time based signals (e.g., plotting x/y robot position) |
| // as well as plotting against times other than the message sent time (e.g., |
| // for the IMU where the sample capture time is separate from the actual |
| // sent time. |
| // Note that the x and y signals should have exactly the same number of |
| // entries--otherwise, we need to write logic to handle resampling one signal |
| // to a different rate. |
| optional Signal x_signal = 2; |
| } |
| |
| // Message representing a single pyplot Axes, with specifications for exactly |
| // which signals to show in the supplied subplot. |
| message Axes { |
| repeated Line line = 1; |
| optional string ylabel = 2; |
| optional string xlabel = 3 [default = "Monotonic Time (sec)"]; |
| // Whether to share an x-axis with all the other axes. |
| optional bool share_x_axis = 4 [default = true]; |
| } |
| |
| // Message representing a single pyplot figure. |
| message Figure { |
| repeated Axes axes = 1; |
| } |
| |
| // This configuration specifies what to plot when reading from a logfile. |
| message PlotConfig { |
| // List of channels and their aliases to use in the plot. |
| repeated Channel channel = 1; |
| // Figures to plot. |
| repeated Figure figure = 2; |
| } |