AVISO
Este repositorio contiene el SDK público de la FTC para la temporada de competencia INTO THE DEEP (2024-2025).
¡Bienvenido!
Este repositorio de GitHub contiene el código fuente que se utiliza para crear una aplicación de Android para controlar un robot de competencia FIRST Tech Challenge. Para utilizar este SDK, descargue/clone el proyecto completo en su computadora local.
Requisitos
Para utilizar este proyecto de Android Studio, necesitará Android Studio 2021.2 (nombre en clave Chipmunk) o posterior.
Para programar tu robot en Blocks u OnBot Java, no necesitas Android Studio.
Empezando
Si es nuevo en robótica o en FIRST Tech Challenge, debería considerar revisar el Tutorial de bloques de la FTC para familiarizarse con cómo usar el sistema de control:
Tutorial en línea sobre bloques de la FTC
Incluso si es un programador avanzado de Java, es útil comenzar con el tutorial de Bloques de FTC y luego migrar a OnBot Java Tool o Android Studio.
Descargando el proyecto
Si eres programador de Android Studio, hay varias formas de descargar este repositorio. Tenga en cuenta que si utiliza la herramienta Java Blocks o OnBot para programar su robot, no necesita descargar este repositorio.
- Si eres usuario de git, puedes clonar la versión más actual del repositorio:
clon de git https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
O, si lo prefiere, puede utilizar el botón "Descargar Zip" disponible en la página principal del repositorio. Descargar el proyecto como un archivo .ZIP mantendrá manejable el tamaño de la descarga.
También puede descargar la carpeta del proyecto (como un archivo .zip o .tar.gz) desde la subsección Descargas de la página Lanzamientos de este repositorio.
La página de Lanzamientos también contiene APK prediseñados.
Una vez que haya descargado y descomprimido (si es necesario) su carpeta, puede usar Android Studio para importar la carpeta ("Importar proyecto (Eclipse ADT, Gradle, etc.)").
Obtener ayuda
Documentación de usuario y tutoriales
FIRST mantiene documentación en línea con información y tutoriales sobre cómo utilizar el software y el sistema de control de robots FIRST Tech Challenge. Puede acceder a esta documentación mediante el siguiente enlace:
Documentación del PRIMER desafío tecnológico
Tenga en cuenta que la documentación en línea es un documento "imperecedero" que se actualiza y edita constantemente. Contiene la información más actualizada sobre el software y el sistema de control de FIRST Tech Challenge.
Material de referencia de Javadoc
La documentación de referencia de Javadoc para el SDK de la FTC ya está disponible en línea. Haga clic en el siguiente enlace para ver la documentación Javadoc del SDK de la FTC como un sitio web en vivo:
Documentación Javadoc de la FTC
Foro de usuarios en línea
Si tiene preguntas técnicas sobre el sistema de control o el SDK de la FTC, visite el sitio de la comunidad FIRST Tech Challenge:
PRIMERA comunidad del desafío tecnológico
Modos de operación de muestra
Este proyecto contiene una gran selección de OpModes de muestra (ejemplos de código de robot) que se pueden cortar y pegar en su carpeta /teamcode para usarlos tal cual o modificarlos para adaptarlos a las necesidades de su equipo.
Carpeta de muestras: /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
El archivo readme.md ubicado en la carpeta /TeamCode/src/main/java/org/firstinspires/ftc/teamcode contiene una explicación de la convención de nomenclatura de muestra e instrucciones sobre cómo copiarlas en su propio espacio de proyecto.
Información de lanzamiento
Versión 10.1 (20240919-122750)
Mejoras
- Agrega nuevos
VisionProcessor
basados en OpenCV (que pueden conectarse a un VisionPortal en Java o en bloques) para ayudar a los equipos a implementar el procesamiento del color a través de la visión por computadora en el juego INTO THE DEEP.-
ColorBlobLocatorProcessor
implementa la detección de "blobs" de color OpenCV. Un nuevo programa de muestra ConceptVisionColorLocator
demuestra su uso.- Se ofrece la posibilidad de elegir entre gamas de colores predefinidas o crear una personalizada en el espacio de color RGB, HSV o YCrCb.
- Se proporciona la capacidad de restringir la detección a una región de interés específica en la pantalla.
- Se proporcionan funciones para aplicar transformación de erosión/dilatación a la máscara de umbral.
- Se proporcionan funciones para ordenar y filtrar los datos devueltos.
-
PredominantColorProcessor
permite utilizar una región de la cámara como "sensor de color de largo alcance" para determinar el color predominante de esa región. Un nuevo programa de muestra ConceptVisionColorSensor
demuestra su uso.- El color predominante determinado se selecciona de un conjunto discreto de "muestras" de color, similar al sensor de color MINDSTORMS NXT.
- La documentación sobre esta función de procesamiento de color se puede encontrar aquí: https://ftc-docs.firstinspires.org/color-processing
- Se agregaron programas de muestra de bloques para sensores de color: RobotAutoDriveToLine y SensorColor.
- Se actualizó la autoinspección para identificar versiones de software RC/DS que no coinciden como una "precaución" en lugar de un "fallo".
Corrección de errores
- Corrige la regresión de conversión de AngularVelocity
Versión 10.0 (20240828-111152)
Cambios importantes
- Se eliminaron las clases y bloques de Java para la detección de objetos de TensorFlow.
-
AngularVelocity.unit
que era de tipo AngleUnit
ha pasado a llamarse AngularVelocity.angleUnit
de tipo UnnormalizedAngleUnit
Mejoras
- Se ha agregado una muestra para el indicador digital REV - ConceptRevLED
- Agrega soporte para el palo LED Sparkfun QWIIC
- Para conectarlo directamente, necesitas este cable.
- Agrega ConceptLEDStick OpMode
- Agrega bloques para los colores negro, azul, cian, gris oscuro, gris, verde, gris claro, magenta, rojo, blanco y amarillo.
- Agrega un bloque "evaluar pero ignorar el resultado" que ejecuta el bloque conectado e ignora el resultado. Le permite llamar a una función e ignorar el valor de retorno.
- Agrega el controlador I2C para el telémetro de sonda Maxbotix Maxsonar I2CXL
- Agrega bloques para setPwmEnable, setPwmDisable e isPwmEnabled para servos y servos CR.
- En el editor de bloques: un n en el campo de comentarios de la anotación ExportToBlocks se muestra como un salto de línea.
- La telemetría tiene un nuevo método setNumDecimalPlaces
- La telemetría ahora da formato a dobles y flotantes (no dentro de objetos, solo por sí mismos)
- Agrega soporte para Limelight 3A.
- Agrega soporte inicial para REV Servo Hub
- Tanto el controlador del robot como la estación del controlador deben actualizarse a la versión 10.0 para que los Servo Hubs puedan configurarse como Servo Hubs. Si la aplicación en cualquiera de los dispositivos está desactualizada, Servo Hub aparecerá como un Hub de expansión y algunas funciones no funcionarán como se esperaba. Debe esperar para crear una configuración que incluya un Servo Hub hasta que las aplicaciones Driver Station y Robot Controller se hayan actualizado a la versión 10.0.
- La actualización del firmware del Servo Hub y el cambio de dirección solo se pueden realizar utilizando REV Hardware Client en este momento.
- Agrega soporte para la IMU de 9 ejes REV (REV-31-3332)
- La IMU REV de 9 ejes solo es compatible con la interfaz IMU universal
- Agrega la clase Java
Rev9AxisImuOrientationOnRobot
. - Si sustituye mentalmente el puerto I2C de esta IMU por los puertos USB del Control Hub,
RevHubOrientationOnRobot
también es compatible con este sensor - Agrega bloques para Rev9AxisImuOrientationOnRobot, incluidos RevHubImuOrientationOnRobot.xyzOrientation y RevHubImuOrientationOnRobot.zyxOrientation.
- Agrega muestras de bloques SensorRev9AxisIMUOrthogonal y SensorRev9AxisIMUNonOrthogonal.
- Mejora la compatibilidad con bloques para RevHubImuOrientationOnRobot.
- Agrega bloques para RevHubImuOrientationOnRobot.xyzOrientation y RevHubImuOrientationOnRobot.zyxOrientation.
- Agrega muestras de bloques SensorHubIMUOrthogonal (reemplaza a SensorIMU) y SensorHubIMUNonOrthogonal.
- Actualiza las versiones EasyOpenCV, AprilTag, OpenCV y
libjpeg-turbo
- Agrega bloques para máximo y mínimo que toman dos números.
- Agrega bloques OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni y RobotAutoDriveToAprilTagTank.
- Ahora se cambia automáticamente el nombre de dos OpModes con el mismo nombre con el nombre seguido de un "-" y el nombre de la clase, lo que permite que ambos estén en el dispositivo.
- Muestra el nombre de la configuración activa en la página Administrar de la consola del controlador del robot.
- Biblioteca de etiquetas de abril actualizada para INTO THE DEEP. En particular,
getCurrentGameTagLibrary()
ahora devuelve etiquetas EN LO PROFUNDO. - Agrega bloques para Telemetry.setMsTransmissionInterval y Telemetry.getMsTransmissionInterval.
- Agrega bloques de muestra SensorOctoQuad.
Corrección de errores
- Corrige un error por el cual los bloques RevBlinkinLedDriver estaban en Actuadores en la caja de herramientas del editor de bloques. Ahora son Otros dispositivos.
- Corrige un error por el cual
Exception
lanzadas en el código de usuario después de que la estación del conductor solicitaba una parada se consumían silenciosamente. - Se corrigió un error por el cual, si solicitaba
AngularVelocity
en una unidad diferente a la que el dispositivo reportó, la normalizaría entre -PI y PI para radianes, y -180 y 180 para grados.
Versión 9.2 (20240701-085519)
Notas importantes
- Las clases y bloques de Java para la detección de objetos de TensorFlow han quedado obsoletos y se eliminarán en la versión 10.0.
- Se eliminaron las muestras que utilizan la detección de objetos de TensorFlow.
Mejoras
- Agrega texto explicativo a los elementos fallidos en las actividades de inspección. Para ver el texto explicativo, toque el icono de advertencia rojo de un elemento fallido.
- En el editor de Bloques: se agregó un nuevo tipo de bloque de conjunto de variables que establece la variable y también devuelve el nuevo valor.
- Cambia la forma en que se comportan los controles de la cámara para una SwitchableCamera. Ahora, cada método (como getExposure, getMinExposure, getMaxExposure, setExposure para ExposureControl) actúa sobre la cámara actualmente activa.
- Agrega soporte para el gamepad REV USB PS4 compatible (REV-31-2983)
- Agrega ConceptAprilTagMultiPortal OpMode
- Agrega soporte para el codificador de cuadratura OctoQuad y el módulo de interfaz de ancho de pulso
- Agrega la anotación ExportAprilTagLibraryToBlocks que indica que un método estático que devuelve una AprilTagLibrary se exporta al entorno de programación de Blocks. El bloque correspondiente aparecerá en la caja de herramientas Bloques junto con las bibliotecas de etiquetas integradas.
- Agrega bloques OpMode ConceptAprilTagOptimizeExposure.
- Agrega soporte para el sensor de odometría de seguimiento óptico SparkFun.
Corrección de errores
- Corrige el problema #942 donde visionPortal.close() puede causar un error IndexOutOfBoundsError.
- Corrige un error en el editor de bloques donde los bloques de funciones colapsados muestran una advertencia "Los bloques colapsados contienen advertencias". cuando se vuelve a abrir el modo de operación de bloques.
- Corrige un error por el cual el editor de bloques no te avisaba que tienes cambios no guardados cuando intentas salir. Este error se introdujo debido a un cambio de comportamiento en Chrome 119.
- Problema nº 764: Obtener control de ganancia devuelve un puntero nulo para una cámara conmutable
- Corrige un error por el cual no se aplicaba la zona muerta correcta para ciertos gamepads cuando se habilitaban las funciones avanzadas del gamepad.
Versión 9.1 (20240215-115542)
Mejoras
- Soluciona un problema con los Bloques: si el usuario cierra el globo de advertencia de un Bloque, seguirá cerrado la próxima vez que se abra el proyecto en el editor de Bloques.
- En el editor de Bloques, no se muestra una alerta sobre dispositivos de hardware faltantes si todos los Bloques que utilizan los dispositivos de hardware faltantes están deshabilitados.
- Agrega bloques para admitir la comparación de valores de propiedad CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode y Servo.Direction, con el bloque de enumeración correspondiente.
- Mejora la importación automática de OnBotJava para importar clases correctamente cuando se usan en determinadas situaciones.
- Mejora el autocompletado de OnBotJava para proporcionar mejores opciones de finalización en la mayoría de los casos.
- Esto soluciona un problema por el cual la función de autocompletar fallaría si se definiera un método con dos o más parámetros formales.
- En OnBotJava, se agregó soporte para plegar código para expandir y contraer secciones de código.
- En OnBotJava, el encabezado de derechos de autor ahora se contrae automáticamente al cargar archivos nuevos
- Para todos los ejemplos de Blocks OpMode, los comentarios de introducción se han movido al globo de comentarios RunOpMode.
- El comando Limpiar bloques en el editor de bloques ahora coloca los bloques de funciones para que sus globos de comentarios no se superpongan a otros bloques de funciones.
- Se agregaron bloques OpMode muestra SensorTouch.
- Se agregó el ejemplo SensorDigitalTouch de Java OpMode.
- Varias mejoras en VisionPortal
- Agrega una opción para controlar si la transmisión se inicia automáticamente después de una llamada
.build()
en VisionPortal Builder - Agrega una opción para controlar si la superposición de estadísticas de procesamiento de visión se representa o no
- VisionPortals ahora implementa la interfaz
CameraStreamSource
, lo que permite a los usuarios multiportal seleccionar qué portal se enruta al DS en INIT llamando a CameraStreamServer.getInstance().setSource(visionPortal). Se puede seleccionar mediante gamepad, entre sesiones de Camera Stream. - Agregue una opción a
AprilTagProcessor
para suprimir las advertencias de calibración - Mejora las advertencias de calibración de la cámara.
- Si se escala una calibración, se mostrará la resolución desde la que se escale.
- Si existen calibraciones con una relación de aspecto incorrecta, se enumerarán las resoluciones calibradas.
- Corrige la condición de carrera que causaba el bloqueo de la aplicación al llamar
stopStreaming()
seguido inmediatamente de close()
en un VisionPortal. - Corrige IllegalStateException al llamar
stopStreaming()
inmediatamente después de crear un VisionPortal. - Se agregaron contrapartes de bloques FTC a los nuevos métodos Java:
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setFuente
Corrección de errores
- Soluciona un problema por el cual OnBotJava no aplica la configuración del tamaño de fuente al editor.
- Actualiza la dependencia de EasyOpenCV a v1.7.1
- Corrige la imposibilidad de utilizar EasyOpenCV CameraFactory en OnBotJava
- Soluciona el fallo completo de la aplicación RC cuando la canalización del usuario genera una excepción.
- Soluciona el fallo completo de la aplicación RC cuando el anotador del lienzo del usuario genera una excepción
- Utilice la pantalla moderna de seguimiento de pila al manejar excepciones de usuario en lugar del mensaje de telemetría ESTOP heredado.
Versión 9.0.1 (20230929-083754)
Mejoras
- Actualiza los ejemplos de AprilTag para incluir diezmación y comentarios adicionales. También corrige advertencias engañosas de identificación de etiquetas.
- Aumenta el tamaño máximo de los comentarios en línea de los bloques a 140 caracteres.
- Agrega el ejemplo de bloques BasicOmniOpMode.
- Biblioteca CENTERSTAGE actualizada: Cuaterniones de orientación AprilTag
- Se actualizó Java ConceptTensorFlowObjectDetection.java para incluir los elementos faltantes necesarios para la compatibilidad con modelos personalizados.
Corrección de errores
- Soluciona un problema por el cual, después del 1 de octubre, Driver Station se informará como obsoleto en la versión 9.0 y solicitará al usuario que actualice.
Versión 9.0 (20230830-154348)
Cambios importantes
- Elimina Vuforia
- Los campos de los objetos
AprilTagDetection
y AprilTagPose(ftc/raw)
ahora son final
- El método del constructor VisionPortal
setCameraMonitorViewId()
ha sido renombrado a setLiveViewContainerId()
y enableCameraMonitoring()
ha sido renombrado a enableLiveView()
Mejoras
- Agrega soporte para el sensor de visión DFRobot HuskyLens.
- Los equipos de bloques ahora pueden realizar la calibración de la cámara web.
- Se agregó un bloque para System.currentTimeMillis (en Utilidades/Tiempo)
- Se agregó un bloque para VisionPortal.saveNextFrameRaw (en Vision/VisionPortal)
- Se agregó un nuevo modo de operación de bloques de muestra llamado UtilityCameraFrameCapture.
- El ejemplo de RobotDriveByGyro se ha actualizado para utilizar la nueva interfaz IMU universal. Ahora admite ambos tipos de IMU.
- Se eliminaron algunos bloques de tiempo transcurrido propensos a errores de la caja de herramientas del editor de bloques. Este no es un cambio importante: los OpModes de bloques antiguos que usan estos bloques seguirán funcionando, tanto en el editor de bloques como en tiempo de ejecución.
- Estandariza en la forma "OpMode" para el término OpMode.
- La forma preferida de referirse a los OpModes que extienden específicamente
LinearOpMode
(incluidos los OpModes de bloques) es "OpMode lineal". - La forma preferida de referirse a OpModes que específicamente extienden
OpMode
directamente es "OpMode iterativo".
- Revisa los comentarios
OpMode
y LinearOpMode
Javadoc para que sean más fáciles de leer e incluyan más detalles. - Realiza mejoras menores en los ejemplos de Java.
- Los comentarios de Javadoc en muestras que podrían representarse mal en Android Studio se han convertido en comentarios estándar de varias líneas.
- Se ha mejorado la coherencia entre las muestras.
- El ejemplo SensorDigitalTouch se reemplazó por un nuevo ejemplo SensorTouch que usa la interfaz
TouchSensor
en lugar de DigitalChannel
. - Los ejemplos de ConceptCompassCalibration, SensorMRCompass y SensorMRIRSeeker se han eliminado porque no son útiles para las competiciones modernas de la FTC.
Corrección de errores
- Corrige un error que impedía que los gamepads de PlayStation se usaran en modo bluetooth. Bluetooth NO es legal para la competencia, pero puede ser útil para permitir el uso de un dispositivo DS mientras se carga o en un evento de divulgación.
- Corrige un error por el cual el valor de fecha de modificación de Blocks OpMode puede cambiar al 31 de diciembre de 1969, si el Control Hub se reinicia mientras se edita Blocks OpMode.
- Corrige la función de preselección automática de TeleOp (estaba rota en 8.2)
- Corrige un error por el cual pasar un número entero como 123 al bloque Telemetry.addData que toma un número aparece como 123.0 en la telemetría.
- Soluciona problemas de autocompletar de OnBotJava:
- Autocompletar proporcionaría incorrectamente valores para la clase actual al autocompletar una variable local
- El autocompletado
hardwareMap
incluiría incorrectamente entradas de clase lambda
- Corrige que OnBotJava no importe clases automáticamente.
- Corrige las pestañas de OnBotJava que no se cierran cuando se elimina su archivo.
- Corrige una actualización de la vista del proyecto que no ocurre cuando se cambia el nombre de un archivo en OnBotJava.
- Corrige el elemento del menú contextual "Descargar" para bibliotecas externas en la interfaz de OnBotJava.
- Soluciona el problema por el cual la telemetría de Driver Station se congelaba intermitentemente cuando se configuraba en modo Monospace.
- Corrige la regresión del rendimiento para ciertas operaciones de REV Hub que se introdujo en la versión 8.2.
- Corrige la lógica de comparación de TagID en ejemplos de DriveToTag.
Versión 8.2 (20230707-131020)
Cambios importantes
- Los OpModes no lineales (iterativos) ya no pueden manipular actuadores en su método
stop()
. Los intentos de hacerlo serán ignorados y registrados.- Cuando un OpMode intenta manipular ilegalmente un actuador, el controlador del robot imprimirá un mensaje de registro que incluye el texto
CANCELLED_FOR_SAFETY
. - Además, LinearOpModes ya no puede recuperar la capacidad de manipular actuadores eliminando la interrupción de su subproceso o utilizando otro subproceso.
- Elimina la compatibilidad con la versión 6.0 de Android (Marshmallow). La minSdkVersion ahora es 24.
- Aumenta la versión de Robocol.
- Esto significa que un controlador de robot o una estación de conducción 8.2 o posterior no podrá comunicarse con una estación de conducción o un controlador de robot 8.1 o anterior.
- Si olvida actualizar ambas aplicaciones al mismo tiempo, se mostrará un mensaje de error explicando qué aplicación es más antigua y debe actualizarse.
- FTC_FieldCoordinateSystemDefinition.pdf se ha movido. Todavía está en el historial de git, pero se eliminó de la instantánea de git correspondiente a la etiqueta 8.2. La versión oficial ahora se encuentra en el Sistema de coordenadas de campo.
-
LynxUsbDevice.addConfiguredModule()
y LynxUsbDevice.getConfiguredModule()
se han reemplazado por LynxUsbDevice.getOrAddModule()
. - Los bloques antiguos para la detección de objetos de Vuforia y TensorFlow están obsoletos y se han eliminado de la caja de herramientas del editor de bloques. Los OpModes de bloques existentes que contienen los bloques antiguos para la detección de objetos de Vuforia o TensorFlow se pueden abrir en el editor de bloques, pero ejecutarlos no funcionará.
Nuevas características
- Agrega una nueva API
VisionPortal
para visión por computadora- ¡Esta API puede estar sujeta a cambios para el lanzamiento final!
- Se agregaron varias muestras nuevas.
- Agrega soporte para detectar AprilTags.
-
VisionPortal
es el nuevo punto de entrada para el procesamiento de AprilTag y TFOD. - Vuforia se eliminará en una versión futura.
- Dependencias actualizadas de TensorFlow.
- Se agregó soporte para controles de cámara web a bloques.
- La caja de herramientas del editor de Bloques ahora tiene una categoría Visión, directamente encima de la categoría Utilidades.
- La documentación relacionada para las tecnologías asociadas se puede encontrar en
- Introducción a la etiqueta de abril
- Guía del SDK de AprilTag
- Valores de detección de etiquetas de abril
- Imágenes de prueba de AprilTag
- Calibración de la cámara
- Agrega compatibilidad con Driver Station para gamepads Logitech Dual Action y Sony PS5 DualSense.
- Esto no incluye compatibilidad con el gamepad Sony PS5 DualSense Edge.
- Consulta siempre el Manual del juego 1 para determinar la legalidad del gamepad en competición.
- Agrega soporte para la transmisión de carga útil MJPEG al controlador UVC (se requiere una rutina de descompresión JPEG externa para su uso).
- Muestra una pista en la interfaz de usuario de Driver Station sobre cómo vincular un gamepad cuando se presionan los botones o se mueven las palancas en un gamepad no vinculado.
- Agrega la opción para pantalla completa "Camera Stream" en Driver Station.
- El código fuente de OnBotJava se guarda automáticamente como un archivo ZIP en cada compilación con una ventana móvil de las últimas 30 compilaciones; permite recuperar el código fuente de compilaciones anteriores si el código se elimina o daña accidentalmente.
- Agrega soporte para cambiar las direcciones de los concentradores de expansión que no están conectados directamente a través de USB.
- La pantalla Cambio de dirección del concentrador de expansión ahora tiene un botón Aplicar que cambia las direcciones sin salir de la pantalla.
- Las direcciones asignadas a otros concentradores conectados a la misma conexión USB o Control Hub ya no se pueden seleccionar.
- Aumenta el tamaño máximo de los comentarios en línea de los bloques a 100 caracteres.
- Guarda la posición de los globos de comentarios de Bloques abiertos
- Agrega nuevas muestras de conducción de AprilTag: RobotDriveToAprilTagTank y RobotDriveToAprilTagOmni
- Agrega un ejemplo para ilustrar la optimización de la exposición de la cámara para AprilTags: ConceptAprilTagOptimizeExposure
Corrección de errores
- Corrige la pantalla de inspección para informar la versión de la aplicación utilizando la versión del SDK definida en las bibliotecas en lugar de la versión especificada en
AndroidManifest.xml
. Esto corrige el caso en el que la aplicación podía mostrar números de versiones coincidentes al usuario pero aún así indicar que las versiones no coincidían.- Si la versión especificada en
AndroidManifest.xml
no coincide con la versión del SDK, se mostrará una entrada de versión del SDK en la página web Administrar.
- Corrige que no se muestre ningún error al guardar un archivo de configuración con nombres duplicados desde Driver Station.
- Corrige un punto muerto en el controlador UVC que se manifestaba en OpenFTC/EasyOpenCV#57.
- Corrige un punto muerto en el controlador UVC que podría ocurrir al conectar cámaras en caliente.
- Corrige la compatibilidad del controlador UVC con la cámara con obturador global Arducam OV9281.
- Corrige la condición de parada de emergencia cuando se produce una compilación de OnBotJava con nombres de OpMode duplicados.
- Corrige las causas conocidas del registro de spam "Intento de uso de una instancia cerrada de LynxModule".
- Corrige el patrón de LED de identificación visual al configurar los concentradores de expansión conectados a través de RS-485.
Versión 8.1.1 (20221201-150726)
Esta es una versión que solo corrige errores para abordar los siguientes cuatro problemas.
- Problema #492: No se pueden crear nuevos modos de operación de bloques.
- Problema nº 495: Elimina el modificador final del objeto de telemetría de OpMode.
- Problema n.º 500: algunos dispositivos no se pueden configurar cuando la aplicación Driver Station se actualizó a 8.1
- Actualizar la aplicación Robot Controller o la aplicación Driver Station a 8.1.1 o posterior solucionará este problema.
- El sensor táctil de Modern Robotics se podía configurar como un dispositivo digital. Sólo se puede utilizar como dispositivo analógico.
Versión 8.1 (20221121-115119)
Cambios importantes
- Desaproba los campos
OpMode
msStuckDetectInit
, msStuckDetectInitLoop
, msStuckDetectStart
, msStuckDetectLoop
y msStuckDetectStop
.- Los OpModes ya no tienen un límite de tiempo para
init()
, init_loop()
, start()
o loop()
, por lo que los campos correspondientes a esos métodos ya no se utilizan. -
stop()
todavía tiene un límite de tiempo, pero ahora está codificado en 1 segundo y no se puede cambiar usando msStuckDetectStop
.
- Desaproba los métodos
OpMode
internalPreInit()
, internalPostInitLoop()
y internalPostLoop()
.- Los
OpMode
iterativos seguirán llamando a estos métodos en caso de que se anulen. - Estos métodos no se llamarán en absoluto para
LinearOpMode
s.
- Desaproba (y deja de respetar)
DeviceProperties.xmlTagAliases
.
Mejoras
- Agrega una nueva interfaz
IMU
a Blocks y Java que se puede usar tanto con la IMU BNO055 original incluida en todos los concentradores de control y concentradores de expansión anteriores como con la nueva IMU alternativa BHI260AP.- Puede determinar qué tipo de IMU hay en su Control Hub navegando a la página Administrar de la interfaz web.
- Para aprender a utilizar la nueva interfaz
IMU
, consulte https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html. La muestra de Bloques SensorIMU
también se actualizó para usar la nueva interfaz IMU
y se agregaron las siguientes muestras de Java:-
SensorIMUOrthogonal
- Utilice esta muestra si su REV Hub está montado de manera que quede paralelo o perpendicular a la parte inferior de su robot.
-
SensorIMUNonOrthogonal
- Utilice este ejemplo si su REV Hub está montado en su robot en cualquier otra orientación
-
ConceptExploringIMUOrientations
- Este OpMode es una herramienta que le ayudará a comprender cómo funcionan las orientaciones ortogonales y cuál se aplica a su robot.
- Solo se puede acceder a la IMU BHI260AP a través de la nueva interfaz
IMU
. La IMU BNO055 se puede programar usando la nueva interfaz IMU
, o puede continuar programándola usando la antigua interfaz BNO055IMU
. Si desea poder cambiar rápidamente a un nuevo centro de control que pueda contener la IMU BHI260AP, debe migrar su código para usar la nueva interfaz IMU
. - A diferencia de la antigua interfaz
BNO055IMU
, que solo funcionaba correctamente cuando el REV Hub estaba montado plano en su robot, la interfaz IMU
le permite especificar la orientación del REV Hub en su robot. Esto tendrá en cuenta esto y le brindará su orientación en un sistema de coordenadas del robot, en lugar de un sistema de coordenadas especial para el REV Hub. Como resultado, su cabeceo y guiñada serán 0 cuando su robot esté nivelado, en lugar de cuando el REV Hub esté nivelado, lo que dará como resultado valores de ángulo de orientación mucho más confiables para la mayoría de las orientaciones de montaje. - Debido al nuevo sistema de coordenadas centrado en el robot, los ángulos de cabeceo y balanceo devueltos por la interfaz
IMU
serán diferentes de los devueltos por la interfaz BNO055IMU
. Cuando migre su código, preste especial atención a la documentación. - Si ha calibrado su BNO055, puede proporcionar esos datos de calibración a la nueva interfaz
IMU
pasando una instancia BNO055IMUNew.Parameters
a IMU.initialize()
. - La interfaz
IMU
también es adecuada para que la implementen terceros proveedores de IMU que admitan la orientación en forma de cuaternión.
-
OpMode
iterativos (a diferencia de los LinearOpMode
) ahora se ejecutan en un subproceso dedicado.- Los tiempos de ciclo no deberían verse tan afectados por todo lo demás que sucede en el sistema.
- Los
OpMode
lentos ya no pueden aumentar la cantidad de tiempo que lleva procesar los comandos de red y viceversa. - Los métodos
init()
, init_loop()
, start()
y loop()
ya no necesitan regresar dentro de un período de tiempo determinado.
- Controlador heredado BNO055 IMU: restaura la capacidad de inicializar en un OpMode y luego hacer que otro OpMode reutilice esa inicialización. Esto le permite mantener la posición de guiñada 0 entre OpModes, si lo desea.
- Permite que las versiones personalizadas de controladores de dispositivos en el SDK de la FTC utilicen la misma etiqueta XML.
- Antes, si deseaba personalizar un controlador de dispositivo, tenía que copiarlo a una nueva clase y asignarle una nueva etiqueta XML. Darle una nueva etiqueta XML significaba que para cambiar el controlador que se estaba utilizando, debía modificar su archivo de configuración.
- Ahora, para usar su controlador personalizado, todo lo que tiene que hacer es especificar la clase de su controlador personalizado al llamar a
hardwareMap.get()
. Para volver al controlador original, especifique la clase de controlador original. Si especifica una interfaz implementada tanto por el controlador original como por el controlador personalizado, no hay garantía sobre qué implementación se devolverá.
Corrección de errores
- Se corrige el acceso a los enlaces "Administrar modelos de TensorFlow Lite" y "Administrar sonidos" y la realización de descargas de bloques y OnBotJava OpMode desde REV Hardware Client.
- Soluciona el problema por el cual un controlador de dispositivo I2C se inicializaba automáticamente utilizando los parámetros asignados en una ejecución anterior de OpMode.
- Mejora la ubicación del menú emergente de Driver Station en el diseño horizontal.
- Corrige NullPointerException al intentar obtener una IMU BNO055 no configurada en un modo de operación de bloques en un teléfono RC.
- Soluciona el problema con los bloques si una variable se llama
orientation
.
Versión 8.0 (20220907-131644)
Cambios importantes
- Aumenta la versión de Robocol.
- Esto significa que un controlador de robot o una estación de conducción 8.0 o posterior no podrá comunicarse con una estación de conducción o un controlador de robot 7.2 o anterior.
- Si olvida actualizar ambas aplicaciones al mismo tiempo, se mostrará un mensaje de error explicando qué aplicación es más antigua y debe actualizarse.
- La inicialización de dispositivos I2C ahora ocurre cuando los recupera del
HardwareMap
por primera vez.- Anteriormente, todos los dispositivos I2C se inicializarían incluso antes de que OpMode comenzara a ejecutarse, ya sea que realmente los usara o no. Esto podría provocar una reducción del rendimiento y advertencias innecesarias.
- Con este cambio, es muy importante que los usuarios de Java recuperen todos los dispositivos necesarios de
HardwareMap
durante la fase de inicio de OpMode . Es decir, declare una variable para cada dispositivo de hardware que utilizará OpMode y asigne un valor a cada uno. No haga esto durante la fase de ejecución, o su OpMode puede bloquearse brevemente mientras se inicializan los dispositivos que está recuperando. - Los OpModes que no utilizan todos los dispositivos I2C especificados en el archivo de configuración deberían tardar menos en inicializarse. Los OpModes que utilizan todos los dispositivos I2C especificados deberían tardar la misma cantidad de tiempo que antes.
- Soluciona el problema n.º 251 al cambiar el orden en el que se leen las velocidades de rotación del eje desde el vector de velocidad angular en el controlador IMU BNO055.
- Desaprueba
pitchMode
en BNO055IMU.Parameters
.- Establecer
pitchMode
en PitchMode.WINDOWS
rompería las convenciones de coordenadas utilizadas por el controlador.
- Mueve
OpModeManagerImpl
al paquete com.qualcomm.robotcore.eventloop.opmode
.- Esto rompe las bibliotecas de terceros EasyOpenCV (versión 1.5.1 y anteriores) y FTC Dashboard (versión 0.4.4 y anteriores).
- Elimina el método
OpMode
obsoleto resetStartTime()
(use resetRuntime()
en su lugar). - Elimina la clase protegida
LinearOpMode.LinearOpModeHelper
(que no estaba destinada a ser utilizada por OpModes). - Elimina el tipo de configuración del dispositivo I2C (síncrono) (obsoleto desde 2018)
Mejoras
- Las excepciones no detectadas en OpModes ya no requieren un reinicio del robot
- Una pantalla azul que aparece con un seguimiento de pila no es un error del SDK; esto reemplaza el texto rojo en el área de telemetría.
- Desde el primer lanzamiento del SDK, los fallos de OpMode han puesto al robot en estado de "PARADA DE EMERGENCIA", mostrando solo la primera línea de la excepción y requiriendo que el usuario presione "Reiniciar robot" para continuar.
- Las excepciones durante un OpMode ahora abren una ventana emergente con el mismo esquema de color que el visor de registros, que contiene 15 líneas del seguimiento de pila de excepción para permitir rastrear fácilmente la línea infractora sin necesidad de conectarse para ver registros a través de ADB o desplazarse por grandes cantidades de registros. en el visor de registros.
- El texto de excepción en la ventana emergente se puede ampliar y desplazar como una página web.
- Al presionar el botón "OK" en la ventana emergente se regresará a la pantalla principal de Driver Station y se permitirá ejecutar un OpMode nuevamente inmediatamente, sin la necesidad de realizar un "Reiniciar el robot".
- Agrega una nueva muestra de Java para demostrar el uso de una clase de hardware para abstraer actuadores de robots y compartirlos en múltiples OpModes.
- OpMode de ejemplo es ConceptExternalHardwareClass.java
- La clase de hardware abstraída es RobotHardware.java
- Actualiza el ejemplo de RobotAutoDriveByGyro_Linear Java para usar la IMU del concentrador de control/expansión REV.
- Actualiza los ejemplos de Vuforia para hacer referencia a los recursos de PowerPlay y tener nombres y ubicaciones de campo correctos para los objetivos de imagen.
- Actualiza muestras de TensorFlow para hacer referencia a los recursos de PowerPlay.
- Agrega soporte opcional para funciones del lenguaje Java 8 al editor OnBotJava.
- Para participar, abra la Configuración de OnBotJava y marque
Enable beta Java 8 support
. - Tenga en cuenta que el código Java 8 solo se compilará cuando el controlador del robot ejecute Android 7.0 Nougat o posterior.
- Informe los problemas aquí.
- En OnBotJava, al hacer clic en errores de compilación ahora se salta correctamente a la ubicación correcta.
- Mejora el comportamiento de autocompletar de OnBotJava para brindar mejores opciones de finalización en la mayoría de los casos.
- Agrega un código QR al Informe de inspección del controlador del robot cuando se ve desde la estación del conductor para que los inspectores en la competencia lo escaneen.
- Mejora el rendimiento y la confiabilidad de I2C en algunos escenarios.
Versión 7.2 (20220723-130006)
Cambios de ruptura
- Actualiza las herramientas de compilación. Para los usuarios de Android Studio, este cambio requiere Android Studio Chipmunk 2021.2.1.
- Elimina el soporte para dispositivos que no son legales de la competencia, incluidos los módulos de control del núcleo de robótica moderna, el controlador de matriz y los controladores y sensores HITechnic/NXT. El apoyo permanece para los sensores modernos de robótica I2C.
Mejoras
- Aumenta la altura del área táctil del menú del paisaje de 3 puntos en la estación del conductor, lo que hace que sea mucho más fácil de seleccionar.
- Agrega el método
terminateOpModeNow()
para permitir que OpModes se autoexiten limpiamente de inmediato. - Agrega el método
opModeInInit()
a LinearOpMode
para facilitar los bucles iniciales. Similar a opModeIsActive()
pero para la fase init. - Advierte al usuario si tiene un gamepad Logitech F310 conectado que está configurado en modo DirectInput.
- Permite que los controladores de motor Sparkmini reaccionen más rápidamente para acelerar los cambios.
- Oculta el número de versión de la aplicación hermana instalada incorrectamente (es decir, DS instalada en el dispositivo RC o viceversa) en la pantalla de inspección.
- Agrega soporte para permitir que el usuario edite el comentario para el bloque RunopMode.
- Agrega ParameterDefaultValues Field a @ExportToBlocks. Esto proporciona la capacidad de un método Java con una anotación @ExportToBlocks para especificar los valores predeterminados para los parámetros del método cuando se muestra en el editor de bloques.
- Haga que los bloques LinearOpMode sean más legibles. El nombre de Opmode se muestra en el bloque RunopMode, pero no en los otros bloques LinEApMode.
- Se agregó soporte a la detección de objetos TensorFlow para usar un generador de cuadros diferente, en lugar de VUFORIA. El uso de VUFORIA para pasar el marco de la cámara a TFOD todavía es compatible.
- Elimina el uso de RenderScript.
- Corrige logSpam en el inicio de la aplicación de pilas repetidas relacionadas con
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- Permite deshabilitar la radio Bluetooth desde la pantalla de inspección
- Mejora los mensajes de advertencia cuando los dispositivos I2C no están respondiendo
- Agrega soporte para controlar el LED RGB presente en PS4/Etpark GamePads de Opmodes
- Elimina las referencias Legacy Pushbot de las muestras de Opmode. Renombra las muestras "Pushbot" a "Robot". Las instrucciones del motor se invirtieron para ser compatibles con el tren de transmisión de "unidad directa".
Corrección de errores
- Se corrigió el problema #316 (matrixf.inverted () devolvió una matriz de tamaño incorrecto para matrices 1x1 y 2x2).
- Auto inspeccionar ahora permite la compatibilidad de la estación del conductor y el controlador del robot entre las versiones puntuales.
- Se corrige el error donde si la misma instancia de objeto
RumbleEffect
se colocara para múltiples gamepads, podría ocurrir que ambos comandos Rumble se enviarían a un solo gamepad. - Se corrige un error en la estación de conductores donde en el centro de conductores, si las características avanzadas de gamepad se deshabilitaron y se conectó un gamepad oficialmente compatible, luego abriendo las características avanzadas de gamepad o las pantallas de anulaciones de tipo gamepad causaría que el gamepad se recupere por el controlador USB personalizado incluso Las características avanzadas de GamePad fueron deshabilitadas.
- Protege contra la excepción de puntero nulo (poco probable) en Vuforia Localizer.
- Endurecer ondbotjava y bloques ahorros para proteger contra los problemas de ahorro al desconectar del programa y gestionar
- Se corrige el problema en el que la aplicación RC colgaría si una escritura Rev Hub I2C falló porque la operación I2C anterior todavía estaba en progreso. Esto se produce más comúnmente durante la inicialización del sensor de distancia de 2 m.
- Elimina el programa de muestra conceptwebcam.java. Esta muestra no es compatible con Onbotjava.
- Se corrige el error donde el uso de etiquetas HTML en un campo de comentarios de @ExportToBlocks impidió que el editor de bloques se cargue.
- Suelve el editor de bloques para que no le pida que guarde cuando no haya modificado nada.
- Corrección de la carga de un proyecto de bloques muy grande al editor de bloques fuera de línea.
- Se corrige un error que causó que los bloques para DcMotorex se omitan desde la caja de herramientas del editor de bloques.
- Corrige programas de bloques despojados de bloques (debido al uso del bloque de etiquetas TensorFlow)
Versión 7.1 (20211223-120805)
- Se corrige el bloqueo al llamar
isPwmEnabled()
(problema #223). - Corrige error de pelusa (problema #4).
- Se corrige el bloqueo de la estación del conductor al intentar usar DualShock4 V1 GamePad con funciones avanzadas de Gamepad habilitadas (problema #173).
- Soluciones posibles (pero poco probables) La estación del conductor al conectar gamepads de cualquier tipo.
- Se corrige el error donde la estación del conductor usaría el 20% de Deadzone genérico para Xbox360 y Logitech F310 GamePads cuando se deshabilitó las características avanzadas de Gamepad.
- Se agregó Opmode Opmode de muestra SimpleOmnidrive.
- Agrega la API de control de balance de blancos UVC.
- Se corrige el problema #259 La mayoría de las muestras de bloques para el flujo de tensor no se pueden usar para un modelo diferente.
- Los bloques previamente etiquetados TensorFlowObjectDetectionFreightfrenzy (de la subcategoría llamada "Optimizado para Frenzy de carga") y TensorFlowObjectDetectionCustommodel (de la subcategoría llamada "Modelo personalizado") se han reemplazado con bloques etiquetados TensorFlowObjectTetection. Los bloques en OpModes existentes se actualizarán automáticamente a los nuevos bloques cuando se abran en el editor de bloques.
- Se corrige los bloques del problema #260 no puede llamar al método Java que tenga un parámetro VUFORIACALIZER.
- Blocks ahora tiene un bloque etiquetado VUFORIAFREightfrenzy.getVUforialocalizer para esto.
- Se agregó una página para administrar los modelos TensorFlow Lite en/SDCARD/First/Tflitemodels. Para llegar a la página de modelos TFLITE:
- Puede hacer clic en el enlace en la parte inferior de la página Administrar.
- Puede hacer clic en el enlace en la página del proyecto BLOCKS BLOCKS.
- Corrige logSpam cuando se llama
isBusy()
en un motor no en modo RTP. - Oculta el elemento "RC Password" en la pantalla de inspección para controladores de robot basados en el teléfono. (Solo es aplicable para los centros de control).
- Agrega el canal 165 al menú Wi-Fi Direct Channel Selection en la pantalla Configuración. (165 estaba disponible previamente a través de la interfaz de usuario web, pero no localmente en la aplicación).
Versión 7.0 (20210915-141025)
Mejoras y nuevas características
- Agrega soporte para bibliotecas externas a OnbotJava y bloques.
- Sube los archivos .JAR y .aar en OnbotJava.
- Limitación conocida: el dispositivo RobotController debe estar ejecutando Android 7.0 o más.
- Limitación conocida: los archivos de AAR con activos no son compatibles.
- Las bibliotecas externas pueden proporcionar soporte para dispositivos de hardware utilizando la anotación en el paquete Com.qualcomm.Robotcore.hardware.Configuration.Annotations.
- Las bibliotecas externas pueden incluir archivos .so para código nativo.
- Las bibliotecas externas se pueden usar de Onbotjava Opmodes.
- Las bibliotecas externas que usan las siguientes anotaciones se pueden usar a partir de Opmodes de bloques.
- org.firstinspires.ftc.robotcore.external.exportclasstoblocks
- org.firstinspires.ftc.robotcore.external.exporttoblocks
- Las bibliotecas externas que usan las siguientes anotaciones pueden agregar nuevos dispositivos de hardware:
- com.qualcomm.robotcore.hardware.configuration.annotations.analogsensortype
- com.qualcomm.robotcore.hardware.configuration.annotations.deviceProperties
- com.qualcomm.robotcore.hardware.configuration.annotations.digitaliodeviceType
- com.qualcomm.robotcore.hardware.configuration.annotations.i2cdevicetype
- com.qualcomm.robotcore.hardware.configuration.annotations.motortype
- com.qualcomm.robotcore.hardware.configuration.annotations.servotype
- Las bibliotecas externas que usan las siguientes anotaciones pueden agregar una nueva funcionalidad al controlador de robot:
- org.firstinspires.ftc.ftccommon.external.Oncreate
- org.firstinspires.ftc.ftccommon.external.OncreateEventLoop
- org.firstinspires.ftc.ftccommon.external.oncreatemenu
- org.firstinspires.ftc.ftccommon.external.ondestroy
- org.firstinspires.ftc.ftccommon.external.webhandlerregistrar
- Agrega soporte para Rev Robotics Driver Hub.
- Agrega un controlador USB GamePad totalmente personalizado a la estación de conducir (consulte el menú "Características de gamePad avanzadas" en la configuración de DS).
- Permite que los gamepads funcionen en dispositivos sin soporte nativo del kernel de Linux (por ejemplo, algunos dispositivos de Motorola rumano).
- Permite que el DS lea el número de serie único de cada gamepad, lo que permite la recuperación automática de gamepads caídos incluso si dos gamepads del mismo modelo caen. (Nota: Desafortunadamente, esto no se aplica a Etpark Gamepads, porque no tienen una serie única) .
- Leer el número de serie único también proporciona la capacidad de configurar el DS para asignar GamePads a una determinada posición de forma predeterminada (por lo que no es necesario comenzar en absoluto+A/B).
- El anillo LED en el Xbox360 GamePad y la barra LED RGB en el gamepad PS4 se usa para indicar la posición del conductor al que está ligado a Gamepad.
- Los Motores Rumble en los juegos Xbox360, PS4 y Etpark se pueden controlar desde Opmodes.
- El panel táctil de 2 puntos en el gamepad PS4 se puede leer de Opmodes.
- Los botones "Back" y "Guide" en el Gamepad ahora pueden estar unidos de manera segura a los controles de robot (anteriormente, en muchos dispositivos, Android interceptaría estos botones a medida que presione el botón de inicio y cerraría la aplicación).
- Las funciones avanzadas de GamePad se habilitan de forma predeterminada, pero se pueden deshabilitar a través del menú Configuración para volver al soporte de Gamepad proporcionado de forma nativa por Android.
- Mejora la precisión de la medición de ping.
- Se corrige el problema en el que se mostró el tiempo de ping como más alto que la realidad cuando inicialmente se conectan o reinician el robot.
- Para ver la mejora completa, debe actualizar tanto el controlador de robot como las aplicaciones de la estación de controladores.
- Muestras de actualizaciones ubicadas en/ftcrobotcontroller/src/main/java/org/firstinpress/ftc/robotcontroller/external/muestras.
- Se agregaron muestras conceptgamePadrumble y conceptgamePadTouchPad para ilustrar el uso de estas nuevas capacidades de Gampad.
- Las muestras de Vuforia existentes condensadas en solo 2 muestras (ConceptVuffORIAFieldNavigation & ConceptVuffieldFieldnavigationWebCam) que muestran cómo determinar la ubicación del robot en el campo usando VUFORIA. Ambos usan las imágenes objetivo de la temporada actual.
- Se agregó conceptualdriveDroToTargetWebCam para ilustrar una manera fácil de conducir directamente a cualquier objetivo de Vuforia visible.
- Hace muchas mejoras en el sistema de advertencia y advertencias individuales.
- Las advertencias ahora están mucho más espaciadas, por lo que son más fáciles de leer.
- Se agregaron nuevas advertencias para las condiciones que deberían resolverse antes de competir.
- La advertencia de aplicaciones no coincidentes ahora usa las versiones de aplicaciones principales y menores, no el código de versión.
- Las advertencias se vuelven a habilitar automáticamente cuando se instala una aplicación de controlador de robot desde una nueva temporada FTC.
- Agrega soporte para las transacciones I2C en el Hub / Control de expansión sin especificar una dirección de registro.
- Consulte la Sección 3 de la especificación TI I2C.
- Llamar a estos nuevos métodos cuando use hardware de robótica moderna dará como resultado una operación no compatible.
- Cambia el método VUForialocalizer
close()
para ser público. - Agrega soporte para los modelos de detección de objetos TensorFlow V2.
- Reduce la ambigüedad del lenguaje y los gráficos auto -inspeccionar.
- Onbotjava ahora advierte sobre las sobrescrituras de archivos potencialmente involuntarios.
- Mejora el comportamiento de la banda Wi-Fi y el selector de canales en la página web Manay.
Corrección de errores
- Se corrige la aplicación del controlador de robot en Android 9+ cuando se conecta una estación de controlador.
- Se corrige el problema en el que un Opmode fue responsable de llamar a la cierre del TensorFlow TFObjectDetector. Ahora esto se hace automáticamente.
- Se corrige los bloques de inicialización de Vuforia para permitir que el usuario elija AxesOrder. Bloques relevantes actualizados Opmodes de muestra.
- Se corrige el problema de ftcrobotcontroller #114 bloques LED y la clase Java no funcionan.
- Se corrige el registro de coincidencias para Opmodes que contienen caracteres especiales en sus nombres.
- Se corrige los controles de la estación de conductor Opmode que no responden si la estación del conductor estaba configurada en el diseño del paisaje y se activó una construcción de Onbotjava mientras se ejecutaba un Opmode.
- Se corrige la aplicación de la estación del conductor que se está cerrando cuando se cambia, o la pantalla está apagada.
- Corrige el mensaje "Swirl of Doom" (Infinite "(Configuración de Wi-Fi Direct") en dispositivos anteriores.
- Actualiza el comentario wiki en la página de introducción de OnbotJava.
Versión 6.2 (20210218-074821)
Mejoras
- Intentos de arreglar automáticamente la condición en la que el concentrador de expansión interna de un centro de control no funciona al redactar su firmware
- Hace varias mejoras en la pantalla de emparejamiento directo de Wi-Fi, especialmente en el modo paisajista
- Hace que el servicio del controlador de robot ya no se reinicie categóricamente cuando la actividad principal se lleva a primer plano
- (por ejemplo, el servicio ya no se reinicia simplemente viendo la pantalla de auto -inspeccionar y presionando el botón Atrás)
- Todavía se reinicia si se abre el menú de configuración o configurar el menú robot
Corrección de errores
- Se corrige FTCROBOTController El problema #71 no puede abrir OpModes en el editor fuera de línea de V6.1 bloques
- Corrección de ftcrobotcontroller Problema #79 6.1 causa un reinicio suave en el juego Motorola E5
- Se corrige el problema de dónde se reiniciaría la aplicación del controlador de robots del HUB del centro del centro del centro de control si el Hub de control no pudiera comunicarse con su concentrador de expansión interna
- Se corrige ciertos dispositivos I2C que no aparecen en los campos
HardwareMap
apropiados (como hardwareMap.colorSensor
) - Se corrige el problema donde realizar un restablecimiento de fábrica Wi-Fi en el centro de control no establecería la banda Wi-Fi en 2.4 GHz
- Se corrige el problema donde OnbotJava podría no crear un archivo nuevo si se seleccionó la opción de "Configuración del código para el hardware configurado"
- Se corrige el problema donde realizar ciertas operaciones después de que los bloqueos de Opmode rompan temporalmente la comunicación de control/expansión del centro de expansión
- Se corrige el problema en el que un centro de control con un concentrador de expansión conectado al USB no funcionaría si el centro de expansión faltara al inicio
- Soluciona problemas potenciales causados por tener versiones de firmware de control/expansión de expansión no coincidentes
- ROBOTLOG está eliminando el problema de FTC_App 673.
- Corrige concepto -uTiaultimategoalnavigationwebcam muestra opmode orientando correctamente la cámara en el robot.
- Se corrige el problema en el que LogCat se enviaría por correo electrónico con Cepciones de InterruptedEx cuando se solicite la parada de la estación del conductor (este comportamiento se introdujo accidentalmente en v5.3). Este cambio no tiene impacto en la funcionalidad.
- Se corrige el problema donde el editor de bloques no se carga si el nombre de cualquier ópmode Telop contiene un apóstrofe.
Versión 6.1 (20201209-113742)
- Hace que el botón de escaneo en la pantalla de configuración actualice la lista de cubos de expansión conectados a través de RS-485
- Soluciona el problema de Skystone #143
- Mejora la compatibilidad de la interfaz web con versiones de WebView del navegador más antiguo y el sistema Android.
- Se corrige el problema en el controlador UVC donde algunas cámaras (por ejemplo, ciertas vidas de MS) que informaron intervalos de cuadro como valores redondeados en lugar de truncados (por ejemplo,
666667*100ns
en lugar de 666666*100ns
para 15 fps) no comenzarán a comenzar a transmitir. - Agrega soporte en el controlador UVC para el control virtual de PTZ
- Agrega soporte en el controlador UVC para el control de ganancia (ISO)
- Agrega soporte en el controlador UVC para habilitar/deshabilitar la prioridad de AE. Esta configuración proporciona un medio para decirle al firmware de la cámara
- A) Puede subrayar la velocidad de cuadro solicitada para proporcionar una imagen teóricamente mejor (es decir, con una exposición más larga que el período entre marco de la velocidad de cuadro seleccionado)
- B) Debe cumplir con la fecha límite entre marco para la velocidad de cuadro seleccionada, incluso si la imagen puede estar subexpuesta como resultado
- Agrega soporte para el control de control de control 1.1.2 Robot Controller Watchdog
- La aplicación del controlador de robot se reiniciará si deja de responder por más de 10 segundos
- Agrega soporte para usar la aplicación de estación de controladores en Android 10+
- Presenta una función de preselección automática de Teleop
- Para obtener detalles y guía de uso, consulte esta entrada de wiki
- Muestra el icono junto al nombre de OpMode en el menú desplegable de la lista de Opmode en la estación del controlador para indicar la fuente del Opmode (es decir, la herramienta de programación utilizada para crearla)
- Se corrige el problema donde la aplicación de la estación del conductor saldría después de mostrar la pantalla directa de configuración de Wi-Fi
- Corrige bloques y indicadores de ondjava cuando se accede a través del cliente de hardware de revoluciones Rev
Versión 6.0 (20200921-085816)
Notas importantes
- La versión 6.0 es la versión para la mejor temporada de goles.
- Requiere Android Studio 4.0.
- Los usuarios de Android Studio deben conectarse a Internet la primera vez que crean la aplicación (para descargar los paquetes necesarios para la compilación).
- La versión 5.5 fue una caída de temporada baja moderadamente grande, agosto de 2020. Vale la pena revisar esas notas de lanzamiento a continuación también.
- La versión 5.5 y mayor no funcionará en teléfonos Android 4.x y 5.x anteriores. Los usuarios deben actualizar a un dispositivo Android 6.x aprobado o más nuevo.
- Los valores PIDF predeterminados para los motores Rev se han revertido a los valores PID predeterminados que se usaron en la temporada 2018-2019
- Este cambio se realizó porque los valores 2018-2019 resultaron funcionar mejor para muchos mecanismos
- Esto aline el comportamiento de los motores reveladores con el comportamiento de todos los demás motores
- Si prefiere el comportamiento de la temporada 2019-2020 para Rev Motors, aquí están los valores de PIDF que estaban en su lugar, para que pueda establecerlos manualmente en sus opmodos:
HD HEX MOTORS (todas las cajas de cambios): Velocidad Valores PIDF: P = 1.17
, I = 0.117
, F = 11.7
Posición PIDF Valores: P = 5.0
Motor hexadecimal del núcleo: Velocidad PIDF Valores: P = 4.96
, I = 0.496
, F = 49.6
Posición Valores de PIDF: P = 5.0
Nuevas características
- Incluye el modelo de inferencia de flujo de tensor y los opmodos de muestra para detectar las pilas de arranque de objetivos finales (cuatro anillos frente a la pila de anillo único).
- Incluye objetivos de visión de objetivo de Vuporia y Opmodes de muestra.
- Introduce una función de zoom digital para la detección de objetos TensorFlow (para detectar objetos con mayor precisión a distancias mayores).
- Agrega la entrada de configuración para el motor HEX HD UltraPlanetary Rev
Mejoras
- Agrega métodos setgain () y getgain () a la interfaz NormalizedColorSensor
- Al establecer la ganancia de un sensor de color, puede ajustar para diferentes condiciones de iluminación. Por ejemplo, si detecta valores de color más bajos de lo esperado, puede aumentar la ganancia.
- El valor de ganancia solo se aplica a los métodos argb () y getNormalizedColors (), no a los métodos de color sin procesar. El método getNormalizedColors () se recomienda para facilitar y claridad, ya que argb () debe convertirse.
- Actualiza la muestra de Java SensorColor para demostrar el uso de ganancias
- Fusiona la muestra de Java SensorRevColordistance en la muestra de Java Sensorcolor, que muestra las mejores prácticas para todos los sensores de color
- Mejora la recuperación de valores del sensor de color Rev V3
- Actualiza el cálculo de normalización de los canales RGB
- Mejora el cálculo del canal alfa (se puede usar como un indicador de brillo general)
- Corrige la resolución de sensor predeterminada, lo que causó problemas con entornos brillantes
- Agrega soporte para cambiar la resolución y la tasa de medición del chip del sensor Broadcom
- Elimina lecturas y cálculos de IR no para el chip del sensor de Broadcom
Corrección de errores
- Mejora la confiabilidad de la inicialización de BNO055IMU IMU para evitar fallas de inicialización aleatoria (que se manifestó como
Problem with 'imu'
).
Versión 5.5 (20200824-090813)
La versión 5.5 requiere Android Studio 4.0 o posterior.
Nuevas características
- Agrega soporte para llamar a clases de Java personalizadas de Opmodes de bloques (corrige el problema de Skystone #161).
- Las clases deben estar en el paquete org.firstinspires.ftc.Teamcode.
- Para tener fácil acceso a Opmode, HardWarEmap, Telemetry, GamePad1 y GamePad2, las clases pueden extender org.firstinspires.ftc.Robotcore.external.BlockSopModeCompanion.
- Los métodos deben ser estáticos públicos y no tienen más de 21 parámetros.
- Los métodos deben anotarse con org.firstinspires.ftc.robotcore.external.exporttoblocks.
- Se admiten parámetros declarados como Opmode, LineApMode, Telemetry y HardWarEmap y el argumento se proporciona automáticamente, independientemente del orden de los parámetros. En el bloque, los enchufes para esos parámetros se llenan automáticamente.
- Los parámetros declarados como char o java.lang.character aceptarán cualquier bloque que devuelva el texto y solo usará el primer carácter en el texto.
- Los parámetros declarados como booleanos o java.lang.boolean aceptarán cualquier bloque que devuelva boolean.
- Parámetros declarados como byte, java.lang.byte, short, java.lang.short, int, java.lang.integer, long o java.lang.long, aceptará cualquier bloque que devuelva un número y redondee ese valor a el número entero más cercano.
- Los parámetros declarados como float, java.lang.float, double, java.lang.double aceptarán cualquier bloque que devuelva un número.
- Agrega el método API de telemetría para configurar el formato de visualización
- Clásico
- monoespacio
- HTML (solo ciertas etiquetas)
- Agrega soporte de bloques para cambiar de cámaras.
- Agrega soporte de bloques para la detección de objetos TensorFlow con un modelo personalizado.
- Agrega soporte para cargar un modelo de detección de objetos TensorFlow personalizado en la página Administrar, que es especialmente útil para los usuarios de bloques y ondbotjava.
- Muestra los nuevos códigos de parpadeo del cubo de control cuando la banda Wi-Fi se cambia utilizando el botón de control del cubo de control (solo es posible en el Hub de control OS 1.1.2)
- Agrega nuevas advertencias que se pueden deshabilitar en la configuración avanzada de RC
- Advertencia de versiones de aplicaciones no coincidentes
- ADVERTENCIA DE USO Wi-Fi innecesario de 2.4 GHz
- Rev Hub ejecuta un firmware obsoleto (más antiguo que la versión 1.8.2)
- Agrega soporte para Sony PS4 GamePad y reemplaza cómo funcionan los gamepads en la estación de conducir
- Elimina la preferencia que establece el tipo de gamepad en función de la posición del conductor. Reemplazado con un menú que permite especificar el tipo de gamepads con Vid y PID desconocidos
- Intentos de detectar automáticamente el tipo de gamepad basado en USB Vid y PID
- Si no se conocen GamePad Vid y PID, use el tipo especificado por el usuario para ese video y PID
- Si no se conoce GamePad Vid y PID y el usuario no ha especificado un tipo para ese video y PID, se hace una suposición educada sobre cómo mapear el gamepad
- La estación de conducir ahora intentará recuperarse automáticamente de una desconexión de un gamepad, y volver a asignarla a la posición a la que se asignó cuando disminuyó
- Si solo se asigna un gamepad y cae: se puede recuperar
- Si se asignan dos gamepads, y tienen diferentes firmas VID/PID, y solo una cae: se recuperará
- Si se asignan dos gamepads y tienen diferentes firmas de Vid/PID, y ambos caen: ambos se recuperarán
- Si se asignan dos gamepads, y tienen las mismas firmas VID/PID, y solo uno cae: se recuperará
- Si se asignan dos gamepads, y tienen las mismas firmas VID/PID, y ambos caen: ninguno de los dos se recuperará, debido a la ambigüedad de los gamepads cuando vuelven a aparecer en el autobús USB.
- Actualmente hay un caso de borde conocido: si hay dos gamepads con la misma firma VID/PID enchufada, pero solo se asigna uno , y ambos caen, es una probabilidad de 50-50 que se eligirá para la recuperación automática a La posición asignada: el controlador USB Bus está determinado por el controlador de bus USB.
- Agrega interfaz de usuario del paisaje a la estación de conducir
- Nueva característica: Temporizador de práctica con señales de audio
- Nueva característica (solo cubo de control): Indicador de resistencia a la conexión de red inalámbrica (0-5 barras)
- Nueva característica (solo cubo de control): tocar la pantalla de ping/canal cambiará a una pantalla alternativa que muestra la radio RX DBM y la velocidad del enlace (toque nuevamente para volver)
- El diseño no se autorotará. Puede cambiar el diseño del menú Configuración de la estación del conductor.
Cambios de ruptura
- Elimina el soporte para las versiones de Android 4.4 a 5.1 (KitKat y Lollipop). La minsdkversion ahora es de 23.
- Elimina los métodos de
LinearOpMode
desactivados waitOneFullHardwareCycle()
y waitForNextHardwareCycle()
Mejoras
- Maneja la dirección RS485 de Control Hub automáticamente
- El concentrador de control recibe automáticamente una dirección reservada
- Los archivos de configuración existentes continuarán funcionando
- Todas las direcciones en el rango de 1-10 todavía están disponibles para los centros de expansión
- La luz del cubo de control ahora normalmente será verde sólido, sin parpadear para indicar la dirección
- El CUCH DE CONTROL no se mostrará en la página Configuración de cambio de dirección de la dirección de expansión
- Mejora el actualizador de firmware de Rev Hub
- El usuario ahora puede elegir entre todos los archivos de actualización de firmware disponibles
- La versión 1.8.2 del firmware de Rev Hub se incluye en la aplicación Robot Controller.
- Se agregó texto para aclarar que los centros de expansión solo se pueden actualizar a través de USB.
- La velocidad de actualización del firmware se redujo para mejorar la confiabilidad
- Permite que Rev Hub Firmware se actualice directamente desde la página web Administrar
- Mejora el visor de registros en el controlador de robots
- Soporte de desplazamiento horizontal (ya no envuelve palabras)
- Admite pellizcar a zoom
- Utiliza una fuente monoespaciada
- Se destacan los mensajes de error
- Nuevo esquema de color
- Intentos de forzar un optimado fugitivo/atascado sin reiniciar toda la aplicación
- No todos los tipos de condiciones fugitivas son detenido, pero si el código de usuario intenta hablar con el hardware durante el fugitivo, el sistema debería poder capturarlo.
- Hace varios ajustes a la pantalla de auto -inspeccionar
- Renombra la "versión del sistema operativo" Entrada a "Versión de Android"
- Renombra el "nombre directo de Wi-Fi" a "Nombre Wi-Fi"
- Agrega la versión de control del sistema operativo Control, al ver el informe de un Hub de control
- Oculta la entrada del modo de avión, al ver el informe de un centro de control
- Elimina la verificación del cambiador de canal de velocidad ZTE
- Muestra la versión de firmware para todos los centros de expansión y control
- REBREWS DE CONFIGURACIÓN DE RED NETACIÓN Página
- Todas las configuraciones de red ahora se aplican con un solo clic
- El canal directo de Wi-Fi de los controladores de robot basados en el teléfono ahora se puede cambiar desde la página Administrar
- Los canales Wi-Fi se filtran por banda (2.4 vs 5 GHz) y si se superponen con otros canales
- El canal Wi-Fi actual se preselecciona en los controladores de robot basados en el teléfono y los centros de control que ejecutan OS 1.1.2 o posterior.
- En los centros de control que ejecutan OS 1.1.2 o posterior, puede elegir que el sistema seleccione automáticamente un canal en la banda de 5 GHz
- Mejora ondbotjava
- Nuevos temas de luz y oscuridad reemplazan los temas viejos (caos, github, cromo, ...)
- El nuevo tema predeterminado es
light
y se usará cuando actualice por primera vez a esta versión.
- Onbotjava ahora tiene un editor con pestañas
- Modo fuera de línea de solo lectura
- Mejora la función del elemento del menú "Salir" en el controlador de robot y la estación de conducir
- Ahora garantizado para estar completamente detenido y descargado de memoria
- Muestra un mensaje de advertencia si existe un modo LinearOpMode prematuramente debido a la falta de monitoreo de la condición de inicio
- Mejora el mensaje de error que se muestra cuando la estación del conductor y el controlador de robot son incompatibles entre sí
- El panel de control de Opmode de la estación del conductor ahora está deshabilitado mientras un robot de reinicio está en progreso
- Desactiva la configuración avanzada relacionadas con Wi-Fi Direct cuando el controlador de robot es un centro de control.
- Iconos de batería del teléfono con tintado en la estación del conductor cuando está bajo/crítico.
- Utiliza nombres "Control Hub Portal" y "Control Hub" (cuando es apropiado) en nuevos archivos de configuración
- Mejorar el rendimiento de lectura de I2C
- Mejora muy grande en el centro de control; hasta ~ 2 veces más rápido con lecturas pequeñas (p. Ej. 6 byte)
- No tan evidente en los centros de expansión conectados a un teléfono
- Infraestructura de actualización/actualización de compilación
- Actualización de 'Androidx' Biblioteca de soporte de 'com.android.support:appcompat', que es al final de la vida
- Actualizar TargetSDKVersion y CompileDKVersion a 28
- Actualizar el complemento de Android de Android Studio a la última
- Fix informó una marca de tiempo de compilación en la pantalla 'Acerca de'
- Agregar muestra ilustrando el uso de la cámara web manual: conceptwebcam
Corrección de errores
- Soluciona el problema de Skystone #248
- Soluciona el problema de Skystone #232 y modifica la semántica de almacenamiento en caché a granel para permitir las transiciones manuales/automáticas de preservación de caché.
- Mejora el rendimiento cuando el sensor de distancia de Rev 2m no se aplica
- Mejora la legibilidad de los mensajes de tostada en ciertos dispositivos
- Permite que una estación de conductor se conecte a un controlador de robot tras otro ha desconectado
- Mejora la generación de números de serie falsos para cámaras UVC que no proporcionan un número de serie real
- Anteriormente, algunos dispositivos asignarían a tales cámaras una serie de
0:0
y no se abre y comenzaron a transmitir - Corrige el problema ftc_app #638.
- Se corrige una serie de errores con el monitor de la cámara Vuforia que incluye:
- Se corrige el error donde la vista previa se puede mostrar con una relación de aspecto inestable
- Corrige el error donde la vista previa se puede cortar en el paisaje
- Se corrige el error donde la vista previa se endureció al teléfono al girar el teléfono
- Se corrige el error donde Crosshair podría derivar el objetivo cuando se usa cámaras web
- Se corrige el problema en el controlador UVC en algunos dispositivos (FTC_APP 681) Si la transmisión se inició/se detuvo varias veces seguidas
- Problema manifestado como pánico del núcleo en dispositivos que no tienen este parche de núcleo.
- En los dispositivos afectados que tienen el parche, el problema se manifestó como simplemente una falla para comenzar a transmitir.
- El equipo tecnológico cree que la causa raíz del problema es un error en el controlador de Linux Kernel XHCI. Se implementó una solución en el controlador SDK UVC.
- Se corrige el error en el controlador UVC donde a menudo se eliminaría la mitad de los cuadros de la cámara (por ejemplo, solo 15 fps entregados durante una sesión de transmisión configurada para 30 fps).
- Se corrige el problema donde la detección de objetos del flujo de tensor mostraría resultados cuya confianza era menor que el parámetro de confianza mínimo.
- Se corrige un problema de explotación potencial de CVE-2019-11358 en Onbotjava
- Correcciones Cambio de la dirección de un centro de expansión con centros de expansión adicionales conectados a él
- Preserva la conexión de red de control del centro de control cuando se selecciona "reiniciar el robot"
- Se corrige el problema donde fallarían los escaneos del dispositivo mientras el robot se reiniciaba
- Arreglar el uso de RenderScript
- Use la variante Androidx.Renderscript: mayor compatibilidad
- Use RenderScript en modo Java, no nativo: simplifica la compilación
- Se corrige el problema de conversión de la cámara web-frame-bitmap: Alpha Channel no se estaba inicializando, solo R, G y B
- Corrección posible desbordamiento aritmético en la fecha límite
- Corrección de un punto muerto en el soporte de cámara web de Vuforia que podría causar retrasos de 5 segundos al detener a Opmode
Versión 5.4 (20200108-101156)
- Corrección del problema de Skystone #88
- Agrega un elemento de inspección que señala cuando un controlador de robot (Hub de control) está utilizando la contraseña predeterminada de fábrica.
- Soluciona el problema de Skystone #61
- Soluciona el problema de Skystone #142
- Se corrige el problema FTC_APP #417 agregando más capacidades de monitoreo de corriente y voltaje para los centros de revoluciones.
- Corrige un bloqueo a veces causado por la actividad de Onbotjava
- Mejora la funcionalidad de AutoSave de Onbotjava ftc_app #738
- Se corrige el problema de la capacidad de respuesta del sistema cuando se desconecta un centro de expansión
- Se corrige el problema donde la inicialización de la IMU podría evitar que los opmodos se detengan
- Se corrige el problema donde fallando en AndroidTextTospeech.speak () si se llamara demasiado temprano
- Agrega métodos y bloques de Telemetry.speak (), que hacen que la estación del conductor (si también se actualiza) hable de texto
- Agrega y mejora advertencias relacionadas con la expansión
- Mejora la advertencia de batería del cubo de expansión
- Muestra la advertencia inmediatamente después de que el Hub informa que
- Especifica si la condición es actual o ocurre temporalmente durante una ejecución de Opmode
- Pantallas que cubos informaron batería baja
- Muestra advertencia cuando el Hub pierde y recupera energía durante una ejecución de Opmode
- Corrige el patrón LED del concentrador después de esta condición
- Muestra advertencia cuando la expansión no responde a los comandos
- Especifica si la condición es actual o ocurre temporalmente durante una ejecución de Opmode
- Aclara la advertencia cuando la expansión no está presente en el inicio
- Especifica que esta condición requiere un reinicio del robot antes de que se pueda usar el concentrador.
- La luz del centro ahora reflejará con precisión este estado
- Mejora el registro y reduce el spam de registro durante estas condiciones
- Sincrita el tiempo y la zona horaria de Control Hub a un navegador web conectado programando el robot, si no está disponible una estación de conductor.
- Agrega la funcionalidad de lectura a granel para los centros reveladores
- Se debe establecer un modo de almacenamiento en caché masivo en el nivel del cubo con
LynxModule#setBulkCachingMode()
. Esto se aplica a todas las clases de hardware SDK relevantes que hacen referencia a ese HUB. - Los siguientes modos de almacenamiento en caché a granel a continuación están disponibles:
-
BulkCachingMode.OFF
(predeterminado): todas las llamadas de hardware funcionan como de costumbre. Los datos a granel pueden leer a través de LynxModule#getBulkData()
y procesarse manualmente. -
BulkCachingMode.AUTO
. El caché también se puede borrar manualmente con LynxModule#clearBulkCache()
, aunque esto no se recomienda. - (Usuarios avanzados)
BulkCachingMode.MANUAL
: igual que BulkCachingMode.AUTO
excepto que el caché nunca se borra automáticamente. Para evitar obtener datos obsoletos, el caché debe limpiarse manualmente al comienzo de cada cuerpo de bucle o como el usuario considera apropiado.
- Elimina los valores de anotación de PIDF agregados en Rev 5.3 (a las configuraciones de motor AndyMark, Gobilda y Tetrix).
- The new motor types will still be available but their Default control behavior will revert back to Rev 5.2
- Adds new
ConceptMotorBulkRead
sample Opmode to demonstrate and compare Motor Bulk-Read modes for reducing I/O latencies.
Version 5.3 (20191004-112306)
- Fixes external USB/UVC webcam support
- Makes various bugfixes and improvements to Blocks page, including but not limited to:
- Many visual tweaks
- Browser zoom and window resize behave better
- Resizing the Java preview pane works better and more consistently across browsers
- The Java preview pane consistently gets scrollbars when needed
- The Java preview pane is hidden by default on phones
- Internet Explorer 11 should work
- Large dropdown lists display properly on lower res screens
- Disabled buttons are now visually identifiable as disabled
- A warning is shown if a user selects a TFOD sample, but their device is not compatible
- Warning messages in a Blocks OpMode are now visible by default.
- Adds goBILDA 5201 and 5202 motors to Robot Configurator
- Adds PIDF Annotation values to AndyMark, goBILDA and TETRIX motor configurations. This has the effect of causing the RUN_USING_ENCODERS and RUN_TO_POSITION modes to use PIDF vs PID closed loop control on these motors. This should provide more responsive, yet stable, speed control. PIDF adds Feedforward control to the basic PID control loop. Feedforward is useful when controlling a motor's speed because it "anticipates" how much the control voltage must change to achieve a new speed set-point, rather than requiring the integrated error to change sufficiently. The PIDF values were chosen to provide responsive, yet stable, speed control on a lightly loaded motor. The more heavily a motor is loaded (drag or friction), the more noticable the PIDF improvement will be.
- Fixes startup crash on Android 10
- Fixes ftc_app issue #712 (thanks to FROGbots-4634)
- Fixes ftc_app issue #542
- Allows "A" and lowercase letters when naming device through RC and DS apps.
Version 5.2 (20190905-083277)
- Fixes extra-wide margins on settings activities, and placement of the new configuration button
- Adds Skystone Vuforia image target data.
- Includes sample Skystone Vuforia Navigation OpModes (Java).
- Includes sample Skystone Vuforia Navigation OpModes (Blocks).
- Adds TensorFlow inference model (.tflite) for Skystone game elements.
- Includes sample Skystone TensorFlow OpModes (Java).
- Includes sample Skystone TensorFlow OpModes (Blocks).
- Removes older (season-specific) sample OpModes.
- Includes 64-bit support (to comply with Google Play requirements).
- Protects against Stuck OpModes when a Restart Robot is requested. (Thanks to FROGbots-4634) (ftc_app issue #709)
- Blocks related changes:
- Fixes bug with blocks generated code when hardware device name is a java or javascript reserved word.
- Shows generated java code for blocks, even when hardware items are missing from the active configuration.
- Displays warning icon when outdated Vuforia and TensorFlow blocks are used (SkyStone issue #27)
Version 5.1 (20190820-222104)
- Defines default PIDF parameters for the following motors:
- REV Core Hex Motor
- REV 20:1 HD Hex Motor
- REV 40:1 HD Hex Motor
- Adds back button when running on a device without a system back button (such as a Control Hub)
- Allows a REV Control Hub to update the firmware on a REV Expansion Hub via USB
- Fixes SkyStone issue #9
- Fixes ftc_app issue #715
- Prevents extra DS User clicks by filtering based on current state.
- Prevents incorrect DS UI state changes when receiving new OpMode list from RC
- Adds support for REV Color Sensor V3
- Adds a manual-refresh DS Camera Stream for remotely viewing RC camera frames.
- To show the stream on the DS, initialize but do not run a stream-enabled opmode, select the Camera Stream option in the DS menu, and tap the image to refresh. This feature is automatically enabled when using Vuforia or TFOD—no additional RC configuration is required for typical use cases. To hide the stream, select the same menu item again.
- Note that gamepads are disabled and the selected opmode cannot be started while the stream is open as a safety precaution.
- To use custom streams, consult the API docs for
CameraStreamServer#setSource
and CameraStreamSource
.
- Adds many Star Wars sounds to RobotController resources.
- Added Skystone Sounds Chooser Sample Program.
- Switches out startup, connect chimes, and error/warning sounds for Star Wars sounds
- Updates OnBot Java to use a WebSocket for communication with the robot
- The OnBot Java page no longer has to do a full refresh when a user switches from editing one file to another
Known issues:
- Camera Stream
- The Vuforia camera stream inherits the issues present in the phone preview (namely ftc_app issue #574). This problem does not affect the TFOD camera stream even though it receives frames from Vuforia.
- The orientation of the stream frames may not always match the phone preview. For now, these frames may be rotated manually via a custom
CameraStreamSource
if desired.
- OnBotJava
- Browser back button may not always work correctly
- It's possible for a build to be queued, but not started. The OnBot Java build console will display a warning if this occurs.
- A user might not realize they are editing a different file if the user inadvertently switches from one file to another since this switch is now seamless. The name of the currently open file is displayed in the browser tab.
Version 5.0 (built on 19.06.14)
- Support for the REV Robotics Control Hub.
- Adds a Java preview pane to the Blocks editor.
- Adds a new offline export feature to the Blocks editor.
- Display Wi-Fi channel in Network circle on Driver Station.
- Adds calibration for Logitech C270
- Updates build tooling and target SDK.
- Compliance with Google's permissions infrastructure (Required after build tooling update).
- Keep Alives to mitigate the Motorola Wi-Fi scanning problem. Telemetry substitute no longer necessary.
- Improves Vuforia error reporting.
- Fixes ftctechnh/ftc_app issues 621, 713.
- Miscellaneous bug fixes and improvements.
Version 4.3 (built on 18.10.31)
- Includes missing TensorFlow-related libraries and files.
Version 4.2 (built on 18.10.30)
- Includes fix to avoid deadlock situation with WatchdogMonitor which could result in USB communication errors.
- Comm error appeared to require that user disconnect USB cable and restart the Robot Controller app to recover.
- robotControllerLog.txt would have error messages that included the words "E RobotCore: lynx xmit lock: #### abandoning lock:"
- Includes fix to correctly list the parent module address for a REV Robotics Expansion Hub in a configuration (.xml) file.
- Bug in versions 4.0 and 4.1 would incorrect list the address module for a parent REV Robotics device as "1".
- If the parent module had a higher address value than the daisy-chained module, then this bug would prevent the Robot Controller from communicating with the downstream Expansion Hub.
- Added requirement for ACCESS_COARSE_LOCATION to allow a Driver Station running Android Oreo to scan for Wi-Fi Direct devices.
- Added google() repo to build.gradle because aapt2 must be downloaded from the google() repository beginning with version 3.2 of the Android Gradle Plugin.
- Important Note: Android Studio users will need to be connected to the Internet the first time build the ftc_app project.
- Internet connectivity is required for the first build so the appropriate files can be downloaded from the Google repository.
- Users should not need to be connected to the Internet for subsequent builds.
- This should also fix buid issue where Android Studio would complain that it "Could not find com.android.tools.lint:lint-gradle:26.1.4" (or similar).
- Added support for REV Spark Mini motor controller as part of the configuration menu for a servo/PWM port on the REV Expansion Hub.
- Provide examples for playing audio files in an OpMode.
- Block Development Tool Changes
- Includes a fix for a problem with the Velocity blocks that were reported in the FTC Technology forum (Blocks Programming subforum).
- Change the "Save completed successfully." message to a white color so it will contrast with a green background.
- Fixed the "Download image" feature so it will work if there are text blocks in the OpMode.
- Introduce support for Google's TensorFlow Lite technology for object detetion for 2018-2019 game.
- TensorFlow lite can recognize Gold Mineral and Silver Mineral from 2018-2019 game.
- Example Java and Block OpModes are included to show how to determine the relative position of the gold block (left, center, right).
Version 4.1 (released on 18.09.24)
Changes include:
- Fix to prevent crash when deprecated configuration annotations are used.
- Change to allow FTC Robot Controller APK to be auto-updated using FIRST Global Control Hub update scripts.
- Removed samples for non supported / non legal hardware.
- Improvements to Telemetry.addData block with "text" socket.
- Updated Blocks sample OpMode list to include Rover Ruckus Vuforia example.
- Update SDK library version number.
Version 4.0 (released on 18.09.12)
Changes include:
Initial support for UVC compatible cameras
- If UVC camera has a unique serial number, RC will detect and enumerate by serial number.
- If UVC camera lacks a unique serial number, RC will only support one camera of that type connected.
- Calibration settings for a few cameras are included (see TeamCode/src/main/res/xml/teamwebcamcalibrations.xml for details).
- User can upload calibration files from Program and Manage web interface.
- UVC cameras seem to draw a fair amount of electrical current from the USB bus.
- This does not appear to present any problems for the REV Robotics Control Hub.
- This does seem to create stability problems when using some cameras with an Android phone-based Robot Controller.
- FTC Tech Team is investigating options to mitigate this issue with the phone-based Robot Controllers.
- Updated sample Vuforia Navigation and VuMark OpModes to demonstrate how to use an internal phone-based camera and an external UVC webcam.
Support for improved motor control.
- REV Robotics Expansion Hub firmware 1.8 and greater will support a feed forward mechanism for closed loop motor control.
- FTC SDK has been modified to support PIDF coefficients (proportional, integral, derivative, and feed forward).
- FTC Blocks development tool modified to include PIDF programming blocks.
- Deprecated older PID-related methods and variables.
- REV's 1.8.x PIDF-related changes provide a more linear and accurate way to control a motor.
Inalámbrico
- Added 5GHz support for wireless channel changing for those devices that support it.
- Tested with Moto G5 and E4 phones.
- Also tested with other (currently non-approved) phones such as Samsung Galaxy S8.
Improved Expansion Hub firmware update support in Robot Controller app
- Changes to make the system more robust during the firmware update process (when performed through Robot Controller app).
- User no longer has to disconnect a downstream daisy-chained Expansion Hub when updating an Expansion Hub's firmware.
- If user is updating an Expansion Hub's firmware through a USB connection, he/she does not have to disconnect RS485 connection to other Expansion Hubs.
- The user still must use a USB connection to update an Expansion Hub's firmware.
- The user cannot update the Expansion Hub firmware for a downstream device that is daisy chained through an RS485 connection.
- If an Expansion Hub accidentally gets "bricked" the Robot Controller app is now more likely to recognize the Hub when it scans the USB bus.
- Robot Controller app should be able to detect an Expansion Hub, even if it accidentally was bricked in a previous update attempt.
- Robot Controller app should be able to install the firmware onto the Hub, even if if accidentally was bricked in a previous update attempt.
Resistencia
- FTC software can detect and enable an FTDI reset feature that is available with REV Robotics v1.8 Expansion Hub firmware and greater.
- When enabled, the Expansion Hub can detect if it hasn't communicated with the Robot Controller over the FTDI (USB) connection.
- If the Hub hasn't heard from the Robot Controller in a while, it will reset the FTDI connection.
- This action helps system recover from some ESD-induced disruptions.
- Various fixes to improve reliability of FTC software.
Bloques
- Fixed errors with string and list indices in blocks export to java.
- Support for USB connected UVC webcams.
- Refactored optimized Blocks Vuforia code to support Rover Ruckus image targets.
- Added programming blocks to support PIDF (proportional, integral, derivative and feed forward) motor control.
- Added formatting options (under Telemetry and Miscellaneous categories) so user can set how many decimal places to display a numerical value.
- Support to play audio files (which are uploaded through Blocks web interface) on Driver Station in addition to the Robot Controller.
- Fixed bug with Download Image of Blocks feature.
- Support for REV Robotics Blinkin LED Controller.
- Support for REV Robotics 2m Distance Sensor.
- Added support for a REV Touch Sensor (no longer have to configure as a generic digital device).
- Added blocks for DcMotorEx methods.
- These are enhanced methods that you can use when supported by the motor controller hardware.
- The REV Robotics Expansion Hub supports these enhanced methods.
- Enhanced methods include methods to get/set motor velocity (in encoder pulses per second), get/set PIDF coefficients, etc..
Modest Improvements in Logging
- Decrease frequency of battery checker voltage statements.
- Removed non-FTC related log statements (wherever possible).
- Introduced a "Match Logging" feature.
- Under "Settings" a user can enable/disable this feature (it's disabled by default).
- If enabled, user provides a "Match Number" through the Driver Station user interface (top of the screen).
- The Match Number is used to create a log file specifically with log statements from that particular OpMode run.
- Match log files are stored in /sdcard/FIRST/matlogs on the Robot Controller.
- Once an OpMode run is complete, the Match Number is cleared.
- This is a convenient way to create a separate match log with statements only related to a specific OpMode run.
New Devices
- Support for REV Robotics Blinkin LED Controller.
- Support for REV Robotics 2m Distance Sensor.
- Added configuration option for REV 20:1 HD Hex Motor.
- Added support for a REV Touch Sensor (no longer have to configure as a generic digital device).
Misceláneas
- Fixed some errors in the definitions for acceleration and velocity in our javadoc documentation.
- Added ability to play audio files on Driver Station
- When user is configuring an Expansion Hub, the LED on the Expansion Hub will change blink pattern (purple-cyan) to indicate which Hub is currently being configured.
- Renamed I2cSensorType to I2cDeviceType.
- Added an external sample OpMode that demonstrates localization using 2018-2019 (Rover Ruckus presented by QualComm) Vuforia targets.
- Added an external sample OpMode that demonstrates how to use the REV Robotics 2m Laser Distance Sensor.
- Added an external sample OpMode that demonstrates how to use the REV Robotics Blinkin LED Controller.
- Re-categorized external Java sample OpModes to "TeleOp" instead of "Autonomous".
Known issues:
Version 3.6 (built on 17.12.18)
Changes include:
- Blocks Changes
- Uses updated Google Blockly software to allow users to edit their OpModes on Apple iOS devices (including iPad and iPhone).
- Improvement in Blocks tool to handle corrupt OpMode files.
- Autonomous OpModes should no longer get switched back to tele-op after re-opening them to be edited.
- The system can now detect type mismatches during runtime and alert the user with a message on the Driver Station.
- Updated javadoc documentation for setPower() method to reflect correct range of values (-1 to +1).
- Modified VuforiaLocalizerImpl to allow for user rendering of frames
- Added a user-overrideable onRenderFrame() method which gets called by the class's renderFrame() method.
Version 3.5 (built on 17.10.30)
Changes with version 3.5 include:
- Introduced a fix to prevent random OpMode stops, which can occur after the Robot Controller app has been paused and then resumed (for example, when a user temporarily turns off the display of the Robot Controller phone, and then turns the screen back on).
- Introduced a fix to prevent random OpMode stops, which were previously caused by random peer disconnect events on the Driver Station.
- Fixes issue where log files would be closed on pause of the RC or DS, but not re-opened upon resume.
- Fixes issue with battery handler (voltage) start/stop race.
- Fixes issue where Android Studio generated OpModes would disappear from available list in certain situations.
- Fixes problem where OnBot Java would not build on REV Robotics Control Hub.
- Fixes problem where OnBot Java would not build if the date and time on the Robot Controller device was "rewound" (set to an earlier date/time).
- Improved error message on OnBot Java that occurs when renaming a file fails.
- Removed unneeded resources from android.jar binaries used by OnBot Java to reduce final size of Robot Controller app.
- Added MR_ANALOG_TOUCH_SENSOR block to Blocks Programming Tool.
Version 3.4 (built on 17.09.06)
Changes with version 3.4 include:
- Added telemetry.update() statement for BlankLinearOpMode template.
- Renamed sample Block OpModes to be more consistent with Java samples.
- Added some additional sample Block OpModes.
- Reworded OnBot Java readme slightly.
Version 3.3 (built on 17.09.04)
This version of the software includes improves for the FTC Blocks Programming Tool and the OnBot Java Programming Tool.
Changes with verion 3.3 include:
- Android Studio ftc_app project has been updated to use Gradle Plugin 2.3.3.
- Android Studio ftc_app project is already using gradle 3.5 distribution.
- Robot Controller log has been renamed to /sdcard/RobotControllerLog.txt (note that this change was actually introduced w/ v3.2).
- Improvements in I2C reliability.
- Optimized I2C read for REV Expansion Hub, with v1.7 firmware or greater.
- Updated all external/samples (available through OnBot and in Android project folder).
- Vuforia
- Added support for VuMarks that will be used for the 2017-2018 season game.
- Bloques
- Update to latest Google Blockly release.
- Sample OpModes can be selected as a template when creating new OpMode.
- Fixed bug where the blocks would disappear temporarily when mouse button is held down.
- Added blocks for Range.clip and Range.scale.
- User can now disable/enable Block OpModes.
- Fix to prevent occasional Blocks deadlock.
- OnBot Java
- Significant improvements with autocomplete function for OnBot Java editor.
- Sample OpModes can be selected as a template when creating new OpMode.
- Fixes and changes to complete hardware setup feature.
- Updated (and more useful) onBot welcome message.
Known issues:
- Estudio Android
- After updating to the new v3.3 Android Studio project folder, if you get error messages indicating "InvalidVirtualFileAccessException" then you might need to do a File->Invalidate Caches / Restart to clear the error.
- OnBot Java
- Sometimes when you push the build button to build all OpModes, the RC returns an error message that the build failed. If you press the build button a second time, the build typically suceeds.
Version 3.2 (built on 17.08.02)
This version of the software introduces the "OnBot Java" Development Tool. Similar to the FTC Blocks Development Tool, the FTC OnBot Java Development Tool allows a user to create, edit and build OpModes dynamically using only a Javascript-enabled web browser.
The OnBot Java Development Tool is an integrated development environment (IDE) that is served up by the Robot Controller. OpModes are created and edited using a Javascript-enabled browser (Google Chromse is recommended). OpModes are saved on the Robot Controller Android device directly.
The OnBot Java Development Tool provides a Java programming environment that does NOT need Android Studio.
Changes with version 3.2 include:
Enhanced web-based development tools
- Introduction of OnBot Java Development Tool.
- Web-based programming and management features are "always on" (user no longer needs to put Robot Controller into programming mode).
- Web-based management interface (where user can change Robot Controller name and also easily download Robot Controller log file).
- OnBot Java, Blocks and Management features available from web based interface.
Blocks Programming Development Tool:
- Changed "LynxI2cColorRangeSensor" block to "REV Color/range sensor" block.
- Fixed tooltip for ColorSensor.isLightOn block. Added blocks for ColorSensor.getNormalizedColors and LynxI2cColorRangeSensor.getNormalizedColors.
Added example OpModes for digital touch sensor and REV Robotics Color Distance sensor.
User selectable color themes.
Includes many minor enhancements and fixes (too numerous to list).
Known issues:
- Auto complete function is incomplete and does not support the following (for now):
- Access via this keyword
- Access via super keyword
- Members of the super cloass, not overridden by the class
- Any methods provided in the current class
- Inner classes
- Can't handle casted objects
- Any objects coming from an parenthetically enclosed expression
Version 3.10 (built on 17.05.09)
This version of the software provides support for the REV Robotics Expansion Hub. This version also includes improvements in the USB communication layer in an effort to enhance system resiliency. If you were using a 2.x version of the software previously, updating to version 3.1 requires that you also update your Driver Station software in addition to updating the Robot Controller software.
Also note that in version 3.10 software, the setMaxSpeed and getMaxSpeed methods are no longer available (not deprecated, they have been removed from the SDK). Also note that the new 3.x software incorporates motor profiles that a user can select as he/she configures the robot.
Changes include:
- Blocks changes
- Added VuforiaTrackableDefaultListener.getPose and Vuforia.trackPose blocks.
- Added optimized blocks support for Vuforia extended tracking.
- Added atan2 block to the math category.
- Added useCompetitionFieldTargetLocations parameter to Vuforia.initialize block. If set to false, the target locations are placed at (0,0,0) with target orientation as specified in https://github.com/gearsincorg/FTCVuforiaDemo/blob/master/Robot_Navigation.java tutorial OpMode.
- Incorporates additional improvements to USB comm layer to improve system resiliency (to recover from a greater number of communication disruptions).
Additional Notes Regarding Version 3.00 (built on 17.04.13)
In addition to the release changes listed below (see section labeled "Version 3.00 (built on 17.04.013)"), version 3.00 has the following important changes:
- Version 3.00 software uses a new version of the FTC Robocol (robot protocol). If you upgrade to v3.0 on the Robot Controller and/or Android Studio side, you must also upgrade the Driver Station software to match the new Robocol.
- Version 3.00 software removes the setMaxSpeed and getMaxSpeed methods from the DcMotor class. If you have an OpMode that formerly used these methods, you will need to remove the references/calls to these methods. Instead, v3.0 provides the max speed information through the use of motor profiles that are selected by the user during robot configuration.
- Version 3.00 software currently does not have a mechanism to disable extra i2c sensors. We hope to re-introduce this function with a release in the near future.
Version 3.00 (built on 17.04.13)
*** Use this version of the software at YOUR OWN RISK!!! ***
This software is being released as an "alpha" version. Use this version at your own risk!
This pre-release software contains SIGNIFICANT changes, including changes to the Wi-Fi Direct pairing mechanism, rewrites of the I2C sensor classes, changes to the USB/FTDI layer, and the introduction of support for the REV Robotics Expansion Hub and the REV Robotics color-range-light sensor. These changes were implemented to improve the reliability and resiliency of the FTC control system.
Please note, however, that version 3.00 is considered "alpha" code. This code is being released so that the FIRST community will have an opportunity to test the new REV Expansion Hub electronics module when it becomes available in May. The developers do not recommend using this code for critical applications (ie, competition use).
*** Use this version of the software at YOUR OWN RISK!!! ***
Changes include:
- Major rework of sensor-related infrastructure. Includes rewriting sensor classes to implement synchronous I2C communication.
- Fix to reset Autonomous timer back to 30 seconds.
- Implementation of specific motor profiles for approved 12V motors (includes Tetrix, AndyMark, Matrix and REV models).
- Modest improvements to enhance Wi-Fi P2P pairing.
- Fixes telemetry log addition race.
- Publishes all the sources (not just a select few).
- Includes Block programming improvements
- Addition of optimized Vuforia blocks.
- Auto scrollbar to projects and sounds pages.
- Fixed blocks paste bug.
- Blocks execute after while-opModeIsActive loop (to allow for cleanup before exiting OpMode).
- Added gyro integratedZValue block.
- Fixes bug with projects page for Firefox browser.
- Added IsSpeaking block to AndroidTextToSpeech.
- Implements support for the REV Robotics Expansion Hub
- Implements support for integral REV IMU (physically installed on I2C bus 0, uses same Bosch BNO055 9 axis absolute orientation sensor as Adafruit 9DOF abs orientation sensor). - Implements support for REV color/range/light sensor.
- Provides support to update Expansion Hub firmware through FTC SDK.
- Detects REV firmware version and records in log file.
- Includes support for REV Control Hub (note that the REV Control Hub is not yet approved for FTC use).
- Implements FTC Blocks programming support for REV Expansion Hub and sensor hardware.
- Detects and alerts when I2C device disconnect.
Version 2.62 (built on 17.01.07)
- Added null pointer check before calling modeToByte() in finishModeSwitchIfNecessary method for ModernRoboticsUsbDcMotorController class.
- Changes to enhance Modern Robotics USB protocol robustness.
Version 2.61 (released on 16.12.19)
- Blocks Programming mode changes:
- Fix to correct issue when an exception was thrown because an OpticalDistanceSensor object appears twice in the hardware map (the second time as a LightSensor).
Version 2.6 (released on 16.12.16)
- Fixes for Gyro class:
- Improve (decrease) sensor refresh latency.
- fix isCalibrating issues.
- Blocks Programming mode changes:
- Blocks now ignores a device in the configuration xml if the name is empty. Other devices work in configuration work fine.
Version 2.5 (internal release on released on 16.12.13)
- Blocks Programming mode changes:
- Added blocks support for AdafruitBNO055IMU.
- Added Download OpMode button to FtcBocks.html.
- Added support for copying blocks in one OpMode and pasting them in an other OpMode. The clipboard content is stored on the phone, so the programming mode server must be running.
- Modified Utilities section of the toolbox.
- In Programming Mode, display information about the active connections.
- Fixed paste location when workspace has been scrolled.
- Added blocks support for the android Accelerometer.
- Fixed issue where Blocks Upload OpMode truncated name at first dot.
- Added blocks support for Android SoundPool.
- Added type safety to blocks for Acceleration.
- Added type safety to blocks for AdafruitBNO055IMU.Parameters.
- Added type safety to blocks for AnalogInput.
- Added type safety to blocks for AngularVelocity.
- Added type safety to blocks for Color.
- Added type safety to blocks for ColorSensor.
- Added type safety to blocks for CompassSensor.
- Added type safety to blocks for CRServo.
- Added type safety to blocks for DigitalChannel.
- Added type safety to blocks for ElapsedTime.
- Added type safety to blocks for Gamepad.
- Added type safety to blocks for GyroSensor.
- Added type safety to blocks for IrSeekerSensor.
- Added type safety to blocks for LED.
- Added type safety to blocks for LightSensor.
- Added type safety to blocks for LinearOpMode.
- Added type safety to blocks for MagneticFlux.
- Added type safety to blocks for MatrixF.
- Added type safety to blocks for MrI2cCompassSensor.
- Added type safety to blocks for MrI2cRangeSensor.
- Added type safety to blocks for OpticalDistanceSensor.
- Added type safety to blocks for Orientation.
- Added type safety to blocks for Position.
- Added type safety to blocks for Quaternion.
- Added type safety to blocks for Servo.
- Added type safety to blocks for ServoController.
- Added type safety to blocks for Telemetry.
- Added type safety to blocks for Temperature.
- Added type safety to blocks for TouchSensor.
- Added type safety to blocks for UltrasonicSensor.
- Added type safety to blocks for VectorF.
- Added type safety to blocks for Velocity.
- Added type safety to blocks for VoltageSensor.
- Added type safety to blocks for VuforiaLocalizer.Parameters.
- Added type safety to blocks for VuforiaTrackable.
- Added type safety to blocks for VuforiaTrackables.
- Added type safety to blocks for enums in AdafruitBNO055IMU.Parameters.
- Added type safety to blocks for AndroidAccelerometer, AndroidGyroscope, AndroidOrientation, and AndroidTextToSpeech.
Version 2.4 (released on 16.11.13)
- Fix to avoid crashing for nonexistent resources.
- Blocks Programming mode changes:
- Added blocks to support OpenGLMatrix, MatrixF, and VectorF.
- Added blocks to support AngleUnit, AxesOrder, AxesReference, CameraDirection, CameraMonitorFeedback, DistanceUnit, and TempUnit.
- Added blocks to support Acceleration.
- Added blocks to support LinearOpMode.getRuntime.
- Added blocks to support MagneticFlux and Position.
- Fixed typos.
- Made blocks for ElapsedTime more consistent with other objects.
- Added blocks to support Quaternion, Velocity, Orientation, AngularVelocity.
- Added blocks to support VuforiaTrackables, VuforiaTrackable, VuforiaLocalizer, VuforiaTrackableDefaultListener.
- Fixed a few blocks.
- Added type checking to new blocks.
- Updated to latest blockly.
- Added default variable blocks to navigation and matrix blocks.
- Fixed toolbox entry for openGLMatrix_rotation_withAxesArgs.
- When user downloads Blocks-generated OpMode, only the .blk file is downloaded.
- When user uploads Blocks-generated OpMode (.blk file), Javascript code is auto generated.
- Added DbgLog support.
- Added logging when a blocks file is read/written.
- Fixed bug to properly render blocks even if missing devices from configuration file.
- Added support for additional characters (not just alphanumeric) for the block file names (for download and upload).
- Added support for OpMode flavor (“Autonomous” or “TeleOp”) and group.
- Changes to Samples to prevent tutorial issues.
- Incorporated suggested changes from public pull 216 (“Replace .. paths”).
- Remove Servo Glitches when robot stopped.
- if user hits “Cancels” when editing a configuration file, clears the unsaved changes and reverts to original unmodified configuration.
- Added log info to help diagnose why the Robot Controller app was terminated (for example, by watch dog function).
- Added ability to transfer log from the controller.
- Fixed inconsistency for AngularVelocity
- Limit unbounded growth of data for telemetry. If user does not call telemetry.update() for LinearOpMode in a timely manner, data added for telemetry might get lost if size limit is exceeded.
Version 2.35 (released on 16.10.06)
- Blockly programming mode - Removed unnecesary idle() call from blocks for new project.
Version 2.30 (released on 16.10.05)
- Blockly programming mode:
- Mechanism added to save Blockly OpModes from Programming Mode Server onto local device
- To avoid clutter, blocks are displayed in categorized folders
- Added support for DigitalChannel
- Added support for ModernRoboticsI2cCompassSensor
- Added support for ModernRoboticsI2cRangeSensor
- Added support for VoltageSensor
- Added support for AnalogInput
- Added support for AnalogOutput
- Fix for CompassSensor setMode block
- Vuforia
- Fix deadlock / make camera data available while Vuforia is running.
- Update to Vuforia 6.0.117 (recommended by Vuforia and Google to close security loophole).
- Fix for autonomous 30 second timer bug (where timer was in effect, even though it appeared to have timed out).
- opModeIsActive changes to allow cleanup after OpMode is stopped (with enforced 2 second safety timeout).
- Fix to avoid reading i2c twice.
- Updated sample OpModes.
- Improved logging and fixed intermittent freezing.
- Added digital I/O sample.
- Cleaned up device names in sample OpModes to be consistent with Pushbot guide.
- Fix to allow use of IrSeekerSensorV3.
Version 2.20 (released on 16.09.08)
- Support for Modern Robotics Compass Sensor.
- Support for Modern Robotics Range Sensor.
- Revise device names for Pushbot templates to match the names used in Pushbot guide.
- Fixed bug so that IrSeekerSensorV3 device is accessible as IrSeekerSensor in hardwareMap.
- Modified computer vision code to require an individual Vuforia license (per legal requirement from PTC).
- Correcciones menores.
- Blockly enhancements:
- Support for Voltage Sensor.
- Support for Analog Input.
- Support for Analog Output.
- Support for Light Sensor.
- Support for Servo Controller.
Version 2.10 (released on 16.09.03)
- Support for Adafruit IMU.
- Improvements to ModernRoboticsI2cGyro class
- Block on reset of z axis.
- isCalibrating() returns true while gyro is calibration.
- Updated sample gyro program.
- Blockly enhancements
- support for android.graphics.Color.
- added support for ElapsedTime.
- improved look and legibility of blocks.
- support for compass sensor.
- support for ultrasonic sensor.
- support for IrSeeker.
- support for LED.
- support for color sensor.
- support for CRServo
- prompt user to configure robot before using programming mode.
- Provides ability to disable audio cues.
- various bug fixes and improvements.
Version 2.00 (released on 16.08.19)
- This is the new release for the upcoming 2016-2017 FIRST Tech Challenge Season.
- Channel change is enabled in the FTC Robot Controller app for Moto G 2nd and 3rd Gen phones.
- Users can now use annotations to register/disable their OpModes.
- Changes in the Android SDK, JDK and build tool requirements (minsdk=19, java 1.7, build tools 23.0.3).
- Standardized units in analog input.
- Cleaned up code for existing analog sensor classes.
- setChannelMode and getChannelMode were REMOVED from the DcMotorController class. This is important - we no longer set the motor modes through the motor controller.
- setMode and getMode were added to the DcMotor class.
- ContinuousRotationServo class has been added to the FTC SDK.
- Range.clip() method has been overloaded so it can support this operation for int, short and byte integers.
- Some changes have been made (new methods added) on how a user can access items from the hardware map.
- Users can now set the zero power behavior for a DC motor so that the motor will brake or float when power is zero.
- Prototype Blockly Programming Mode has been added to FTC Robot Controller. Users can place the Robot Controller into this mode, and then use a device (such as a laptop) that has a Javascript enabled browser to write Blockly-based OpModes directly onto the Robot Controller.
- Users can now configure the robot remotely through the FTC Driver Station app.
- Android Studio project supports Android Studio 2.1.x and compile SDK Version 23 (Marshmallow).
- Vuforia Computer Vision SDK integrated into FTC SDK. Users can use sample vision targets to get localization information on a standard FTC field.
- Project structure has been reorganized so that there is now a TeamCode package that users can use to place their local/custom OpModes into this package.
- Inspection function has been integrated into the FTC Robot Controller and Driver Station Apps (Thanks Team HazMat… 9277 & 10650!).
- Audio cues have been incorporated into FTC SDK.
- Swap mechanism added to FTC Robot Controller configuration activity. For example, if you have two motor controllers on a robot, and you misidentified them in your configuration file, you can use the Swap button to swap the devices within the configuration file (so you do not have to manually re-enter in the configuration info for the two devices).
- Fix mechanism added to all user to replace an electronic module easily. For example, suppose a servo controller dies on your robot. You replace the broken module with a new module, which has a different serial number from the original servo controller. You can use the Fix button to automatically reconfigure your configuration file to use the serial number of the new module.
- Improvements made to fix resiliency and responsiveness of the system.
- For LinearOpMode the user now must for a telemetry.update() to update the telemetry data on the driver station. This update() mechanism ensures that the driver station gets the updated data properly and at the same time.
- The Auto Configure function of the Robot Controller is now template based. If there is a commonly used robot configuration, a template can be created so that the Auto Configure mechanism can be used to quickly configure a robot of this type.
- The logic to detect a runaway OpMode (both in the LinearOpMode and OpMode types) and to abort the run, then auto recover has been improved/implemented.
- Fix has been incorporated so that Logitech F310 gamepad mappings will be correct for Marshmallow users.
Release 16.07.08
- For the ftc_app project, the gradle files have been modified to support Android Studio 2.1.x.
Release 16.03.30
- For the MIT App Inventor, the design blocks have new icons that better represent the function of each design component.
- Some changes were made to the shutdown logic to ensure the robust shutdown of some of our USB services.
- A change was made to LinearOpMode so as to allow a given instance to be executed more than once, which is required for the App Inventor.
- Javadoc improved/updated.
Release 16.03.09
- Changes made to make the FTC SDK synchronous (significant change!)
- waitOneFullHardwareCycle() and waitForNextHardwareCycle() are no longer needed and have been deprecated.
- runOpMode() (for a LinearOpMode) is now decoupled from the system's hardware read/write thread.
- loop() (for an OpMode) is now decoupled from the system's hardware read/write thread.
- Methods are synchronous.
- For example, if you call setMode(DcMotorController.RunMode.RESET_ENCODERS) for a motor, the encoder is guaranteed to be reset when the method call is complete.
- For legacy module (NXT compatible), user no longer has to toggle between read and write modes when reading from or writing to a legacy device.
- Changes made to enhance reliability/robustness during ESD event.
- Changes made to make code thread safe.
- Debug keystore added so that user-generated robot controller APKs will all use the same signed key (to avoid conflicts if a team has multiple developer laptops for example).
- Firmware version information for Modern Robotics modules are now logged.
- Changes made to improve USB comm reliability and robustness.
- Added support for voltage indicator for legacy (NXT-compatible) motor controllers.
- Changes made to provide auto stop capabilities for OpModes.
- A LinearOpMode class will stop when the statements in runOpMode() are complete. User does not have to push the stop button on the driver station.
- If an OpMode is stopped by the driver station, but there is a run away/uninterruptible thread persisting, the app will log an error message then force itself to crash to stop the runaway thread.
- Driver Station UI modified to display lowest measured voltage below current voltage (12V battery).
- Driver Station UI modified to have color background for current voltage (green=good, yellow=caution, red=danger, extremely low voltage).
- javadoc improved (edits and additional classes).
- Added app build time to About activity for driver station and robot controller apps.
- Display local IP addresses on Driver Station About activity.
- Added I2cDeviceSynchImpl.
- Added I2cDeviceSync interface.
- Added seconds() and milliseconds() to ElapsedTime for clarity.
- Added getCallbackCount() to I2cDevice.
- Added missing clearI2cPortActionFlag.
- Added code to create log messages while waiting for LinearOpMode shutdown.
- Fix so Wi-Fi Direct Config activity will no longer launch multiple times.
- Added the ability to specify an alternate i2c address in software for the Modern Robotics gyro.
Release 16.02.09
- Improved battery checker feature so that voltage values get refreshed regularly (every 250 msec) on Driver Station (DS) user interface.
- Improved software so that Robot Controller (RC) is much more resilient and “self-healing” to USB disconnects:
- If user attempts to start/restart RC with one or more module missing, it will display a warning but still start up.
- When running an OpMode, if one or more modules gets disconnected, the RC & DS will display warnings,and robot will keep on working in spite of the missing module(s).
- If a disconnected module gets physically reconnected the RC will auto detect the module and the user will regain control of the recently connected module.
- Warning messages are more helpful (identifies the type of module that's missing plus its USB serial number).
- Code changes to fix the null gamepad reference when users try to reference the gamepads in the init() portion of their OpMode.
- NXT light sensor output is now properly scaled. Note that teams might have to readjust their light threshold values in their OpModes.
- On DS user interface, gamepad icon for a driver will disappear if the matching gamepad is disconnected or if that gamepad gets designated as a different driver.
- Robot Protocol (ROBOCOL) version number info is displayed in About screen on RC and DS apps.
- Incorporated a display filter on pairing screen to filter out devices that don't use the “-“ format. This filter can be turned off to show all Wi-Fi Direct devices.
- Updated text in License file.
- Fixed formatting error in OpticalDistanceSensor.toString().
- Fixed issue on with a blank (“”) device name that would disrupt Wi-Fi Direct Pairing.
- Made a change so that the Wi-Fi info and battery info can be displayed more quickly on the DS upon connecting to RC.
- Improved javadoc generation.
- Modified code to make it easier to support language localization in the future.
Release 16.01.04
- Updated compileSdkVersion for apps
- Prevent Wi-Fi from entering power saving mode
- removed unused import from driver station
- Corrrected "Dead zone" joystick code.
- LED.getDeviceName and .getConnectionInfo() return null
- apps check for ROBOCOL_VERSION mismatch
- Fix for Telemetry also has off-by-one errors in its data string sizing / short size limitations error
- User telemetry output is sorted.
- added formatting variants to DbgLog and RobotLog APIs
- code modified to allow for a long list of OpMode names.
- changes to improve thread safety of RobocolDatagramSocket
- Fix for "missing hardware leaves robot controller disconnected from driver station" error
- fix for "fast tapping of Init/Start causes problems" (toast is now only instantiated on UI thread).
- added some log statements for thread life cycle.
- moved gamepad reset logic inside of initActiveOpMode() for robustness
- changes made to mitigate risk of race conditions on public methods.
- changes to try and flag when Wi-Fi Direct name contains non-printable characters.
- fix to correct race condition between .run() and .close() in ReadWriteRunnableStandard.
- updated FTDI driver
- made ReadWriteRunnableStanard interface public.
- fixed off-by-one errors in Command constructor
- moved specific hardware implmentations into their own package.
- moved specific gamepad implemnatations to the hardware library.
- changed LICENSE file to new BSD version.
- fixed race condition when shutting down Modern Robotics USB devices.
- methods in the ColorSensor classes have been synchronized.
- corrected isBusy() status to reflect end of motion.
- corrected "back" button keycode.
- the notSupported() method of the GyroSensor class was changed to protected (it should not be public).
Release 15.11.04.001
- Added Support for Modern Robotics Gyro.
- The GyroSensor class now supports the MR Gyro Sensor.
- Users can access heading data (about Z axis)
- Users can also access raw gyro data (X, Y, & Z axes).
- Example MRGyroTest.java OpMode included.
- More descriptive error messages for exceptions in user code.
- Updated DcMotor API
- Enable read mode on new address in setI2cAddress
- Fix so that driver station app resets the gamepads when switching OpModes.
- USB-related code changes to make USB comm more responsive and to display more explicit error messages.
- Fix so that USB will recover properly if the USB bus returns garbage data.
- Fix USB initializtion race condition.
- Better error reporting during FTDI open.
- More explicit messages during USB failures.
- Fixed bug so that USB device is closed if event loop teardown method was not called.
- Fixed timer UI issue
- Fixed duplicate name UI bug (Legacy Module configuration).
- Fixed race condition in EventLoopManager.
- Fix to keep references stable when updating gamepad.
- For legacy Matrix motor/servo controllers removed necessity of appending "Motor" and "Servo" to controller names.
- Updated HT color sensor driver to use constants from ModernRoboticsUsbLegacyModule class.
- Updated MR color sensor driver to use constants from ModernRoboticsUsbDeviceInterfaceModule class.
- Correctly handle I2C Address change in all color sensors
- Updated/cleaned up OpModes.
- Updated comments in LinearI2cAddressChange.java example OpMode.
- Replaced the calls to "setChannelMode" with "setMode" (to match the new of the DcMotor method).
- Removed K9AutoTime.java OpMode.
- Added MRGyroTest.java OpMode (demonstrates how to use MR Gyro Sensor).
- Added MRRGBExample.java OpMode (demonstrates how to use MR Color Sensor).
- Added HTRGBExample.java OpMode (demonstrates how to use HT legacy color sensor).
- Added MatrixControllerDemo.java (demonstrates how to use legacy Matrix controller).
- Updated javadoc documentation.
- Updated release .apk files for Robot Controller and Driver Station apps.
Release 15.10.06.002
- Added support for Legacy Matrix 9.6V motor/servo controller.
- Cleaned up build.gradle file.
- Minor UI and bug fixes for driver station and robot controller apps.
- Throws error if Ultrasonic sensor (NXT) is not configured for legacy module port 4 or 5.
Release 15.08.03.001
- New user interfaces for FTC Driver Station and FTC Robot Controller apps.
- An init() method is added to the OpMode class.
- For this release, init() is triggered right before the start() method.
- Eventually, the init() method will be triggered when the user presses an "INIT" button on driver station.
- The init() and loop() methods are now required (ie, need to be overridden in the user's OpMode).
- The start() and stop() methods are optional.
- A new LinearOpMode class is introduced.
- Teams can use the LinearOpMode mode to create a linear (not event driven) program model.
- Teams can use blocking statements like Thread.sleep() within a linear OpMode.
- The API for the Legacy Module and Core Device Interface Module have been updated.
- Support for encoders with the Legacy Module is now working.
- The hardware loop has been updated for better performance.