Introduction

Welcome! Let's make your robot smart.

Heads up! This documentation website has been deprecated. Please visit the GitHub Pages 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.

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:

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.

  • Think Java 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.

  • Game Manual 0 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.

  • Robotics Java 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.

  • REVExtensions2 offers neat extra features that give us more control over the REV Expansion Hubs (see The FTC Control System).

  • FTC Dashboard 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.

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

Other Resources

Last updated