NOTICE
Este repositorio contiene el SDK público de FTC para la temporada de competición SKYSTONE (2019-2020).
Anteriormente este proyecto de software estaba alojado aquí. Los equipos que compiten en el desafío SKYSTONE deben usar este nuevo repositorio SKYSTONE en lugar del repositorio ftc_app más antiguo (y que ya no se actualiza).
¡Bienvenido!
Este repositorio de GitHub contiene el código fuente que se utiliza para crear una aplicación Android que controla un robot de competición FIRST Tech Challenge. Para usar este SDK, descargue/clone el proyecto completo en su computadora local.
Primeros pasos
Si eres nuevo en robótica o en el FIRST Tech Challenge, te recomendamos revisar el Tutorial de Bloques de FTC para familiarizarte con el uso del sistema de control:
Tutorial en línea de Bloques de FTC
Incluso si eres un programador avanzado de Java, es útil comenzar con el tutorial de Bloques de FTC y luego migrar a la Herramienta OnBot Java o a Android Studio después.
Descarga del proyecto
Si eres programador de Android Studio, hay varias formas de descargar este repositorio. Ten en cuenta que si usas Bloques o la Herramienta OnBot Java para programar tu robot, no necesitas descargar este repositorio.
- Si eres usuario de git, puedes clonar la versión más reciente del repositorio:
git clone https://github.com/FIRST-Tech-Challenge/SKYSTONE.git
-
O, si lo prefieres, puedes usar el botón "Download Zip" disponible en la página principal del repositorio. Descargar el proyecto como archivo .ZIP mantendrá un tamaño de descarga manejable.
-
También puedes descargar la carpeta del proyecto (como archivo .zip o .tar.gz) desde la subsección Downloads de la página de Lanzamientos de este repositorio.
Una vez que hayas descargado y descomprimido (si es necesario) tu carpeta, puedes usar Android Studio para importarla ("Import project (Eclipse ADT, Gradle, etc.)").
Obtener ayuda
Documentación y tutoriales de usuario
FIRST mantiene documentación en línea con información y tutoriales sobre cómo usar el software y el sistema de control de robot del FIRST Tech Challenge. Puedes acceder a esta documentación mediante el siguiente enlace:
Documentación en línea de SKYSTONE
Ten en cuenta que la documentación en línea es un documento "perenne" que se actualiza y edita constantemente. Contiene la información más reciente sobre el software y el sistema de control del FIRST Tech Challenge.
Material de referencia de Javadoc
La documentación de referencia de Javadoc para el SDK de FTC ya está disponible en línea. Haz clic en el siguiente enlace para ver la documentación de Javadoc del SDK de FTC como un sitio web en vivo:
Documentación de Javadoc de FTC
La documentación del SDK de FTC también está incluida en este repositorio. Hay una subcarpeta llamada "doc" que contiene varias subcarpetas:
- La carpeta "apk" contiene los archivos .apk de las aplicaciones FTC Driver Station y FTC Robot Controller.
- La carpeta "javadoc" contiene la documentación de usuario de JavaDoc para el SDK de FTC.
Foro de usuarios en línea
Si tienes preguntas técnicas sobre el sistema de control o el SDK de FTC, visita el foro de tecnología de FTC:
Foro de tecnología de FTC
Versión 5.2 (20190905-083227)
- Corrige los márgenes demasiado anchos en las actividades de configuración y la ubicación del nuevo botón de configuración.
- Añade los datos de objetivos de imagen de Vuforia para Skystone.
- Incluye modos de operación de muestra de Navegación Vuforia Skystone (Java).
- Incluye modos de operación de muestra de Navegación Vuforia Skystone (Bloques).
- Añade el modelo de inferencia de TensorFlow (.tflite) para los elementos del juego Skystone.
- Incluye modos de operación de muestra de TensorFlow para Skystone (Java).
- Incluye modos de operación de muestra de TensorFlow para Skystone (Bloques).
- Elimina los modos de operación de muestra antiguos (específicos de temporada).
- Incluye soporte de 64 bits (para cumplir con los requisitos de Google Play).
- Protege contra OpModes bloqueados cuando se solicita un Reinicio del robot. (Gracias a FROGbots-4634) (problema #709 de ftc_app)
- Cambios relacionados con Bloques:
- Corrige un error con el código generado por bloques cuando el nombre del dispositivo de hardware es una palabra reservada de java o javascript.
- Muestra el código java generado para los bloques, incluso cuando faltan elementos de hardware en la configuración activa.
- Muestra un icono de advertencia cuando se usan bloques desactualizados de Vuforia y TensorFlow (problema #27 de SkyStone)
Versión 5.1 (20190820-222104)
- Define los parámetros PIDF predeterminados para los siguientes motores:
- REV Core Hex Motor
- REV 20:1 HD Hex Motor
- REV 40:1 HD Hex Motor
- Añade un botón de retroceso cuando se ejecuta en un dispositivo sin botón de retroceso del sistema (como un Control Hub).
- Permite que un REV Control Hub actualice el firmware de un REV Expansion Hub mediante USB.
- Corrige el problema #9 de SkyStone
- Corrige el problema #715 de ftc_app
- Evita clics adicionales del usuario de DS mediante el filtrado según el estado actual.
- Evita cambios incorrectos de estado de la interfaz de DS al recibir una nueva lista de OpModes desde RC.
- Añade soporte para REV Color Sensor V3.
- Añade un flujo de cámara DS con actualización manual para ver de forma remota los fotogramas de la cámara de RC.
- Para mostrar el flujo en la DS, inicializa pero no ejecutes un opmode con flujo habilitado, selecciona la opción Camera Stream en el menú de la DS y toca la imagen para actualizarla. Esta función se habilita automáticamente cuando se usan Vuforia o TFOD; no se requiere configuración adicional de RC en los casos de uso típicos. Para ocultar el flujo, selecciona el mismo elemento del menú nuevamente.
- Ten en cuenta que los gamepads están deshabilitados y el opmode seleccionado no se puede iniciar mientras el flujo está abierto, como medida de seguridad.
- Para usar flujos personalizados, consulta la documentación de la API para
CameraStreamServer#setSource y CameraStreamSource.
- Añade muchos sonidos de Star Wars a los recursos de RobotController.
- Añade el programa de muestra SKYSTONE Sounds Chooser.
- Reemplaza los sonidos de inicio, los tonos de conexión y los sonidos de error/advertencia por sonidos de Star Wars.
- Actualiza OnBot Java para usar un WebSocket para la comunicación con el robot.
- La página de OnBot Java ya no tiene que hacer una actualización completa cuando un usuario cambia de editar un archivo a otro.
Problemas conocidos:
- Flujo de cámara
- El flujo de cámara de Vuforia hereda los problemas presentes en la vista previa del teléfono (específicamente el problema #574 de ftc_app). Este problema no afecta al flujo de cámara de TFOD, aunque recibe fotogramas de Vuforia.
- La orientación de los fotogramas del flujo puede no coincidir siempre con la vista previa del teléfono. Por ahora, estos fotogramas se pueden rotar manualmente mediante un
CameraStreamSource personalizado si se desea.
- OnBotJava
- El botón de retroceso del navegador puede no funcionar siempre correctamente.
- Es posible que una compilación se ponga en cola pero no se inicie. La consola de compilación de OnBot Java mostrará una advertencia si esto ocurre.
- Un usuario podría no darse cuenta de que está editando un archivo diferente si cambia inadvertidamente de un archivo a otro, ya que este cambio ahora es fluido. El nombre del archivo abierto actualmente se muestra en la pestaña del navegador.
Versión 5.0 (compilada el 19.06.14)
- Soporte para el REV Robotics Control Hub.
- Añade un panel de vista previa de Java al editor de Bloques.
- Añade una nueva función de exportación sin conexión al editor de Bloques.
- Muestra el canal wifi en el círculo de Red en la Driver Station.
- Añade calibración para Logitech C270.
- Actualiza las herramientas de compilación y el SDK de destino.
- Cumplimiento con la infraestructura de permisos de Google (requerido después de la actualización de las herramientas de compilación).
- Keep Alives para mitigar el problema de escaneo wifi de Motorola. Ya no es necesario el sustituto de telemetría.
- Mejora el informe de errores de Vuforia.
- Corrige los problemas 621 y 713 de ftctechnh/ftc_app.
- Correcciones de errores y mejoras diversas.
Versión 4.3 (compilada el 18.10.31)
- Incluye las bibliotecas y archivos relacionados con TensorFlow que faltaban.
Versión 4.2 (compilada el 18.10.30)
- Incluye una corrección para evitar situaciones de interbloqueo con WatchdogMonitor que podrían provocar errores de comunicación USB.
- El error de comunicación parecía requerir que el usuario desconectara el cable USB y reiniciara la aplicación Robot Controller para recuperarse.
- robotControllerLog.txt tendría mensajes de error que incluían las palabras "E RobotCore: lynx xmit lock: #### abandoning lock:"
- Incluye una corrección para listar correctamente la dirección del módulo principal de un REV Robotics Expansion Hub en un archivo de configuración (.xml).
- Un error en las versiones 4.0 y 4.1 listaba incorrectamente la dirección del módulo de un dispositivo REV Robotics principal como "1".
- Si el módulo principal tenía un valor de dirección mayor que el módulo en cadena, este error impedía que el Robot Controller se comunicara con el Expansion Hub posterior.
- Añade el requisito de ACCESS_COARSE_LOCATION para permitir que una Driver Station con Android Oreo escanee dispositivos Wi-Fi Direct.
- Añade el repositorio google() a build.gradle porque aapt2 debe descargarse del repositorio google() a partir de la versión 3.2 del complemento de Android Gradle.
- Nota importante: los usuarios de Android Studio deberán estar conectados a Internet la primera vez que compilen el proyecto ftc_app.
- Se requiere conexión a Internet para la primera compilación, de modo que los archivos apropiados se puedan descargar del repositorio de Google.
- Los usuarios no deberían necesitar estar conectados a Internet para compilaciones posteriores.
- Esto también debería corregir el problema de compilación en el que Android Studio se quejaba de que "Could not find com.android.tools.lint:lint-gradle:26.1.4" (o algo similar).
- Añade soporte para el controlador de motor REV Spark Mini como parte del menú de configuración de un puerto servo/PWM en el REV Expansion Hub.
- Proporciona ejemplos para reproducir archivos de audio en un Op Mode.
- Cambios en la herramienta de desarrollo de Bloques
- Incluye una corrección para un problema con los bloques de Velocity que se informó en el foro de tecnología de FTC (subforo de programación de Bloques).
- Cambia el mensaje "Save completed successfully." a color blanco para que contraste con un fondo verde.
- Corrige la función "Download image" para que funcione si hay bloques de texto en el op mode.
- Introduce soporte para la tecnología TensorFlow Lite de Google para la detección de objetos en el juego 2018-2019.
- TensorFlow Lite puede reconocer Gold Mineral y Silver Mineral del juego 2018-2019.
- Se incluyen modos de operación de ejemplo en Java y Bloques para mostrar cómo determinar la posición relativa del bloque de oro (izquierda, centro, derecha).
Versión 4.1 (publicada el 18.09.24)
Los cambios incluyen:
- Corrección para evitar fallos cuando se utilizan anotaciones de configuración obsoletas.
- Cambio para permitir que el APK de FTC Robot Controller se actualice automáticamente mediante los scripts de actualización de FIRST Global Control Hub.
- Eliminadas las muestras para hardware no compatible / no legal.
- Mejoras en el bloque Telemetry.addData con el conector "text".
- Actualizada la lista de modos de operación de muestra de Bloques para incluir el ejemplo de Vuforia de Rover Ruckus.
- Actualiza el número de versión de la biblioteca del SDK.
Versión 4.0 (publicada el 18.09.12)
Los cambios incluyen:
-
Soporte inicial para cámaras compatibles con UVC
- Si la cámara UVC tiene un número de serie único, RC la detectará y enumerará por número de serie.
- Si la cámara UVC no tiene un número de serie único, RC solo admitirá una cámara de ese tipo conectada.
- Se incluyen ajustes de calibración para algunas cámaras (consulta TeamCode/src/main/res/xml/teamwebcamcalibrations.xml para obtener más detalles).
- El usuario puede cargar archivos de calibración desde la interfaz web Program and Manage.
- Las cámaras UVC parecen consumir una cantidad considerable de corriente eléctrica del bus USB.
- Esto no parece presentar problemas para el REV Robotics Control Hub.
- Esto sí parece crear problemas de estabilidad al usar algunas cámaras con un Robot Controller basado en teléfono Android.
- El equipo técnico de FTC está investigando opciones para mitigar este problema con los Robot Controllers basados en teléfono.
- Modos de operación de muestra actualizados de Navegación Vuforia y VuMark para demostrar cómo usar una cámara interna basada en teléfono y una cámara web UVC externa.
-
Soporte para un control de motor mejorado.
- El firmware 1.8 y superior del REV Robotics Expansion Hub admitirá un mecanismo de avance (feed forward) para el control de motor en lazo cerrado.
- El SDK de FTC se ha modificado para admitir coeficientes PIDF (proporcional, integral, derivativo y avance).
- La herramienta de desarrollo FTC Blocks se modificó para incluir bloques de programación PIDF.
- Métodos y variables antiguos relacionados con PID marcados como obsoletos.
- Los cambios relacionados con PIDF de la versión 1.8.x de REV proporcionan una forma más lineal y precisa de controlar un motor.
-
Inalámbrico
- Añadido soporte de 5 GHz para el cambio de canal inalámbrico en aquellos dispositivos que lo admiten.
- Probado con los teléfonos Moto G5 y E4.
- También probado con otros teléfonos (actualmente no aprobados) como el Samsung Galaxy S8.
-
Mejorado el soporte de actualización de firmware del Expansion Hub en la aplicación Robot Controller
- Cambios para hacer que el sistema sea más robusto durante el proceso de actualización de firmware (cuando se realiza a través de la aplicación Robot Controller).
- El usuario ya no tiene que desconectar un Expansion Hub posterior en cadena al actualizar el firmware de un Expansion Hub.
- Si el usuario está actualizando el firmware de un Expansion Hub a través de una conexión USB, no tiene que desconectar la conexión RS485 a otros Expansion Hubs.
Versión 3.6 (compilada el 17.12.18)
Los cambios incluyen:
- Cambios en Blocks
- Utiliza el software actualizado de Google Blockly para permitir a los usuarios editar sus op modes en dispositivos Apple iOS (incluidos iPad y iPhone).
- Mejora en la herramienta Blocks para manejar archivos de op mode corruptos.
- Los op modes autónomos ya no deberían volver a cambiarse a tele-op después de reabrirlos para editarlos.
- El sistema ahora puede detectar discrepancias de tipos durante el tiempo de ejecución y alertar al usuario con un mensaje en la Driver Station.
- Documentación javadoc actualizada del método setPower() para reflejar el rango correcto de valores (-1 a +1).
- Se modificó VuforiaLocalizerImpl para permitir la representación de fotogramas por parte del usuario
- Se agregó un método onRenderFrame() sobrescribible por el usuario, que es llamado por el método renderFrame() de la clase.
Versión 3.5 (compilada el 17.10.30)
Los cambios de la versión 3.5 incluyen:
- Se introdujo una corrección para evitar detenciones aleatorias de op mode, que pueden ocurrir después de que la aplicación Robot Controller se haya pausado y luego reanudado (por ejemplo, cuando un usuario apaga temporalmente la pantalla del teléfono del Robot Controller y luego la vuelve a encender).
- Se introdujo una corrección para evitar detenciones aleatorias de op mode, que anteriormente eran causadas por eventos aleatorios de desconexión de pares en la Driver Station.
- Corrige el problema por el cual los archivos de registro se cerraban al pausar el RC o la DS, pero no se volvían a abrir al reanudar.
- Corrige el problema de condición de carrera en el inicio/detención del manejador de batería (voltaje).
- Corrige el problema por el cual los op modes generados por Android Studio desaparecían de la lista de disponibles en ciertas situaciones.
- Corrige el problema por el cual OnBot Java no compilaba en REV Robotics Control Hub.
- Corrige el problema por el cual OnBot Java no compilaba si la fecha y hora del dispositivo Robot Controller se "retrocedía" (se establecía a una fecha/hora anterior).
- Se mejoró el mensaje de error en OnBot Java que se produce cuando falla el cambio de nombre de un archivo.
- Se eliminaron recursos innecesarios de los binarios android.jar utilizados por OnBot Java para reducir el tamaño final de la aplicación Robot Controller.
- Se agregó el bloque MR_ANALOG_TOUCH_SENSOR a la herramienta Blocks Programming Tool.
Versión 3.4 (compilada el 17.09.06)
Los cambios de la versión 3.4 incluyen:
- Se agregó la declaración telemetry.update() para la plantilla BlankLinearOpMode.
- Se renombraron los op modes de muestra de Blocks para que sean más coherentes con las muestras de Java.
- Se agregaron algunos op modes de muestra adicionales de Blocks.
- Se reformuló ligeramente el readme de OnBot Java.
Versión 3.3 (compilada el 17.09.04)
Esta versión del software incluye mejoras para la herramienta FTC Blocks Programming Tool y la herramienta OnBot Java Programming Tool.
Los cambios de la versión 3.3 incluyen:
- El proyecto ftc_app de Android Studio se ha actualizado para usar el Gradle Plugin 2.3.3.
- El proyecto ftc_app de Android Studio ya está usando la distribución de Gradle 3.5.
- El registro del Robot Controller se ha renombrado a /sdcard/RobotControllerLog.txt (nota: este cambio en realidad se introdujo con la v3.2).
- Mejoras en la fiabilidad de I2C.
- Lectura I2C optimizada para el REV Expansion Hub, con firmware v1.7 o superior.
- Se actualizaron todos los external/samples (disponibles a través de OnBot y en la carpeta del proyecto Android).
- Vuforia
- Se agregó soporte para los VuMarks que se utilizarán para el juego de la temporada 2017-2018.
- Blocks
- Actualización a la última versión de Google Blockly.
- Los op modes de muestra se pueden seleccionar como plantilla al crear un nuevo op mode.
- Se corrigió el error por el cual los bloques desaparecían temporalmente cuando se mantenía pulsado el botón del ratón.
- Se agregaron bloques para Range.clip y Range.scale.
- El usuario ahora puede deshabilitar/habilitar op modes de Blocks.
- Corrección para evitar interbloqueos (deadlocks) ocasionales en Blocks.
- OnBot Java
- Mejoras significativas en la función de autocompletado del editor OnBot Java.
- Los op modes de muestra se pueden seleccionar como plantilla al crear un nuevo op mode.
- Correcciones y cambios para completar la función de configuración de hardware.
- Mensaje de bienvenida de OnBot actualizado (y más útil).
Problemas conocidos:
- Android Studio
- Después de actualizar a la nueva carpeta de proyecto v3.3 de Android Studio, si recibe mensajes de error que indican "InvalidVirtualFileAccessException", es posible que deba hacer File->Invalidate Caches / Restart para eliminar el error.
- OnBot Java
- A veces, cuando se pulsa el botón de compilación para compilar todos los op modes, el RC devuelve un mensaje de error indicando que la compilación falló. Si se pulsa el botón de compilación una segunda vez, la compilación normalmente tiene éxito.
Versión 3.2 (compilada el 17.08.02)
Esta versión del software presenta la herramienta de desarrollo "OnBot Java". Al igual que la herramienta FTC Blocks Development Tool, la herramienta FTC OnBot Java Development Tool permite al usuario crear, editar y compilar op modes dinámicamente utilizando únicamente un navegador web con Javascript habilitado.
La herramienta OnBot Java Development Tool es un entorno de desarrollo integrado (IDE) que es servido por el Robot Controller. Los op modes se crean y editan mediante un navegador con Javascript habilitado (se recomienda Google Chrome). Los op modes se guardan directamente en el dispositivo Android del Robot Controller.
La herramienta OnBot Java Development Tool proporciona un entorno de programación Java que NO necesita Android Studio.
Los cambios de la versión 3.2 incluyen:
-
Herramientas de desarrollo web mejoradas
- Introducción de la herramienta OnBot Java Development Tool.
- Las funciones de programación y gestión basadas en web están "siempre activas" (el usuario ya no necesita poner el Robot Controller en modo de programación).
- Interfaz de gestión basada en web (donde el usuario puede cambiar el nombre del Robot Controller y también descargar fácilmente el archivo de registro del Robot Controller).
- Funciones de OnBot Java, Blocks y gestión disponibles desde la interfaz basada en web.
-
Blocks Programming Development Tool:
- Se cambió el bloque "LynxI2cColorRangeSensor" al bloque "REV Color/range sensor".
- Se corrigió el tooltip del bloque ColorSensor.isLightOn.
Se agregaron bloques para ColorSensor.getNormalizedColors y LynxI2cColorRangeSensor.getNormalizedColors.
-
Se agregaron op modes de ejemplo para el sensor táctil digital y el sensor de color y distancia REV Robotics.
-
Temas de color seleccionables por el usuario.
-
Incluye muchas mejoras y correcciones menores (demasiadas para enumerarlas).
Problemas conocidos:
- La función de autocompletado está incompleta y no admite lo siguiente (por ahora):
- Acceso mediante la palabra clave this
- Acceso mediante la palabra clave super
- Miembros de la superclase, no sobrescritos por la clase
- Cualquier método proporcionado en la clase actual
- Clases internas
- No puede manejar objetos con conversión de tipo (cast)
- Cualquier objeto que provenga de una expresión entre paréntesis
Versión 3.10 (compilada el 17.05.09)
Esta versión del software proporciona soporte para el REV Robotics Expansion Hub. Esta versión también incluye mejoras en la capa de comunicación USB con el fin de mejorar la resiliencia del sistema. Si anteriormente estaba usando una versión 2.x del software, la actualización a la versión 3.1 requiere que también actualice el software de la Driver Station además de actualizar el software del Robot Controller.
Tenga en cuenta también que en el software de la versión 3.10, los métodos setMaxSpeed y getMaxSpeed ya no están disponibles (no es que estén en desuso; se han eliminado del SDK). Tenga en cuenta también que el nuevo software 3.x incorpora perfiles de motor que el usuario puede seleccionar mientras configura el robot.
Los cambios incluyen:
- Cambios en Blocks
- Se agregaron los bloques VuforiaTrackableDefaultListener.getPose y Vuforia.trackPose.
- Se agregó soporte optimizado de bloques para el seguimiento extendido de Vuforia.
- Se agregó el bloque atan2 a la categoría de matemáticas.
- Se agregó el parámetro useCompetitionFieldTargetLocations al bloque Vuforia.initialize. Si se establece en false, las ubicaciones de los objetivos se colocan en (0,0,0) con la orientación del objetivo especificada en el op mode tutorial https://github.com/gearsincorg/FTCVuforiaDemo/blob/master/Robot_Navigation.java.
- Incorpora mejoras adicionales a la capa de comunicación USB para mejorar la resiliencia del sistema (para recuperarse de un mayor número de interrupciones de la comunicación).
Notas adicionales sobre la versión 3.00 (compilada el 17.04.13)
Además de los cambios de la versión enumerados a continuación (consulte la sección titulada "Versión 3.00 (compilada el 17.04.013)"), la versión 3.00 tiene los siguientes cambios importantes:
- El software de la versión 3.00 usa una nueva versión del FTC Robocol (protocolo de robot). Si actualiza a la v3.0 en el lado del Robot Controller y/o de Android Studio, también debe actualizar el software de la Driver Station para que coincida con el nuevo Robocol.
- El software de la versión 3.00 elimina los métodos setMaxSpeed y getMaxSpeed de la clase DcMotor. Si tiene un op mode que anteriormente usaba estos métodos, deberá eliminar las referencias/llamadas a estos métodos. En su lugar, la v3.0 proporciona la información de velocidad máxima mediante el uso de perfiles de motor que el usuario selecciona durante la configuración del robot.
- El software de la versión 3.00 actualmente no tiene un mecanismo para deshabilitar sensores i2c adicionales. Esperamos reintroducir esta función con una versión en un futuro cercano.
Versión 3.00 (compilada el 17.04.13)
*** ¡¡¡Use esta versión del software BAJO SU PROPIO RIESGO!!! ***
Este software se publica como una versión "alpha". ¡Use esta versión bajo su propio riesgo!
Este software de prelanzamiento contiene cambios SIGNIFICATIVOS, incluidos cambios en el mecanismo de emparejamiento Wi-Fi Direct, reescrituras de las clases de sensores I2C, cambios en la capa USB/FTDI y la introducción de soporte para el REV Robotics Expansion Hub y el sensor de color-distancia-luz REV Robotics. Estos cambios se implementaron para mejorar la fiabilidad y la resiliencia del sistema de control de FTC.
Tenga en cuenta, sin embargo, que la versión 3.00 se considera código "alpha". Este código se publica para que la comunidad FIRST tenga la oportunidad de probar el nuevo módulo electrónico REV Expansion Hub cuando esté disponible en mayo. Los desarrolladores no recomiendan usar este código para aplicaciones críticas (es decir, para uso en competiciones).
*** ¡¡¡Use esta versión del software BAJO SU PROPIO RIESGO!!! ***
Los cambios incluyen:
- Gran reorganización de la infraestructura relacionada con los sensores. Incluye la reescritura de las clases de sensores para implementar comunicación I2C síncrona.
- Corrección para restablecer el temporizador autónomo a 30 segundos.
- Implementación de perfiles de motor específicos para motores de 12 V aprobados (incluye modelos Tetrix, AndyMark, Matrix y REV).
- Mejoras moderadas para mejorar el emparejamiento Wi-Fi P2P.
- Corrige la condición de carrera en la adición de registros de telemetría.
- Publica todas las fuentes (no solo unas pocas seleccionadas).
- Incluye mejoras en la programación con Blocks
- Adición de bloques Vuforia optimizados.
- Barra de desplazamiento automática en las páginas de proyectos y sonidos.
- Se corrigió el error de pegado de bloques.
- Los bloques se ejecutan después del bucle while-opModeIsActive (para permitir la limpieza antes de salir del op mode).
- Se agregó el bloque integratedZValue del giroscopio.
- Corrige el error de la página de proyectos para el navegador Firefox.
- Se agregó el bloque IsSpeaking a AndroidTextToSpeech.
- Implementa soporte para el REV Robotics Expansion Hub
- Implementa soporte para la IMU REV integrada (instalada físicamente en el bus I2C 0, utiliza el mismo sensor de orientación absoluta de 9 ejes Bosch BNO055 que el sensor de orientación absoluta Adafruit 9DOF). - Implementa soporte para el sensor de color/distancia/luz REV.
- Proporciona soporte para actualizar el firmware del Expansion Hub a través del SDK de FTC.
- Detecta la versión del firmware REV y la registra en el archivo de registro.
- Incluye soporte para el REV Control Hub (tenga en cuenta que el REV Control Hub aún no está aprobado para su uso en FTC).
- Implementa soporte de programación FTC Blocks para el REV Expansion Hub y el hardware de sensores.
- Detecta y alerta cuando se desconecta un dispositivo I2C.
Versión 2.62 (compilada el 17.01.07)
- Se agregó una verificación de puntero nulo antes de llamar a modeToByte() en el método finishModeSwitchIfNecessary de la clase ModernRoboticsUsbDcMotorController.
- Cambios para mejorar la robustez del protocolo USB de Modern Robotics.
Versión 2.61 (publicada el 16.12.19)
- Cambios en el modo Blocks Programming:
- Corrección para resolver el problema cuando se lanzaba una excepción porque un objeto OpticalDistanceSensor aparece dos veces en el mapa de hardware (la segunda vez como LightSensor).
Versión 2.6 (publicada el 16.12.16)
- Correcciones para la clase Gyro:
- Mejorar (disminuir) la latencia de actualización del sensor.
- Corregir los problemas de isCalibrating.
- Cambios en el modo Blocks Programming:
- Blocks ahora ignora un dispositivo en el xml de configuración si el nombre está vacío. Los demás dispositivos de la configuración funcionan correctamente.
Versión 2.5 (versión interna publicada el 16.12.13)
- Cambios en el modo Blocks Programming:
- Se agregó soporte de bloques para AdafruitBNO055IMU.
- Se agregó el botón Download Op Mode a FtcBocks.html.
- Se agregó soporte para copiar bloques de un OpMode y pegarlos en otro OpMode. El contenido del portapapeles se almacena en el teléfono, por lo que el servidor del modo de programación debe estar en ejecución.
- Se modificó la sección Utilities de la caja de herramientas.
- En el modo de programación, mostrar información sobre las conexiones activas.
- Se corrigió la ubicación del pegado cuando el espacio de trabajo se ha desplazado.
- Se agregó soporte de bloques para el acelerómetro de Android.
- Se corrigió el problema por el cual Blocks Upload Op Mode truncaba el nombre en el primer punto.
- Se agregó soporte de bloques para Android SoundPool.
- Se agregó seguridad de tipos a los bloques para Acceleration.
- Se agregó seguridad de tipos a los bloques para AdafruitBNO055IMU.Parameters.
- Se agregó seguridad de tipos a los bloques para AnalogInput.
- Se agregó seguridad de tipos a los bloques para AngularVelocity.
- Se agregó seguridad de tipos a los bloques para Color.
- Se agregó seguridad de tipos a los bloques para ColorSensor.
- Se agregó seguridad de tipos a los bloques para CompassSensor.
- Se agregó seguridad de tipos a los bloques para CRServo.
- Se agregó seguridad de tipos a los bloques para DigitalChannel.
- Se agregó seguridad de tipos a los bloques para ElapsedTime.
- Se agregó seguridad de tipos a los bloques para Gamepad.
- Se agregó seguridad de tipos a los bloques para GyroSensor.
- Se agregó seguridad de tipos a los bloques para IrSeekerSensor.
- Se agregó seguridad de tipos a los bloques para LED.
- Se agregó seguridad de tipos a los bloques para LightSensor.
- Se agregó seguridad de tipos a los bloques para LinearOpMode.
- Se agregó seguridad de tipos a los bloques para MagneticFlux.
- Se agregó seguridad de tipos a los bloques para MatrixF.
- Se agregó seguridad de tipos a los bloques para MrI2cCompassSensor.
- Se agregó seguridad de tipos a los bloques para MrI2cRangeSensor.
- Se agregó seguridad de tipos a los bloques para OpticalDistanceSensor.
- Se agregó seguridad de tipos a los bloques para Orientation.
- Se agregó seguridad de tipos a los bloques para Position.
- Se agregó seguridad de tipos a los bloques para Quaternion.
- Se agregó seguridad de tipos a los bloques para Servo.
- Se agregó seguridad de tipos a los bloques para ServoController.
Versión 2.4 (publicada el 16.11.13)
- Corrección para evitar fallos debidos a recursos inexistentes.
- Cambios en el modo Blocks Programming:
- Se agregaron bloques para soportar OpenGLMatrix, MatrixF y VectorF.
- Se agregaron bloques para soportar AngleUnit, AxesOrder, AxesReference, CameraDirection, CameraMonitorFeedback, DistanceUnit y TempUnit.
- Se agregaron bloques para soportar Acceleration.
- Se agregaron bloques para soportar LinearOpMode.getRuntime.
- Se agregaron bloques para soportar MagneticFlux y Position.
- Se corrigieron errores tipográficos.
- Se hicieron los bloques para ElapsedTime más coherentes con otros objetos.
- Se agregaron bloques para soportar Quaternion, Velocity, Orientation, AngularVelocity.
- Se agregaron bloques para soportar VuforiaTrackables, VuforiaTrackable, VuforiaLocalizer, VuforiaTrackableDefaultListener.
- Se corrigieron algunos bloques.
- Se agregó verificación de tipos a los bloques nuevos.
- Se actualizó a la última versión de Blockly.
- Se agregaron bloques de variables predeterminados a los bloques de navegación y matrices.
- Se corrigió la entrada de la caja de herramientas para openGLMatrix_rotation_withAxesArgs.
- Cuando el usuario descarga un op mode generado con Blocks, solo se descarga el archivo .blk.
- Cuando el usuario sube un op mode generado con Blocks (archivo .blk), el código Javascript se genera automáticamente.
- Se agregó soporte para DbgLog.
- Se agregó registro (logging) cuando se lee/escribe un archivo de bloques.
- Se corrigió el error para representar correctamente los bloques incluso si faltan dispositivos en el archivo de configuración.
- Se agregó soporte para caracteres adicionales (no solo alfanuméricos) en los nombres de los archivos de bloques (para descarga y carga).
- Se agregó soporte para el tipo de OpMode (“Autonomous” o “TeleOp”) y grupo.
- Cambios en las muestras para prevenir problemas en los tutoriales.
- Se incorporaron los cambios sugeridos del pull 216 público (“Replace .. paths”).
- Eliminar las interferencias (glitches) del servo cuando el robot se detiene.
- Si el usuario pulsa “Cancels” al editar un archivo de configuración, se eliminan los cambios no guardados y se revierte a la configuración original sin modificar.
- Se agregó información de registro para ayudar a diagnosticar por qué se terminó la aplicación Robot Controller (por ejemplo, por la función de vigilancia / watch dog).
- Se agregó la capacidad de transferir el registro desde el controlador.
- Se corrigió la inconsistencia para AngularVelocity
- Limitar el crecimiento ilimitado de los datos de telemetría. Si el usuario no llama a telemetry.update() para LinearOpMode de manera oportuna, los datos agregados para la telemetría podrían perderse si se excede el límite de tamaño.Versión 2.35 (publicada el 16.10.06)
Versión 2.30 (publicada el 16.10.05)
- Modo de programación Blockly:
- Se añadió un mecanismo para guardar los modos OP de Blockly desde el servidor del modo de programación en el dispositivo local.
- Para evitar el desorden, los bloques se muestran en carpetas categorizadas.
- Se añadió soporte para DigitalChannel
- Se añadió soporte para ModernRoboticsI2cCompassSensor
- Se añadió soporte para ModernRoboticsI2cRangeSensor
- Se añadió soporte para VoltageSensor
- Se añadió soporte para AnalogInput
- Se añadió soporte para AnalogOutput
- Corrección para el bloque setMode de CompassSensor
- Vuforia
- Se corrigió el bloqueo / se pusieron a disposición los datos de la cámara mientras Vuforia está en ejecución.
- Actualización a Vuforia 6.0.117 (recomendado por Vuforia y Google para cerrar la brecha de seguridad).
- Corrección del error del temporizador autónomo de 30 segundos (en el que el temporizador seguía activo, aunque parecía haber expirado).
- Cambios en opModeIsActive para permitir la limpieza después de que el modo OP se detenga (con un tiempo de espera de seguridad forzado de 2 segundos).
- Corrección para evitar leer i2c dos veces.
- Modos OP de muestra actualizados.
- Mejora del registro y corrección de congelaciones intermitentes.
- Se añadió una muestra de I/O digital.
- Se limpiaron los nombres de dispositivos en los modos OP de muestra para que sean coherentes con la guía Pushbot.
- Corrección para permitir el uso de IrSeekerSensorV3.
Versión 2.20 (publicada el 16.09.08)
- Soporte para el sensor de brújula de Modern Robotics.
- Soporte para el sensor de rango de Modern Robotics.
- Se revisaron los nombres de dispositivos de las plantillas Pushbot para que coincidan con los nombres utilizados en la guía Pushbot.
- Se corrigió un error para que el dispositivo IrSeekerSensorV3 sea accesible como IrSeekerSensor en hardwareMap.
- Se modificó el código de visión por computadora para requerir una licencia individual de Vuforia (según el requisito legal de PTC).
- Correcciones menores.
- Mejoras en Blockly:
- Soporte para sensor de voltaje.
- Soporte para entrada analógica.
- Soporte para salida analógica.
- Soporte para sensor de luz.
- Soporte para controlador de servo.
Versión 2.10 (publicada el 16.09.03)
- Soporte para Adafruit IMU.
- Mejoras a la clase ModernRoboticsI2cGyro
- Bloqueo al restablecer el eje Z.
- isCalibrating() devuelve true mientras el giroscopio está calibrando.
- Programa de giroscopio de muestra actualizado.
- Mejoras en Blockly:
- soporte para android.graphics.Color.
- se añadió soporte para ElapsedTime.
- se mejoró la apariencia y legibilidad de los bloques.
- soporte para sensor de brújula.
- soporte para sensor ultrasónico.
- soporte para IrSeeker.
- soporte para LED.
- soporte para sensor de color.
- soporte para CRServo.
- se solicita al usuario configurar el robot antes de usar el modo de programación.
- Proporciona la capacidad de deshabilitar las señales de audio.
- Varias correcciones de errores y mejoras.
Versión 2.00 (publicada el 16.08.19)
- Esta es la nueva versión para la próxima temporada de FIRST Tech Challenge 2016-2017.
- El cambio de canal está habilitado en la aplicación FTC Robot Controller para los teléfonos Moto G de 2.ª y 3.ª generación.
- Los usuarios ahora pueden usar anotaciones para registrar/deshabilitar sus modos OP.
- Cambios en los requisitos de Android SDK, JDK y herramientas de compilación (minsdk=19, java 1.7, build tools 23.0.3).
- Unidades estandarizadas en la entrada analógica.
- Se limpió el código de las clases de sensores analógicos existentes.
- setChannelMode y getChannelMode fueron ELIMINADOS de la clase DcMotorController. Esto es importante: ya no establecemos los modos del motor a través del controlador del motor.
- setMode y getMode fueron añadidos a la clase DcMotor.
- La clase ContinuousRotationServo ha sido añadida al FTC SDK.
- El método Range.clip() ha sido sobrecargado para poder soportar esta operación para enteros int, short y byte.
- Se han realizado algunos cambios (se han añadido nuevos métodos) sobre cómo un usuario puede acceder a los elementos del mapa de hardware.
- Los usuarios ahora pueden configurar el comportamiento de potencia cero para un motor DC, de modo que el motor frene o flote cuando la potencia sea cero.
- El modo de programación Blockly prototipo ha sido añadido al FTC Robot Controller. Los usuarios pueden poner el Robot Controller en este modo y luego usar un dispositivo (como una computadora portátil) que tenga un navegador con JavaScript habilitado para escribir modos OP basados en Blockly directamente en el Robot Controller.
- Los usuarios ahora pueden configurar el robot de forma remota a través de la aplicación FTC Driver Station.
- El proyecto de Android Studio es compatible con Android Studio 2.1.x y compile SDK Version 23 (Marshmallow).
- El SDK de visión por computadora Vuforia se integró en el FTC SDK. Los usuarios pueden usar objetivos de visión de muestra para obtener información de localización en un campo FTC estándar.
- La estructura del proyecto se ha reorganizado para que ahora exista un paquete TeamCode que los usuarios pueden usar para colocar sus modos OP locales/personalizados en este paquete.
- La función de inspección se ha integrado en las aplicaciones FTC Robot Controller y Driver Station (¡Gracias al equipo HazMat... 9277 y 10650!).
- Se han incorporado señales de audio al FTC SDK.
- Se añadió un mecanismo de intercambio (Swap) a la actividad de configuración del FTC Robot Controller. Por ejemplo, si tienes dos controladores de motor en un robot y los identificaste incorrectamente en tu archivo de configuración, puedes usar el botón Swap para intercambiar los dispositivos dentro del archivo de configuración (para no tener que volver a introducir manualmente la información de configuración de los dos dispositivos).
Versión 16.07.08
- Para el proyecto ftc_app, los archivos gradle se han modificado para ser compatibles con Android Studio 2.1.x.
Versión 16.03.30
- Para MIT App Inventor, los bloques de diseño tienen nuevos iconos que representan mejor la función de cada componente de diseño.
- Se realizaron algunos cambios en la lógica de apagado para garantizar el apagado robusto de algunos de nuestros servicios USB.
- Se realizó un cambio en LinearOpMode para permitir que una instancia determinada se ejecute más de una vez, lo cual se requiere para App Inventor.
- Javadoc mejorado/actualizado.
Versión 16.03.09
- Se realizaron cambios para hacer que el FTC SDK sea síncrono (¡cambio significativo!)
- waitOneFullHardwareCycle() y waitForNextHardwareCycle() ya no son necesarios y han quedado obsoletos.
- runOpMode() (para un LinearOpMode) ahora está desacoplado del hilo de lectura/escritura de hardware del sistema.
- loop() (para un OpMode) ahora está desacoplado del hilo de lectura/escritura de hardware del sistema.
- Los métodos son síncronos.
- Por ejemplo, si llamas a setMode(DcMotorController.RunMode.RESET_ENCODERS) para un motor, se garantiza que el encoder se restablecerá cuando la llamada al método haya terminado.
- Para el módulo heredado (compatible con NXT), el usuario ya no tiene que alternar entre los modos de lectura y escritura al leer o escribir en un dispositivo heredado.
- Se realizaron cambios para mejorar la fiabilidad/robustez durante eventos ESD.
- Se realizaron cambios para hacer que el código sea seguro para subprocesos (thread-safe).
- Se añadió un almacén de claves de depuración para que los APK del robot controller generados por el usuario usen todos la misma clave firmada (para evitar conflictos si un equipo tiene varias computadoras portátiles de desarrollo, por ejemplo).
- La información de la versión de firmware de los módulos de Modern Robotics ahora se registra.
- Se realizaron cambios para mejorar la fiabilidad y robustez de la comunicación USB.
- Se añadió soporte para indicador de voltaje en los controladores de motor heredados (compatibles con NXT).
- Se realizaron cambios para proporcionar capacidades de detención automática para los modos OP.
- Una clase LinearOpMode se detendrá cuando las declaraciones en runOpMode() estén completas. El usuario no tiene que pulsar el botón de detener en la estación de conductor.
- Si un modo OP es detenido por la estación de conductor, pero persiste un hilo descontrolado/no interrumpible, la aplicación registrará un mensaje de error y luego se forzará a fallar para detener el hilo descontrolado.
- La interfaz de usuario de la Driver Station se modificó para mostrar el voltaje medido más bajo por debajo del voltaje actual (batería de 12 V).
- La interfaz de usuario de la Driver Station se modificó para tener un fondo de color para el voltaje actual (verde=bueno, amarillo=precaución, rojo=peligro, voltaje extremadamente bajo).
- javadoc mejorado (ediciones y clases adicionales).
- Se añadió el tiempo de compilación de la aplicación a la actividad Acerca de (About) de las aplicaciones de driver station y robot controller.
- Mostrar direcciones IP locales en la actividad Acerca de (About) de la Driver Station.
- Se añadió I2cDeviceSynchImpl.
- Se añadió la interfaz I2cDeviceSync.
Versión 16.02.09
- Se mejoró la función del comprobador de batería para que los valores de voltaje se actualicen regularmente (cada 250 ms) en la interfaz de usuario de la Driver Station (DS).
- Se mejoró el software para que el Robot Controller (RC) sea mucho más resiliente y "auto-reparable" frente a desconexiones USB:
- Si el usuario intenta iniciar/reiniciar el RC con uno o más módulos faltantes, se mostrará una advertencia pero aun así se iniciará.
- Al ejecutar un modo OP, si uno o más módulos se desconectan, el RC y la DS mostrarán advertencias, y el robot seguirá funcionando a pesar de los módulos faltantes.
- Si un módulo desconectado se vuelve a conectar físicamente, el RC detectará automáticamente el módulo y el usuario recuperará el control del módulo recientemente conectado.
- Los mensajes de advertencia son más útiles (identifican el tipo de módulo que falta y su número de serie USB).
- Cambios en el código para corregir la referencia nula del gamepad cuando los usuarios intentan hacer referencia a los gamepads en la parte init() de su modo OP.
- La salida del sensor de luz NXT ahora está escalada correctamente. Tenga en cuenta que los equipos podrían tener que reajustar sus valores de umbral de luz en sus modos OP.
- En la interfaz de usuario de la DS, el icono del gamepad de un conductor desaparecerá si el gamepad correspondiente se desconecta o si ese gamepad se designa para un conductor diferente.
- La información del número de versión del Protocolo de Robot (ROBOCOL) se muestra en la pantalla Acerca de (About) de las aplicaciones RC y DS.
- Se incorporó un filtro de visualización en la pantalla de emparejamiento para filtrar los dispositivos que no usan el formato "<NÚMERO DE EQUIPO>-". Este filtro se puede desactivar para mostrar todos los dispositivos WiFi Direct.
- Se actualizó el texto del archivo de licencia.
- Se corrigió un error de formato en OpticalDistanceSensor.toString().
- Se corrigió un problema con un nombre de dispositivo vacío ("") que interrumpía el emparejamiento WiFi Direct.
- Se realizó un cambio para que la información de WiFi y de batería se muestre más rápidamente en la DS al conectarse al RC.
- Se mejoró la generación de javadoc.
- Se modificó el código para facilitar la compatibilidad con la localización de idiomas en el futuro.
Versión 16.01.04
- Se actualizó compileSdkVersion para las aplicaciones.
- Se evitó que WiFi entre en modo de ahorro de energía.
- Se eliminó una importación no utilizada de la driver station.
- Se corrigió el código del joystick de "zona muerta".
- LED.getDeviceName y .getConnectionInfo() devuelven null.
- Las aplicaciones comprueban si hay discrepancia de ROBOCOL_VERSION.
- Corrección para Telemetry; también tenía errores de off-by-one en el tamaño de sus cadenas de datos / error de limitaciones de tamaño corto.
- La salida de telemetría del usuario está ordenada.
- Se añadieron variantes de formato a las API DbgLog y RobotLog.
- Código modificado para permitir una larga lista de nombres de modos OP.
- Cambios para mejorar la seguridad de subprocesos de RobocolDatagramSocket.
- Corrección para el error "la falta de hardware deja el robot controller desconectado de la driver station".
- Corrección para "tocar rápidamente Init/Start causa problemas" (el toast ahora solo se crea en el hilo de la interfaz de usuario).
- Se añadieron algunas declaraciones de registro para el ciclo de vida de los hilos.
- Se movió la lógica de reinicio del gamepad dentro de initActiveOpMode() para mayor robustez.
- Se realizaron cambios para mitigar el riesgo de condiciones de carrera en métodos públicos.
- Cambios para intentar señalar cuando el nombre de WiFi Direct contiene caracteres no imprimibles.
- Corrección para resolver la condición de carrera entre .run() y .close() en ReadWriteRunnableStandard.
- Se actualizó el controlador FTDI.
- Se hizo pública la interfaz ReadWriteRunnableStanard.
- Se corrigieron errores de off-by-one en el constructor de Command.
- Se movieron implementaciones de hardware específicas a su propio paquete.
- Se movieron implementaciones de gamepad específicas a la biblioteca de hardware.
- Se cambió el archivo LICENSE a la nueva versión BSD.
- Se corrigió la condición de carrera al apagar los dispositivos USB de Modern Robotics.
- Se sincronizaron los métodos de las clases ColorSensor.
- Se corrigió el estado de isBusy() para reflejar el final del movimiento.
- Se corrigió el código de tecla del botón "atrás".
- El método notSupported() de la clase GyroSensor se cambió a protected (no debería ser público).
Versión 15.11.04.001
- Se añadió soporte para el giroscopio de Modern Robotics.
- La clase GyroSensor ahora es compatible con el sensor de giroscopio MR.
- Los usuarios pueden acceder a los datos de rumbo (sobre el eje Z).
- Los usuarios también pueden acceder a los datos brutos del giroscopio (ejes X, Y y Z).
- Se incluye el modo OP de ejemplo MRGyroTest.java.
- Se mejoraron los mensajes de error.
- Mensajes de error más descriptivos para las excepciones en el código del usuario.
- Se actualizó la API de DcMotor.
- Se habilita el modo de lectura en la nueva dirección en setI2cAddress.
- Corrección para que la aplicación de la driver station restablezca los gamepads al cambiar de modos OP.
- Cambios de código relacionados con USB para hacer que la comunicación USB sea más receptiva y muestre mensajes de error más explícitos.
- Corrección para que USB se recupere correctamente si el bus USB devuelve datos basura.
- Corrección de la condición de carrera en la inicialización de USB.
- Mejor reporte de errores durante la apertura de FTDI.
- Mensajes más explícitos durante fallos de USB.
- Se corrigió un error para que el dispositivo USB se cierre si no se llamaba al método de desmontaje (teardown) del bucle de eventos.
- Se corrigió un problema de la interfaz de usuario del temporizador.
- Se corrigió un error de interfaz de usuario con nombres duplicados (configuración del módulo heredado).
- Se corrigió la condición de carrera en EventLoopManager.
- Corrección para mantener las referencias estables al actualizar el gamepad.
- Para los controladores de motor/servo Matrix heredados, se eliminó la necesidad de añadir "Motor" y "Servo" a los nombres de los controladores.
- Se actualizó el controlador del sensor de color HT para usar constantes de la clase ModernRoboticsUsbLegacyModule.
- Se actualizó el controlador del sensor de color MR para usar constantes de la clase ModernRoboticsUsbDeviceInterfaceModule.
- Se maneja correctamente el cambio de dirección I2C en todos los sensores de color.
- Se actualizaron/limpiaron los modos OP.
- Se actualizaron los comentarios en el modo OP de ejemplo LinearI2cAddressChange.java.
- Se reemplazaron las llamadas a "setChannelMode" por "setMode" (para coincidir con el nuevo nombre del método de DcMotor).
- Se eliminó el modo OP K9AutoTime.java.
- Se añadió el modo OP MRGyroTest.java (demuestra cómo usar el sensor de giroscopio MR).
- Se añadió el modo OP MRRGBExample.java (demuestra cómo usar el sensor de color MR).
- Se añadió el modo OP HTRGBExample.java (demuestra cómo usar el sensor de color heredado HT).
- Se añadió MatrixControllerDemo.java (demuestra cómo usar el controlador Matrix heredado).
- Se actualizó la documentación de javadoc.
- Se actualizaron los archivos .apk de lanzamiento para las aplicaciones Robot Controller y Driver Station.
T. Eng
5 de noviembre de 2015
Versión 15.10.06.002
- Se añadió soporte para el controlador de motor/servo Matrix 9.6V heredado.
- Se limpió el archivo build.gradle.
- Correcciones menores de interfaz de usuario y errores en las aplicaciones de driver station y robot controller.
- Lanza un error si el sensor ultrasónico (NXT) no está configurado para el puerto 4 o 5 del módulo heredado.
T. Eng
6 de octubre de 2015
En esta última versión del FTC SDK (20150803_001) se deben tener en cuenta los siguientes cambios:
- Nuevas interfaces de usuario para las aplicaciones FTC Driver Station y FTC Robot Controller.
- Se añadió un método init() a la clase OpMode.
- Para esta versión, init() se activa justo antes del método start().
- Eventualmente, el método init() se activará cuando el usuario presione el botón "INIT" en la driver station.
- Los métodos init() y loop() ahora son obligatorios (es decir, deben sobrescribirse en el modo OP del usuario).
- Los métodos start() y stop() son opcionales.
- Se introduce una nueva clase LinearOpMode.
- Los equipos pueden usar el modo LinearOpMode para crear un modelo de programa lineal (no controlado por eventos).
- Los equipos pueden usar declaraciones de bloqueo como Thread.sleep() dentro de un modo OP lineal.
- La API para el Módulo Heredado y el Módulo de Interfaz de Dispositivo Central se ha actualizado.
- El soporte para encoders con el Módulo Heredado ahora funciona.
- El bucle de hardware se ha actualizado para mejorar el rendimiento.
T. Eng
3 de agosto de 2015