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 han eliminado 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 bloques de muestra 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 antiguos 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 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 excepciones 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 nuevamente un OpMode 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 expansión/control 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 los ejemplos 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 importantes
- 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
- Monos
- 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 conoce GamePad Vid y PID, use Tipo SPE