Problem: Currently, if we want to print rapidly changing values to the terminal (such as the angular heading of the robot during a test turn), it will quickly pollute the terminal with heading values, which does not conveniently display how the variable is changing.
Significance: If variables printed to the terminal (such as the heading value) stayed in one place, and were repeatedly reprinted as they were assigned new values, changes in the variable could more easily be viewed.
Solution: I propose a "dashboard"-type interface, similar to the one used by many terminal commands that "watch" certain values (like nvidia-smi, or commands that download large files). In essence, during every tick, the terminal will be cleared and fully reprinted. To handle this...
a custom Dashboard class will be implemented, which will implement functions to add sections to the dashboard
at the bottom of the "dashboard", there will be a greater-than symbol (>) where the user can type in their desired command
as part of the Dashboard class, functions will be implemented to asynchronously detect keyboard input + arrow keys, and add it to a "queue" of inputs (similar to how Pygame does it) that will be handled every tick (usually resulting in either adding to command input, or submitting the command for handling)
the Dashboard class will also provide an option for displayed values to have an indicator next to them, showing a colorized version of either (based on which one the developer chooses) the delta value between current and previous, the percent change between current and previous, or an up arrow or down arrow representing increases/decreases. In addition, these informational values can have a "critical value" at which they switch from one color to another (ex. when inaccuracy gets too high, when a turn is significant enough to be counted as an oscillation).
As a small QoL change, disallow the user from inputting characters to the terminal (and do not handle said characters) while a test autonomous routine is running
Problem: Currently, if we want to print rapidly changing values to the terminal (such as the angular heading of the robot during a test turn), it will quickly pollute the terminal with heading values, which does not conveniently display how the variable is changing. Significance: If variables printed to the terminal (such as the heading value) stayed in one place, and were repeatedly reprinted as they were assigned new values, changes in the variable could more easily be viewed. Solution: I propose a "dashboard"-type interface, similar to the one used by many terminal commands that "watch" certain values (like
nvidia-smi
, or commands that download large files). In essence, during every tick, the terminal will be cleared and fully reprinted. To handle this...Dashboard
class will be implemented, which will implement functions to add sections to the dashboard>
) where the user can type in their desired commandDashboard
class, functions will be implemented to asynchronously detect keyboard input + arrow keys, and add it to a "queue" of inputs (similar to howPygame
does it) that will be handled every tick (usually resulting in either adding to command input, or submitting the command for handling)Dashboard
class will also provide an option for displayed values to have an indicator next to them, showing a colorized version of either (based on which one the developer chooses) the delta value between current and previous, the percent change between current and previous, or an up arrow or down arrow representing increases/decreases. In addition, these informational values can have a "critical value" at which they switch from one color to another (ex. when inaccuracy gets too high, when a turn is significant enough to be counted as an oscillation).