ÁREA PROGRAMACIÓN
Semana #1 (18 mayo) - Instalación de programas e introducción a Java:
- Introducción a programación orientada a objetos
- Cómo funciona el polimorfismo
- Cómo las clases pueden representar objetos reales
- Cómo las clases nos permiten cambiar y modificar otras clases
- Instalación de VSCode, Java, Android Studio, Git, etc.
- Cómo funciona VSCode; creación de archivos y folders; instalación de extensiones de VSCode
- Cómo instalar el JDK de Java
- Cómo entrar a git
- Funcionamiento de git add, git commit y git push
- Funcionamiento de Android Studio y cómo se integra con la app de FIRST (el código de FTC)
- Introducción a Java
- if, for, while, operadores, unarios, etc.
- Troubleshooting de instalación.
- Checar el acceso al git y que puedan dar git commit y git push
Semana #2 (25 mayo), actividad Types of data:
- Instancia varios tipos de datos, 4 vistos en clase y 4 que busquen en internet
- Visualización de diferentes tipos de datos (boolean, double, int, float, string, etc.)
- Introducción a sensores y el tipo de información que regresan.
- Time of flight, Color, tacto, limit switch, potenciómetro
- Saber si estos sensores regresan double o boolean, eg. el de color regresa (int, int, int) y el de tacto es booleano.
- Subir las actividades realizadas a GitHub
- Empezar la familiarización con git y github, cómo se comportan, qué funciones tienen
- Como hacer “commit” y “push”
Semana #3 ( 1° junio) , Introducción a Object Oriented Programming:
- Ver Clases, subclases, métodos, herencias, polimorfismo (las clases pueden heredar tener métodos que las puedes transformar), etc.
- Profundizar en el conocimiento de la syntax y cómo funciona en Java el polimorfismo, como las clases representan en código las cosas
Semana #4 (8 junio) Primera actividad de OOP:
- Crear una clase Figura que contenga las funciones calculateArea y definir posición, que de esto se creen dos subclases que hereden de Figura y que estas sobreescriban la función de calculateArea, pero que la de definir posición las dejen igual (y hacer el paralelismo con un mecanismo real).
- La herencia es una de las funciones más fundamentales de OOP ya que permite la simplificación de código para que no se tenga que escribir el mismo código varias veces y que los cambios se vean reflejados en varios lugares al mismo tiempo.
- La familiarización con qué se puede hacer con lo que se hereda es muy importante.
- Subir a git
- continuar con la familiarización de git
Semana #5 (15 Junio) , Introducción a Electrónica simple:
- Cómo se conectan los motores, sensores, servos, electrónicos de FTC.
- El ecosistema de FTC está hecho para que nada se pueda conectar mal. Si el cable no está entrando a su conector entonces es muy probable que el cable no vaya ahí. Todo tiene texto indicando donde se puede conectar.
- Como se cablea el Control Hub y todo el ecosistema de FTC (esquemáticas de REV).
- Configurar el Control Hub y Expansion Hub, mapear dónde están conectados los motores, servos, sensores, etc.
- Las control hubs cuentan con configuraciones internas por si se cambia la Control Hub hay cambios regulares al cableado.
- La configuración relaciona los puertos físicos con los nombres utilizados en código eg. al puerto de motor le puedes poner “intake” y ya en código crear el objeto de motor y pasar el id “intake”.
- Configurar la Driver Station, la cual puede ser un Drive´s Hub o un teléfono Android.
- Hay diferentes versiones del codigo https://github.com/FIRST-Tech-Challenge/FtcRobotController/releases se publican aquí y son el FTCRobotController que es la aplicación de código de robot en si y la FTCDriverStation. Estas necesitan ser la misma versión y ser configuradas.
Semana #6 (22 junio) , Actividad de Circuitos en TInkercad:
- La primera parte es hacer un circuito simple donde un botón haga que un motor gire.
- La segunda parte es hacer un circuito en paralelo y uno en series, que en total se utilicen 3 leds, 3 motores, y un potenciómetro que controle la velocidad de uno de los motores.
Semana #7 (29 junio), Introducción a Robots:
- Familiarización con el mundo de los robots de FIRST, FTC
- Wolfpack Machina, Don’t Blink, Technical Difficulties, Up a creek, Delta Force, RoboKing, Techno Wizards, Gear Masters. Esta es una lista de equipos muy fuertes de FTC, familiarizar qué mecanismos tienen, quiénes son.
- Son inspiración.
- Presentar tipo de mecanismos, retos pasados, tipos de chasis que se utilizan (H drive, kiwi drive, crab drive, tanque, mecanum, etc.)
Semana #7 ( 6 julio), Actividad de abstracción de Robot:
- Abstraer y sintetizar los diferentes mecanismos del robot de FTC de 2022
- Escribir en papel con unidad, qué es, tipo de dato y tipo de mecanismo se utiliza para poder controlar el mecanismo en código. eg. Torreta, radianes, ángulo, double, posición.
Semana #8 ( 13 julio) , Estructura de Robot de FTC:
- Presentar estructura de código de FTC y FIRST
- La estructura interna del código, como el EctoOpMode crea un CommandScheduler y un MechanismManager y cómo los mecanismos se utilizan dentro de ellos.
- Ver librerías internas de Botbusters y FIRST
- Qué cosas incluye first. eg. Motor, SimpleServo, MotorEX en FTCLib.
Semana #9 (20 julio) , Actividad de Mecanismos:
- Hacer un mecanismo simple estilo un intake, etc.
- Función que permita que intake.set(double prcnt);
- Debe incluir el extends EctoMechanism
Semana #10 ( 27 julio) , PID:
- Introducción a PID
- Qué hace la P
- Qué hace la D
- Qué hace la I
- Cómo se reflejan esos valores en una gráfica
- Introducción a PID dentro de FTCLib y ecosistema FTC
- Los PIDs de FTCLib, cómo funcionan los RateLimiters para poder hacer un ProfiledPID y controlar la aceleración y velocidad de un mecanismo.
Semana #10 ( 27 julio) , Actividad PID:
- Hacer un mecanismo que controle un motor como un servo utilizando un PID poniendo en los botones de un mando de videojuegos diferentes objetivos.
- Esto quita las limitantes del servo que solo aceptan inputs dentro de un rango de 270 grados, a diferencia un motor con PID te permite poner cualquier posición y controlar también su posición y velocidad y aceleración.
- En el mando A manda al motor a 90 grados, X a 0 grados, B a 180 grados, Y a -90 grados.
Semana #11 y 12 ( 3 y 10 agosto), Proyecto final:
- Integración de los equipos de mecánica y programación y que entre los dos diseñen manufacturen, armen, programen y calibren un robot.
- Si se puede, implementar el uso de AprilTags como sistema de visión del Robot.
- Tiene que contar con un control teleoperado utilizando los joystick y botones del mando.