Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions .cspell/ftc-dictionary.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,18 @@ controlhub
Deadaxle
deadwheel
driverhub
drivetrain
drivetrains
durometer
durometers
feedforward
Feedforward
gamepads
Gamepads
gearmotor
gearmotors
handwheel
handwheels
hardstop
holonomic
hotend
Expand All @@ -47,6 +53,8 @@ hotends
Hotends
mecanum
Mecanum
microcontroller
microcontrollers
navx
odometry
Odometry
Expand Down
44 changes: 42 additions & 2 deletions docs/source/_static/css/ftc-rtd.css
Original file line number Diff line number Diff line change
Expand Up @@ -1277,7 +1277,47 @@ div.ethical-footer {
}

/* --------------------------------------------------------------------------
16. Dark mode surfaces
16. Glossary
-------------------------------------------------------------------------- */

/* Glossary entries that have more than one name.
An entry such as "IMU" / "Inertial Measurement Unit" has to be written as
consecutive terms in the glossary directive, so that each name gets its own
anchor and can be linked with :term:. (Writing them comma-separated on one
line would make the comma part of a single term name, and :term:`IMU` would
then fail to resolve.) Sphinx renders each name as its own <dt>, so join
them onto one line here, separated by a slash. */
.rst-content dl.glossary > dt {
display: inline;
}

.rst-content dl.glossary > dt + dt::before {
content: "/";
margin: 0 0.45em; /* equal space either side of the slash */
font-weight: 400;
opacity: 0.55;
}

/* Each name carries a permalink that the theme leaves in the layout when it is
not hovered (opacity: 0, not display: none), so its glyph plus its 0.5em
margin would open a gap between the name and the slash. Drop the margin, and
keep the permalink itself only on the last name of an entry. */
.rst-content dl.glossary > dt .headerlink {
margin-left: 0.25em;
}

.rst-content dl.glossary > dt:has(+ dt) .headerlink {
display: none;
}

/* The definition still needs to start on its own line. */
.rst-content dl.glossary > dd {
display: block;
margin-top: 6px;
}

/* --------------------------------------------------------------------------
17. Dark mode surfaces
-------------------------------------------------------------------------- */

html[data-theme='dark'] body,
Expand Down Expand Up @@ -1384,7 +1424,7 @@ html[data-theme='dark'] .rst-content footer {
}

/* --------------------------------------------------------------------------
17. Responsive
18. Responsive
-------------------------------------------------------------------------- */

@media screen and (max-width: 1100px) {
Expand Down
4 changes: 2 additions & 2 deletions docs/source/ai/innovation_corner/innovation-corner.rst
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ you'd like to see.
to put this ability to good use in *FIRST* Tech Challenge?

In *FIRST* Tech Challenge, one of the first tasks teams have to do is to read
and understand the *FIRST* Tech Challenge Competition Manual. This can be a
and understand the *FIRST* Tech Challenge :term:`Competition Manual`. This can be a
very painstaking task, and even a skilled reader can miss subtle nuances
provided by the manual. However, an AI can break down and analyze the manual
in a matter of seconds, usually preserving the nuance provided in the
Expand Down Expand Up @@ -197,7 +197,7 @@ you'd like to see.

Examples of difficult questions:

* What is the maximum score for an alliance?
* What is the maximum score for an :term:`alliance <Alliance>`?
* Can ROBOTS pick up an opposing ALLIANCE'S SAMPLES?
* How many matches does a team play at an event?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Introduction

In the 2023-2024 season, `FIRST Tech Challenge has introduced
AprilTags <https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html>`__ into
the season-unique competition. AprilTags were developed by the April
the season-unique competition. :term:`AprilTags <AprilTag>` were developed by the April
Robotics Laboratory at the University of Michigan and are a visual
fiducial tagging system, built on a similar concept as QR codes, useful
for a wide variety of tasks including augmented reality, robotics, and
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ Understanding AprilTag Detection Values
Introduction
------------

When an AprilTag is detected by the new SDK vision processing system, the core
When an :term:`AprilTag` is detected by the new SDK vision processing system, the core
code returns a collection of raw data that is often not easily interpreted.
However, the data can be further transformed into a familiar frame of reference
to make it more easily utilized.

In the *FIRST* Tech Challenge SDK, the AprilTag API will present the Team
OpMode with a collection of translation and rotation values, called *ftcPose*,
:term:`OpMode` with a collection of translation and rotation values, called *ftcPose*,
that represent the Tag’s position in 3D space.

To understand how to interpret these values, it’s easier to consider a simpler
Expand Down Expand Up @@ -98,7 +98,7 @@ horizontally (parallel to the ground).

The AprilTag video preview image from the Camera Stream preview is shown below.
The left tag has an ID of 0 and the right tag has an ID of 1. This video is
being captured by a Logitech C920 Pro HD webcam, running at 648x480 resolution.
being captured by a Logitech C920 Pro HD :term:`webcam <Webcam>`, running at 648x480 resolution.
In this mode the camera has Field-Of-View (FOV) of 60 degrees. The physical
tags are 3.4” square.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ Overview
--------

This page will offer tips for *FIRST* Tech Challenge teams seeking more info
about specialized features of the new VisionPortal.
about specialized features of the new :term:`VisionPortal`.

Optional Metadata
-----------------

An AprilTag Library tag can store two optional **Metadata** fields (of
these Blocks/Java types):
An :term:`AprilTag` Library tag can store two optional **Metadata** fields (of
these :term:`Blocks`/Java types):

- ``fieldPosition``: tag location on the game field (``VectorF``)
- ``fieldOrientation``: tag orientation on the game field (``Quaternion``)
Expand All @@ -32,7 +32,7 @@ apply to **every game, every season**:
Image Credit: Phil Malone

With a tag’s **field position** and **orientation** specified in advance
as Metadata, the tag’s pose data could be used by an advanced OpMode to
as Metadata, the tag’s pose data could be used by an advanced :term:`OpMode` to
calculate the robot’s position on the field. This conversion math, an
exercise for the reader, can allow a robot to use the tag’s pose data
in real-time to navigate to the desired location on the field.
Expand All @@ -41,10 +41,10 @@ Raw Pose Values
---------------

The frame of reference described at the **AprilTag Reference Frame**
page is provided **by default** in the new 8.2 SDK.
page is provided **by default** in the new 8.2 :term:`SDK`.

Advanced teams may prefer to perform their own pose calculations, based
on **raw values** from the AprilTag/EasyOpenCV pipeline.
on **raw values** from the AprilTag/:term:`EasyOpenCV` pipeline.

Those raw values are available to Java and Blocks programmers. The Java
version is shown here:
Expand Down Expand Up @@ -111,7 +111,7 @@ Other features of this Test OpMode include:
- All controls are independent, to explore the combinations and their effect on
frame rate (FPS).
- The previews can be observed, and detections/recognitions can be monitored
via annotations and Telemetry.
via annotations and :term:`Telemetry`.
- Frame rate is provided in LiveView and DS Telemetry.
- The Telemetry functions include an alternate for getting **all** or **only
fresh** detections/recognitions.
Expand All @@ -131,7 +131,7 @@ zoom in.
VisionPortal Example OpMode

The OpMode uses "Webcam 1", or change ``USE_WEBCAM`` for a built-in RC phone
camera. For Control Hub, set up an HDMI monitor or `scrcpy
camera. For :term:`Control Hub`, set up an HDMI monitor or `scrcpy
<https://github.com/Genymobile/scrcpy>`__. Follow the DS gamepad button guide.

At that **VisionPortal CPU and Bandwidth** page, four tools mentioned were not
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
AprilTag ID Codes
=================

After the AprilTag Processor and VisionPortal have been **initialized**, your
OpMode can begin tag detection.
After the :term:`AprilTag` Processor and :term:`VisionPortal` have been **initialized**, your
:term:`OpMode` can begin tag detection.

Let's start with the simple task of retrieving the **ID code** of a detected
AprilTag. For tag family 36h11, the numeric ID code ranges from 0 to 586. The
Expand Down Expand Up @@ -88,7 +88,7 @@ detection, ending with only the **last tag's value**.
By default, the FTC SDK recognizes the ID code of **any** 36h11 AprilTag, even
if the OpMode did not place that tag in the AprilTag Library. Some tags are
placed in the Library automatically by the SDK: for example, ID codes 583-586
used by Sample OpModes.
used by :term:`Sample OpModes <Sample OpMode>`.

An OpMode can also place other tags in a Library, to supplement or overwrite
default tags. This is covered further at the **Library** page.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,25 @@ especially those programming in Java.

Photo Credit: Mike Silversides

Those POWERPLAY teams, including those using FTC Blocks, learned how to use
Those POWERPLAY teams, including those using FTC :term:`Blocks`, learned how to use
several resources:

- AprilTag: an open-source technology for evaluating
- :term:`AprilTag`: an open-source technology for evaluating
formatted images
- EasyOpenCV: a *FIRST* Tech Challenge-optimized interface with OpenCV, an
- :term:`EasyOpenCV`: a *FIRST* Tech Challenge-optimized interface with :term:`OpenCV`, an
image processing library
- myBlocks: custom Blocks created in OnBot Java (OBJ)
- myBlocks: custom Blocks created in :term:`OnBot Java` (OBJ)

Now these three areas are provided, or bundled, in the *FIRST* **Tech Challenge
Software Development Kit (SDK), starting with version 8.2**.

Namely, key capabilities of **AprilTag** and **EasyOpenCV** are
available to the Robot Controller (RC) and Driver Station (DS) apps,
available to the :term:`Robot Controller` (RC) and :term:`Driver Station` (DS) apps,
without special downloads. And AprilTag features are included in **FTC
Blocks**, without needing custom myBlocks.

The AprilTag features work on webcams and on Android RC phone cameras.
A single OpMode can use AprilTag and Color Processing.
The AprilTag features work on :term:`webcams <Webcam>` and on Android RC phone cameras.
A single :term:`OpMode` can use AprilTag and Color Processing.

In *FIRST* Tech Challenge, AprilTag is ready for the spotlight!

Expand Down Expand Up @@ -85,7 +85,7 @@ recognizes and overlays the ID code onto the image (small blue rectangle
Stream output showing the detected tag ID 02

The above image shows a camera preview image, called LiveView, from a
Robot Controller device (Control Hub or RC phone).
Robot Controller device (:term:`Control Hub` or RC phone).

The AprilTag family 36h11 has a capacity of 587 ID codes. To see them
all, follow this link:
Expand Down Expand Up @@ -179,8 +179,8 @@ The SDK supports **multiple cameras**, switchable or simultaneous. This
can help if the robot changes direction, or you wish to navigate using another
AprilTag (or Color Processing).

Other sensors can also be used for navigation, such as drive motor encoders,
REV Hub IMU, deadwheel encoders, color/distance sensors, ultrasonic sensors,
Other :term:`sensors <Sensor>` can also be used for navigation, such as drive motor :term:`encoders <Encoder>`,
REV Hub :term:`IMU`, deadwheel encoders, color/distance sensors, ultrasonic sensors,
and more.

It’s also possible to evaluate **non-AprilTag images** from the same camera
Expand Down Expand Up @@ -268,7 +268,7 @@ The SDK provides AprilTag **rotation** data as follows:

- **Pitch** is the measure of rotation about the X axis
- **Roll** is the measure of rotation about the Y axis
- Heading, or **Yaw**, is the measure of rotation about the Z axis
- :term:`Heading`, or **Yaw**, is the measure of rotation about the Z axis

Rotation follows the traditional right-hand rule: with the thumb
pointing along the positive axis, the fingers curl in the direction of
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
AprilTag Library
================

For a *FIRST* Tech Challenge match, your OpMode has a known set of AprilTags to
For a *FIRST* Tech Challenge :term:`match <Match>`, your :term:`OpMode` has a known set of :term:`AprilTags <AprilTag>` to
detect. They are preloaded by default or specified by you, with or without
custom tags.

Expand Down Expand Up @@ -52,7 +52,7 @@ Default Libraries

The SDK uses two core Libraries of predefined AprilTags:

- tags used only in Sample OpModes
- tags used only in :term:`Sample OpModes <Sample OpMode>`
- tags used only in the Robot Game (competition)

The first Library, called ``SampleTagLibrary``, is available now with
Expand Down Expand Up @@ -120,7 +120,7 @@ tags.

Completing Builder

These are the first and last Blocks in the ``AprilTagProcessor.Builder``
These are the first and last :term:`Blocks` in the ``AprilTagProcessor.Builder``
toolbox. The remaining Blocks are used to set optional features of the
Processor. Here we are setting only the Library.

Expand Down
Loading
Loading