{"id":934,"date":"2025-10-01T14:05:58","date_gmt":"2025-10-01T21:05:58","guid":{"rendered":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/?page_id=934"},"modified":"2025-10-16T08:20:41","modified_gmt":"2025-10-16T15:20:41","slug":"programming-guidance","status":"publish","type":"page","link":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/programming-guidance\/","title":{"rendered":"Programming Guidance"},"content":{"rendered":"<div  class='flex_column av-6p4i6-b4f7c8a43eccfe8887067fa666b9c985 av_one_full  avia-builder-el-0  avia-builder-el-no-sibling  first flex_column_div  '     ><section  class='av_textblock_section av-mg8h7f0m-b44bec07d6f6d78228fb3a7482f85d1e '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><h1>Programming Guidance<\/h1>\n<hr \/>\n<h3><b>VEX Programming Software<\/b><\/h3>\n<p><b>PROS<\/b><span style=\"font-weight: 400;\">: Leading Open-source C\/C++ development for VEX V5 (and Cortex), developed by Purdue SIGBots.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Provides functions to control the V5 brain and connected devices.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Getting Started:<\/b><a href=\"https:\/\/pros.cs.purdue.edu\/v5\/getting-started\/index.html#installing-pros\"> <span style=\"font-weight: 400;\">PROS Installation Guide<\/span> <\/a><\/li>\n<\/ul>\n<p><b>Why choose PROS?<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Open-source and highly customizable, Vex Code Pro (another option) is no longer being updated<\/span><\/li>\n<\/ul>\n<h3><b>Why Discord?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Robotics Discord communities are invaluable for support, collaboration, and inspiration. Benefits include:<\/span><\/p>\n<ul>\n<li><b>Quick Answers:<\/b><span style=\"font-weight: 400;\"> Immediate help with coding bugs, logic errors, or setup issues.<\/span><\/li>\n<li><b>Peer Review:<\/b><span style=\"font-weight: 400;\"> Share code snippets and get feedback from experienced programmers.<\/span><\/li>\n<li><b>Live Collaboration:<\/b><span style=\"font-weight: 400;\"> Work through problems in real-time via voice\/text.<\/span><\/li>\n<li><b>Advice from Veterans:<\/b><span style=\"font-weight: 400;\"> Mentors and developers (like LemLib or EZ-Template) provide guidance.<\/span><\/li>\n<li><b>Pinned Resources:<\/b><span style=\"font-weight: 400;\"> Easy access to documentation, tutorials, and example code.<\/span><\/li>\n<li><b>Code sharing and inspiration: <\/b><span style=\"font-weight: 400;\">Users often post GitHub repos, snippets, or screenshots of innovative implementations like auto selectors, odometry, or PID control.<\/span><\/li>\n<li><b>Build your network:<\/b><span style=\"font-weight: 400;\"> Connect with other teams, potential mentors, or even judges and VEX community leaders.<\/span><\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th><b>Recommended VEX Discord Communities for Code:<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/discord.gg\/XQXGQdz4Vb\"><span style=\"font-weight: 400;\">EZ Template Support Server<\/span> <\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/discord.gg\/HkmagdceNU\"><span style=\"font-weight: 400;\">LemLib Template Support Server<\/span> <\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/discord.gg\/4m5BQ8ku26\"><span style=\"font-weight: 400;\">VEX Robotics Competition Software Channel<\/span><\/a><\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><b>Templates<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">A <\/span><b>VEX code template<\/b><span style=\"font-weight: 400;\"> is a pre-written structure or framework that simplifies programming your robot by handling common tasks and setup for you.<\/span><\/p>\n<p><b>Important Policy:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\">The REC Foundation emphasizes that students must <\/span><b>understand and be able to explain any code they use<\/b><span style=\"font-weight: 400;\">, even from templates or external libraries. Blindly copying code violates the educational goals of the program.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/kb.roboticseducation.org\/hc\/en-us\/articles\/5449868745367-Student-Centered-Policy\"><span style=\"font-weight: 400;\">Student-Centered Policy<\/span> <\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/kb.roboticseducation.org\/hc\/en-us\/articles\/8453125710231-Printable-PDF-version-of-the-Guide-to-Judging\"><span style=\"font-weight: 400;\">Guide to Judging: EN3<\/span><\/a><\/li>\n<\/ul>\n<p><b>Trade-offs:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Templates save time and provide advanced features (auton routines, drive control, sensor integration).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Over-reliance can limit understanding of concepts like PID, odometry, and asynchronous tasks.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Best practice: Use a Template, study the source code, understand the architecture, and gradually extend or replace components with your own code.<\/span><\/li>\n<\/ul>\n<h3><b>Recommended Templates<\/b><\/h3>\n<table>\n<tbody>\n<tr>\n<td>\n<h3><span style=\"font-weight: 400;\">EZ-Template (PROS)<\/span><\/h3>\n<p><span style=\"font-size: 12pt;\"><a href=\"https:\/\/ez-robotics.github.io\/EZ-Template\/\"><span style=\"font-weight: 400;\">EZ Template Docs<\/span><\/a><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; font-size: 12pt;\">Documentation is clear, and community support is strong, making it accessible to both new and experienced teams.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; font-size: 12pt;\">One of the most feature-rich templates, EZ-Template offers a broad range of tools that enhance coding efficiency and usability including support for both relative and absolute movements, an integrated autonomous selector, and built-in functions for motion tuning and drive behavior control.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><span style=\"font-weight: 400;\">The Ez Docs also explain how to use<\/span><b> Github<\/b><span style=\"font-weight: 400;\">, an essential version history control tool: <\/span><a href=\"https:\/\/ez-robotics.github.io\/EZ-Template\/tutorials\/github\"><span style=\"font-weight: 400;\">GitHub &amp; Tutorials<\/span><\/a><\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td>\n<h3><span style=\"font-weight: 400;\">JAR-Template (VEXcode Pro)<\/span><\/h3>\n<p><span style=\"font-weight: 400; font-size: 12pt;\">Another recommended template is JAR template.\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/jacksonarearobotics.github.io\/JAR-Template\/docs\"><span style=\"font-weight: 400;\">Docs<\/span><\/a><\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400; font-size: 12pt;\">Differences from EZ template<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; font-size: 12pt;\">Less features, but easier to understand source code<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; font-size: 12pt;\">Uses VEXcode Pro instead of PROS.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\"><span style=\"font-weight: 400;\">Even if you plan on using EZ template, I highly <\/span><span style=\"font-weight: 400;\">recommend seeing the source code behind JAR, as I found it to be the most intuitive and easy to understand<\/span><span style=\"font-weight: 400;\"> source code for concepts such as PIDs and Odometry.<\/span><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/github.com\/JacksonAreaRobotics\/JAR-Template\/tree\/main\"><span style=\"font-weight: 400;\">JAR Source Code<\/span><\/a><\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><b>Coding Resources<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Below are some coding resources to learn\/understand these concepts used in coding templates:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<h3><span style=\"font-weight: 400;\">General \/ PROS<\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/pros.cs.purdue.edu\/v5\/api\/cpp\/index.html\"><span style=\"font-weight: 400;\">PROS API Reference<\/span><\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/pros.cs.purdue.edu\/v5\/getting-started\/index.html#installing-pros\"><span style=\"font-weight: 400;\">Getting Started Guide<\/span><\/a><\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400;\">Control Systems<\/span><\/h3>\n<p><span style=\"font-size: 12pt;\"><b>PID Control:<\/b><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/orange-depot.github.io\/posts\/Basic-PID\/\"><span style=\"font-weight: 400;\">Basic PID<\/span><\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/orange-depot.github.io\/posts\/Preventing-Integral-Windup\/\"><span style=\"font-weight: 400;\">Preventing Integral Windup<\/span><\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/georgegillard.com\/resources\/documents\"><span style=\"font-weight: 400;\">George Gillard PID Docs<\/span><\/a><\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\"><b>Odometry:<\/b><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/wiki.purduesigbots.com\/software\/odometry\"><span style=\"font-weight: 400;\">PurdueSIGbots Wiki<\/span><\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/www.mathsisfun.com\/polar-cartesian-coordinates.html\"><span style=\"font-weight: 400;\">Polar &amp; Cartesian coordinates<\/span><\/a><\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\"><b>Pure Pursuit:<\/b><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/wiki.purduesigbots.com\/software\/control-algorithms\/basic-pure-pursuit\"><span style=\"font-weight: 400;\">PurdueSIGbots Guide<\/span><\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/www.roboticsisez.com\/projects\/pure-pursuit\/\"><span style=\"font-weight: 400;\">Robotics ISE<\/span><\/a><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/www.chiefdelphi.com\/t\/paper-implementation-of-the-adaptive-pure-pursuit-controller\/166552\"><span style=\"font-weight: 400;\">Chief Delphi Paper<\/span> <\/a><\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 12pt;\"><b>Boomerang Controller:<\/b><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/orange-depot.github.io\/posts\/Boomerang-Controller\/\"><span style=\"font-weight: 400;\">Orange Depot Guide<\/span><\/a><\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400;\">Team Tutorials<\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-size: 12pt;\"><a href=\"https:\/\/youtube.com\/playlist?list=PLGadt7ggrunwnJjiQv-7Nc3IBUHDh1rcb&amp;si=-VfwrwfVbaZo8UqB\"><span style=\"font-weight: 400;\">Team Echo Playlist<\/span><\/a><\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div style=\"background-color: #2358ad; color: white; padding: 7px 15px; border-radius: 4px; margin-top: 15px; text-align: right;\">The content for this page was provided by <strong style=\"color: white;\">Zane Radawiec.<\/strong><\/div>\n<\/div><\/section><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"tags":[],"class_list":["post-934","page","type-page","status-publish","hentry"],"publishpress_future_action":{"enabled":false,"date":"2026-04-15 20:12:57","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"post_tag","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/pages\/934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/comments?post=934"}],"version-history":[{"count":4,"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/pages\/934\/revisions"}],"predecessor-version":[{"id":1022,"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/pages\/934\/revisions\/1022"}],"wp:attachment":[{"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/media?parent=934"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comoxvalleyschools.ca\/robotics71\/wp-json\/wp\/v2\/tags?post=934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}