blob: f8c3a7cdbc5b44395a0917eb6d66f9a12409e000 [file] [log] [blame]
milind-u086d7262022-01-19 20:44:18 -08001// Provides a plot for debugging robot state-related issues.
2import {AosPlotter} from 'org_frc971/aos/network/www/aos_plotter';
milind-u086d7262022-01-19 20:44:18 -08003import {BLUE, BROWN, CYAN, GREEN, PINK, RED, WHITE} from 'org_frc971/aos/network/www/colors';
Henry Speiser55aa3ba2022-02-21 23:21:12 -08004import * as proxy from 'org_frc971/aos/network/www/proxy';
milind-u086d7262022-01-19 20:44:18 -08005
6import Connection = proxy.Connection;
7
8const TIME = AosPlotter.TIME;
Austin Schuhc9b42db2022-03-12 12:03:29 -08009const DEFAULT_WIDTH = AosPlotter.DEFAULT_WIDTH * 2;
milind-u086d7262022-01-19 20:44:18 -080010const DEFAULT_HEIGHT = AosPlotter.DEFAULT_HEIGHT * 3;
11
Henry Speiser55aa3ba2022-02-21 23:21:12 -080012export function plotSuperstructure(conn: Connection, element: Element): void {
milind-u086d7262022-01-19 20:44:18 -080013 const aosPlotter = new AosPlotter(conn);
Henry Speiser55aa3ba2022-02-21 23:21:12 -080014 const goal = aosPlotter.addMessageSource(
15 '/superstructure', 'y2022.control_loops.superstructure.Goal');
16 const output = aosPlotter.addMessageSource(
17 '/superstructure', 'y2022.control_loops.superstructure.Output');
18 const status = aosPlotter.addMessageSource(
19 '/superstructure', 'y2022.control_loops.superstructure.Status');
20 const position = aosPlotter.addMessageSource(
21 '/superstructure', 'y2022.control_loops.superstructure.Position');
milind-u086d7262022-01-19 20:44:18 -080022 const robotState = aosPlotter.addMessageSource('/aos', 'aos.RobotState');
Ravago Jones71e434b2022-03-06 14:09:40 -080023
24 const positionPlot =
25 aosPlotter.addPlot(element, [DEFAULT_WIDTH, DEFAULT_HEIGHT / 2]);
26 positionPlot.plot.getAxisLabels().setTitle('States');
27 positionPlot.plot.getAxisLabels().setXLabel(TIME);
28 positionPlot.plot.getAxisLabels().setYLabel('wonky state units');
29 positionPlot.plot.setDefaultYRange([-1.0, 2.0]);
30
31 positionPlot.addMessageLine(position, ['turret_beambreak'])
32 .setColor(RED)
33 .setPointSize(4.0);
34 positionPlot.addMessageLine(status, ['state'])
35 .setColor(CYAN)
36 .setPointSize(1.0);
37 positionPlot.addMessageLine(status, ['flippers_open'])
38 .setColor(WHITE)
39 .setPointSize(1.0);
40 positionPlot.addMessageLine(status, ['reseating_in_catapult'])
41 .setColor(BLUE)
42 .setPointSize(1.0);
43 positionPlot.addMessageLine(status, ['fire'])
44 .setColor(CYAN)
45 .setPointSize(1.0);
46
47
48 const intakePlot =
49 aosPlotter.addPlot(element, [DEFAULT_WIDTH, DEFAULT_HEIGHT / 2]);
50 intakePlot.plot.getAxisLabels().setTitle('Intake');
51 intakePlot.plot.getAxisLabels().setXLabel(TIME);
52 intakePlot.plot.getAxisLabels().setYLabel('wonky state units');
53 intakePlot.plot.setDefaultYRange([-1.0, 2.0]);
54 intakePlot.addMessageLine(status, ['intake_state'])
55 .setColor(RED)
56 .setPointSize(1.0);
57 intakePlot.addMessageLine(position, ['intake_beambreak_front'])
58 .setColor(GREEN)
59 .setPointSize(4.0);
60 intakePlot.addMessageLine(position, ['intake_beambreak_back'])
61 .setColor(PINK)
62 .setPointSize(1.0);
63
64
65 const otherPlot =
66 aosPlotter.addPlot(element, [DEFAULT_WIDTH, DEFAULT_HEIGHT / 2]);
67 otherPlot.plot.getAxisLabels().setTitle('Position');
68 otherPlot.plot.getAxisLabels().setXLabel(TIME);
69 otherPlot.plot.getAxisLabels().setYLabel('rad');
70 otherPlot.plot.setDefaultYRange([-1.0, 2.0]);
71
72 otherPlot.addMessageLine(status, ['catapult', 'position'])
73 .setColor(PINK)
74 .setPointSize(4.0);
75 otherPlot.addMessageLine(position, ['flipper_arm_left', 'encoder'])
76 .setColor(BLUE)
77 .setPointSize(4.0);
78 otherPlot.addMessageLine(position, ['flipper_arm_right', 'encoder'])
79 .setColor(CYAN)
80 .setPointSize(4.0);
James Kuszmaulccc566f2022-03-12 14:10:00 -080081 otherPlot.addMessageLine(output, ['flipper_arms_voltage'])
82 .setColor(BROWN)
83 .setPointSize(4.0);
milind-u086d7262022-01-19 20:44:18 -080084}