👨‍💻
ARC Software
  • Introduction
  • The FTC Control System
  • Setting up the Environment
  • The OpMode
    • Introducing the OpMode
    • OpMode vs LinearOpMode
    • Telemetry and Debugging
    • Stopping LinearOpModes
  • Hardware Interaction
    • Hardware Configuration
    • DcMotor
    • Servos
    • Sensors
    • Inertial Measurement Unit
  • TeleOp
    • FTC Match Structure
    • Accessing Gamepads
    • The TeleOp Period
    • Finite State Machines
  • Autonomous
    • The Autonomous Period
  • Virtual Robot Environment
    • Setting Up The Virtual Robot Environment
    • Programming a Mecanum Drive
  • Working with a Team
    • Integrate with your Team
    • Using Git Effectively
Powered by GitBook
On this page
  • General Programming Resources
  • FTC Programming Resources
  • FTC Library Resources
  • Other Resources

Was this helpful?

Introduction

Welcome! Let's make your robot smart.

NextThe FTC Control System

Last updated 3 years ago

Was this helpful?

Heads up! This documentation website has been deprecated. Please visit the site for more up-to-date information.

Welcome to the world of FTC Software! By programming your team's robot for even part of a season, you will surely bring your critical thinking, engineering, and problem solving skills to the next level. It can also direct you in your career or college major searching: from collaborative engineering to advanced control theory, coding in the FTC gives you a preview of the professional industry of innovative robotics and the application of programming skills in the physical world. Although learning the FTC coding process may seem like a daunting task, this guide is here to simplify the process and guide you (and your team) to a working robot ready to dominate the competition.

This online guide serves as a parallel resource to the lessons that the Chief Software Officers host during club meetings. The lessons complement this guide by demonstrating the presented concepts using examples on real hardware.

This guide is also meant to be referenced frequently during the competition season. It includes many takeaways from the club's past mistakes that help you troubleshoot your code. It identifies some of the principles and priorities that your code should follow. It explains the social implications of programming for FTC, including the phenomena of working with a team of mostly hardware specialists. To summarize, it prepares you to produce competitive, reliable, maintainable code for a FTC robot.

Ready to get started? Let us introduce you to the FTC Control System.

General Programming Resources

This guide assumes that you have sufficient background knowledge in computer science fundamentals and Java syntax. To supplement your knowledge in those fields and your experience in ARC, the following resources are available:

  • (recommended)

FTC Programming Resources

Your knowledge of FTC software should not be limited by the scope of this guide. The following resources can help you understand more aspects of programming in FTC. If you are new to coding at ARC, this is a great place to start. Just pick a spot that best reflects your current learning progress and start experimenting.

  • is a full (but concise) textbook that introduces newcomers to computer science through Java. This book includes concepts that are not relevant to programming at ARC, but it can be a good option if you want to program outside of ARC or if you aren't sure about something in Java.

  • is an invaluable guide for FTC teams that covers nearly everything teams need to know, including awards, mechanical concepts, and programming. It offers a rather minimalistic introduction to Java that may not lead to a full understanding of computer science. This is a good option if you want to program at ARC exclusively.

  • is a much more comprehensive guide to FTC software than its section in Game Manual 0, and its introduction to concepts in Java is more solid as well. We recommend this resource for everyone.

  • The ARC Software Codio course contains questions that assess your knowledge of the topics covered in this website, ARC Software. We try to make it more interesting than rote memorization and recall by asking you to examine the club's past code and diagnose problematic code segments. Ask a member of the ARC Board for information on how to join this course.

FTC Library Resources

To save ourselves time and enhance our competitive performance, we use a few third-party libraries (external code modules) to complement the FTC SDK. To understand how each library works, check out the following guides.

  • Road Runner is an advanced motion planning library for FTC. We mainly use it to improve our robot's ability to navigate during autonomous.

  • FTCLib is an all-encompassing library that includes convenient abstractions for various needs, including controller reading, Mecanum drive and localization, and computer vision.

Other Resources

(FTCLib is modeled after WPILib)

offers neat extra features that give us more control over the REV Expansion Hubs (see ).

is a neat webpage that shows the robot's detected position on the field and can graph various parameters as well as change public static variables on the fly.

is our own library for code that applies to all teams. It contains a Mecanum drive implementation and support for various unit conversions.

GitHub Pages
The FTC Control System
Think Java by Allen Downey and Chris Mayfield
A beginner's guide to Git
Think Java
Game Manual 0
Robotics Java
Learn Road Runner
Road Runner docs
FTCLib
WPILib tutorials
FTC Dashboard
ARC-Core
Official Documentation
Official FTC SDK Javadocs
Official Robot Controller Repository Wiki
Official Java Tutorials Playlist
Intro to Control Theory by Wesley Aptekar-Cassels
Controls Engineering in FRC by Tyler Veness
FTC Discord Server
REVExtensions2
The FTC Control System