> For the complete documentation index, see [llms.txt](https://gilmour.online/compsci/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gilmour.online/compsci/competitive-robotics/software-team.md).

# Software Team

Our team uses Java to program our robots. Most of the foundational skills — classes, objects, loops, conditionals — are covered in AP Computer Science. If you've taken APCS, you already have the background you need to start contributing.

{% embed url="<https://github.com/GA-Moonshots/Moonbase>" %}

## What's In This Section

**Command Pattern** — The design philosophy behind all of our robot code. Start here. It explains why we structure code the way we do before showing you how.

**Example Command** — A walkthrough of the four lifecycle methods every command implements: constructor, initialize, execute, isFinished, and end.

**Subsystem** — How we group hardware (motors, servos, sensors) into logical units that commands can claim and control.

**Running Your Code** — How OpModes kick off the robot, how buttons get bound to commands, and how autonomous routines are sequenced.

**Pedro's Follower** — Our autonomous navigation system. Covers the coordinate system, path building, the Pinpoint odometry computer, tuning, and visualization via Panels Dashboard.

**Under the Hood** — For curious programmers only. Explains how Robot.java and CommandOpMode connect FTC's LinearOpMode to our command scheduler.

## Setup

### Android Studio

Android Studio is the IDE we use to write, build, and deploy robot code to the Control Hub. Install the version recommended by FIRST — the FTC SDK targets a specific SDK level, so newer Android Studio versions occasionally cause build issues.

{% hint style="info" %}
Download at [developer.android.com/studio](https://developer.android.com/studio). After installing, open the project by pointing Android Studio at the repo root folder. Let Gradle sync fully before trying to build. If Gradle fails on first sync, check that your JDK version matches the SDK requirements.
{% endhint %}

### GitHub Desktop

GitHub Desktop is how we sync code between the team laptop and our GitHub repository. You don't need to know Git commands — the app handles commits, pushes, and pulls visually.

{% hint style="info" %}
Download at [desktop.github.com](https://desktop.github.com). Sign in with your GitHub account and clone the Moonbase repo.
{% endhint %}

## Our Workflow

We keep version control simple. The team shares a single laptop for most coding sessions, which means we rarely have merge conflicts. When you finish a change, open GitHub Desktop, write a short commit message describing what you did, and push to main. Pull before you start coding if anyone else has pushed since your last session.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gilmour.online/compsci/competitive-robotics/software-team.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
