Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove software tools section #604

Closed
wants to merge 19 commits into from
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,21 @@ SmartDashboard

.. image:: images/control-system-software/smartdashboard.png

SmartDashboard is an alternate dashboard application written in Java. SmartDashboard automatically creates a widget for each variable sent from the Robot sent using the SmartDashboard class or VIs. These widgets can be configured to a number of preset display types, or users can create custom extensions in Java. Vision extensions are available for the SmartDashboard which allow it to display images from the Axis camera on the robot. SmartDashboard is included in the C++ and Java language updates (enabled by clicking the C++ or Java buttons respectively on the Setup tab of the Driver Station). Additional documentation on SmartDashboard can be found :ref:`here <docs/software/wpilib-tools/smartdashboard/index:SmartDashboard>`.
SmartDashboard is an alternate dashboard application written in Java. SmartDashboard automatically creates a widget for each variable sent from the Robot sent using the SmartDashboard class or VIs. These widgets can be configured to a number of preset display types, or users can create custom extensions in Java. Vision extensions are available for the SmartDashboard which allow it to display images from the Axis camera on the robot. SmartDashboard is included in the C++ and Java language updates (enabled by clicking the C++ or Java buttons respectively on the Setup tab of the Driver Station). Additional documentation on SmartDashboard can be found :ref:`here <docs/software/dashboards/smartdashboard/index:SmartDashboard>`.

LiveWindow
^^^^^^^^^^

.. image:: images/control-system-software/livewindow-smartdashboard.png

LiveWindow is a mode of SmartDashboard , designed for use with the Test Mode of the Driver Station. LiveWindow allows the user to see feedback from sensors on the robot and control actuators independent of the written user code. More information about LiveWindow can be found :ref:`here <docs/software/wpilib-tools/smartdashboard/test-mode-and-live-window/index:SmartDashboard: Test Mode and Live Window>`.
LiveWindow is a mode of SmartDashboard , designed for use with the Test Mode of the Driver Station. LiveWindow allows the user to see feedback from sensors on the robot and control actuators independent of the written user code. More information about LiveWindow can be found :ref:`here <docs/software/dashboards/smartdashboard/test-mode-and-live-window/index:SmartDashboard: Test Mode and Live Window>`.

Shuffleboard
------------

.. image:: images/control-system-software/shuffleboard.png

Shuffleboard is an alternative dashboard application written in Java. It takes many of the concepts from SmartDashboard such as automatic adding of widgets and adds new features including better layout control and record/playback functionality. Shuffleboard contains all of the basic widget types found in the SmartDashboard as well as a number of new ones intended to make visualizing specific robot components even easier. It has full integration with WPILib’s “cscore” for displaying, recording, and playing back camera streams. Shuffleboard is included in the C++ and Java language updates (enabled by selecting Shuffleboard from the dashboard type on the Setup tab of the Driver Station or by launching it from the WPILib start tool menu in Visual Studio Code). Additional documentation on Shuffleboard can be found :ref:`here <docs/software/wpilib-tools/shuffleboard/index:Shuffleboard>`.
Shuffleboard is an alternative dashboard application written in Java. It takes many of the concepts from SmartDashboard such as automatic adding of widgets and adds new features including better layout control and record/playback functionality. Shuffleboard contains all of the basic widget types found in the SmartDashboard as well as a number of new ones intended to make visualizing specific robot components even easier. It has full integration with WPILib’s “cscore” for displaying, recording, and playing back camera streams. Shuffleboard is included in the C++ and Java language updates (enabled by selecting Shuffleboard from the dashboard type on the Setup tab of the Driver Station or by launching it from the WPILib start tool menu in Visual Studio Code). Additional documentation on Shuffleboard can be found :ref:`here <docs/software/dashboards/shuffleboard/index:Shuffleboard>`.

FRC roboRIO Imaging Tool (Windows Only)
---------------------------------------
Expand Down Expand Up @@ -94,7 +94,7 @@ RobotBuilder

.. image:: images/control-system-software/robot-builder.png

RobotBuilder is a tool designed to aid in setup and structuring of a Command Based robot project for C++ or Java. RobotBuilder allows you to enter in the various components of your robot subsystems and operator interface and define what your commands are in a graphical tree structure. RobotBuilder will then verify that you have no port allocation conflicts and can generate a wiring table indicating what is connected to each port as well as C++ or Java code. The code created generates the appropriate files, constructs the appropriate objects and adds LiveWindow code for each sensor and actuator, but does not write any of the actual Subsystem or Command methods. The user must write the appropriate code for these methods for the robot to function. More information about RobotBuilder can be found :ref:`here <docs/software/wpilib-tools/robotbuilder/index:RobotBuilder>`. More information about the Command Based programming architecture can be found :ref:`here <docs/software/commandbased/index:Command-Based Programming>`.
RobotBuilder is a tool designed to aid in setup and structuring of a Command Based robot project for C++ or Java. RobotBuilder allows you to enter in the various components of your robot subsystems and operator interface and define what your commands are in a graphical tree structure. RobotBuilder will then verify that you have no port allocation conflicts and can generate a wiring table indicating what is connected to each port as well as C++ or Java code. The code created generates the appropriate files, constructs the appropriate objects and adds LiveWindow code for each sensor and actuator, but does not write any of the actual Subsystem or Command methods. The user must write the appropriate code for these methods for the robot to function. More information about RobotBuilder can be found :ref:`here <docs/software/robotbuilder/index:RobotBuilder>`. More information about the Command Based programming architecture can be found :ref:`here <docs/software/commandbased/index:Command-Based Programming>`.

OutlineViewer
-------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ A feedforward controller injects information about the system’s dynamics (like

There are two types of feedforwards: model-based feedforward and feedforward for unmodeled dynamics. The first solves a mathematical model of the system for the inputs required to meet desired velocities and accelerations. The second compensates for unmodeled forces or behaviors directly so the feedback controller doesn't have to. Both types can facilitate simpler feedback controllers. We'll cover several examples below.

.. note:: The WPILib feedforward classes closely match the available mechanism characterization tools available in the :ref:`frc-characterization toolsuite <docs/software/wpilib-tools/robot-characterization/introduction:Introduction to Robot Characterization>` - the characterization toolsuite can be used to quickly and effectively determine the correct gains for each type of feedforward. The toolsuite will indicate the appropriate units for each of the gains.
.. note:: The WPILib feedforward classes closely match the available mechanism characterization tools available in the :ref:`frc-characterization toolsuite <docs/software/advanced-controls/trajectories/robot-characterization/introduction:Introduction to Robot Characterization>` - the characterization toolsuite can be used to quickly and effectively determine the correct gains for each type of feedforward. The toolsuite will indicate the appropriate units for each of the gains.

WPILib provides a number of classes to help users implement accurate feedforward control for their mechanisms. In many ways, an accurate feedforward is more important than feedback to effective control of a mechanism. Since most FRC mechanisms closely obey well-understood system equations, starting with an accurate feedforward is both easy and hugely beneficial to accurate and robust mechanism control.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ If the :term:`controller` settles at an :term:`output` above or below the :term:

Beware that if :math:`K_i` is too large, integral windup can occur. Following a large change in :term:`setpoint`, the integral term can accumulate an error larger than the maximal :term:`control input`. As a result, the system overshoots and continues to increase until this accumulated error is unwound.

.. note:: The :ref:`frc-characterization toolsuite <docs/software/wpilib-tools/robot-characterization/index:Robot Characterization>` can be used to model your system and give accurate Proportional and Derivative values. This is preferred over tuning the controller yourself.
.. note:: The :ref:`frc-characterization toolsuite <docs/software/advanced-controls/trajectories/robot-characterization/index:Robot Characterization>` can be used to model your system and give accurate Proportional and Derivative values. This is preferred over tuning the controller yourself.

Actuator Saturation
-------------------
Expand Down
2 changes: 2 additions & 0 deletions source/docs/software/advanced-controls/trajectories/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ This section describes WPILib support for generating parameterized spline trajec
manipulating-trajectories
transforming-trajectories
ramsete
pathweaver/index
robot-characterization/index
troubleshooting
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ The vertical "mirroring" visible here is normal, and is simply the result of the

The quasistatic test ought to have nearly linear velocity, and nearly-zero acceleration (hense "quasistatic"). The dynamic test ought to have velocity that asymptotically approaches a steady-state speed (the shape of the curve should be exponential, in fact), and acceleration that, accordingly, rapidly falls to zero (also exponentially, as the derivative of an exponential function is also an exponential function).

Deviation from this behavior is a sign of an :ref:`error <docs/software/wpilib-tools/robot-characterization/viewing-diagnostics:Diagnostics Plots for Common Failure Modes>`, either in your robot setup, analysis settings, or your test procedure.
Deviation from this behavior is a sign of an :ref:`error <docs/software/advanced-controls/trajectories/robot-characterization/viewing-diagnostics:Diagnostics Plots for Common Failure Modes>`, either in your robot setup, analysis settings, or your test procedure.

Voltage-Domain Diagnostics
--------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Poor trajectory tracking performance can be difficult to troubleshoot. Although

Because it can be so hard to locate the layer of the trajectory generator and followers that is misbehaving, a systematic, layer-by-layer approach is recommended for general poor tracking performance (e.g. the robot is off by few feet or more than twenty degrees). The below steps are listed in the order that you should do them in; it is important to follow this order so that you can isolate the effects of different steps from each other.

.. note:: The below examples put diagnostic values onto Network Tables. The easiest way to graph these values is to :ref:`use Shuffleboard's graphing capabilities <docs/software/wpilib-tools/shuffleboard/getting-started/shuffleboard-graphs:Working With Graphs>`.
.. note:: The below examples put diagnostic values onto Network Tables. The easiest way to graph these values is to :ref:`use Shuffleboard's graphing capabilities <docs/software/dashboards/shuffleboard/getting-started/shuffleboard-graphs:Working With Graphs>`.

Verify Odometry
^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -93,7 +93,7 @@ If your odometry is bad, then your Ramsete controller may misbehave, because it
}

2. Lay out a tape measure parallel to your robot and push your robot out about one meter along the tape measure. Lay out a tape measure along the Y axis and start over, pushing your robot one meter along the X axis and one meter along the Y axis in a rough arc.
3. Compare X and Y reported by the robot to actual X and Y. If X is off by more than 5 centimeters in the first test then you should check that you measured your wheel diameter correctly, and that your wheels are not worn down. If the second test is off by more than 5 centimeters in either X or Y then your track width (distance from the center of the left wheel to the center of the right wheel) may be incorrect; if you're sure that you measured the track width correctly with a tape measure then your robot's wheels may be slipping in a way that is not accounted for by track width--if this is the case then you should :ref:`run the track width characterization <docs/software/wpilib-tools/robot-characterization/characterization-routine:Running Tests>` and use that track width instead of the one from your tape measure.
3. Compare X and Y reported by the robot to actual X and Y. If X is off by more than 5 centimeters in the first test then you should check that you measured your wheel diameter correctly, and that your wheels are not worn down. If the second test is off by more than 5 centimeters in either X or Y then your track width (distance from the center of the left wheel to the center of the right wheel) may be incorrect; if you're sure that you measured the track width correctly with a tape measure then your robot's wheels may be slipping in a way that is not accounted for by track width--if this is the case then you should :ref:`run the track width characterization <docs/software/advanced-controls/trajectories/robot-characterization/characterization-routine:Running Tests>` and use that track width instead of the one from your tape measure.

Verify Feedforward
^^^^^^^^^^^^^^^^^^
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Step 1: Characterizing Your Robot Drive
=======================================

.. note:: For detailed instructions on using the FRC-Characterization tool, see its :ref:`dedicated documentation <docs/software/wpilib-tools/robot-characterization/introduction:Introduction to Robot Characterization>`.
.. note:: For detailed instructions on using the FRC-Characterization tool, see its :ref:`dedicated documentation <docs/software/advanced-controls/trajectories/robot-characterization/introduction:Introduction to Robot Characterization>`.

.. note:: The drive characterization process requires ample space for the robot to drive. Be sure to have *at least* a 10' stretch (ideally closer to 20') in which the robot can drive during the characterization routine.

Expand All @@ -14,23 +14,23 @@ Gathering the Data

We begin by gathering our drive characterization data.

1. :ref:`Generate a robot project <docs/software/wpilib-tools/robot-characterization/generating-project:Generating a Project>`.
1. :ref:`Generate a robot project <docs/software/advanced-controls/trajectories/robot-characterization/generating-project:Generating a Project>`.

* Our example project uses the "simple" project type. Other project types (e.g. Talon and NEO) can be used without much difference; however, be *sure* to specify the required robot parameters correctly, regardless of project type!
* WPILib's trajectory library assumes units of meters are used universally for distance - accordingly, be certain that your robot's wheel diameter is specified in meters!

2. :ref:`Deploy the robot project <docs/software/wpilib-tools/robot-characterization/deploying-project:Deploying a Project>`.
3. :ref:`Run the Characterization Routine <docs/software/wpilib-tools/robot-characterization/characterization-routine:Running the Characterization Routine>`.
2. :ref:`Deploy the robot project <docs/software/advanced-controls/trajectories/robot-characterization/deploying-project:Deploying a Project>`.
3. :ref:`Run the Characterization Routine <docs/software/advanced-controls/trajectories/robot-characterization/characterization-routine:Running the Characterization Routine>`.

Analyzing the Data
------------------

Once the characterization routine has been run and the data file has been saved, it is time to :ref:`open it in the analysis pane <docs/software/wpilib-tools/robot-characterization/analyzing-data:Analyzing Data>`.
Once the characterization routine has been run and the data file has been saved, it is time to :ref:`open it in the analysis pane <docs/software/advanced-controls/trajectories/robot-characterization/analyzing-data:Analyzing Data>`.

Checking Diagnostics
^^^^^^^^^^^^^^^^^^^^

Per the :ref:`FRC-Characterization guide <docs/software/wpilib-tools/robot-characterization/viewing-diagnostics:Viewing Diagnostics>`, we first view the diagnostics to ensure that our data look reasonable:
Per the :ref:`FRC-Characterization guide <docs/software/advanced-controls/trajectories/robot-characterization/viewing-diagnostics:Viewing Diagnostics>`, we first view the diagnostics to ensure that our data look reasonable:

|Diagnostics|

Expand Down Expand Up @@ -58,7 +58,7 @@ Calculate Feedback Gains

.. note:: Feedback gains do *not*, in general, transfer across robots. Do *not* use the gains from this tutorial for your own robot.

We now :ref:`calculate the feedback gains <docs/software/wpilib-tools/robot-characterization/analyzing-feedback:Feedback Analysis>` for the PID control that we will use to follow the path. Trajectory following with WPILib's RAMSETE controller uses velocity closed-loop control, so we first select ``Velocity`` mode in the characterization tool:
We now :ref:`calculate the feedback gains <docs/software/advanced-controls/trajectories/robot-characterization/analyzing-feedback:Feedback Analysis>` for the PID control that we will use to follow the path. Trajectory following with WPILib's RAMSETE controller uses velocity closed-loop control, so we first select ``Velocity`` mode in the characterization tool:

|Velocity Mode|

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ With our trajectory configuration in hand, we are now ready to generate our traj
:linenos:
:lineno-start: 63

.. note:: Instead of generating the trajectory on the roboRIO as outlined above, one can also :ref:`import a PathWeaver JSON <docs/software/wpilib-tools/pathweaver/integrating-robot-program:Importing a PathWeaver JSON>`.
.. note:: Instead of generating the trajectory on the roboRIO as outlined above, one can also :ref:`import a PathWeaver JSON <docs/software/advanced-controls/trajectories/pathweaver/integrating-robot-program:Importing a PathWeaver JSON>`.

Creating the RamseteCommand
---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ To follow this tutorial, you will need ready access to the following materials:

* :ref:`FRC Driver Station <docs/getting-started/getting-started-frc-control-system/frc-game-tools:Installing the FRC Game Tools>`.
* :ref:`WPILib <docs/getting-started/getting-started-frc-control-system/wpilib-setup:WPILib Installation Guide>`.
* :ref:`The FRC-Characterization Toolsuite <docs/software/wpilib-tools/robot-characterization/introduction:Installing and Launching the Toolsuite>`.
* :ref:`The FRC-Characterization Toolsuite <docs/software/advanced-controls/trajectories/robot-characterization/introduction:Installing and Launching the Toolsuite>`.
Loading