PERCEBER
Este repositório contém o SDK público da FTC para a temporada de competição INTO THE DEEP (2024-2025).
Bem-vindo!
Este repositório GitHub contém o código-fonte usado para construir um aplicativo Android para controlar um robô de competição do FIRST Tech Challenge. Para usar este SDK, baixe/clone todo o projeto em seu computador local.
Requisitos
Para usar este projeto do Android Studio, você precisará do Android Studio 2021.2 (codinome Chipmunk) ou posterior.
Para programar seu robô em Blocks ou OnBot Java, você não precisa do Android Studio.
Começando
Se você é novo em robótica ou no FIRST Tech Challenge, considere revisar o Tutorial de blocos FTC para se familiarizar com como usar o sistema de controle:
Tutorial online de blocos FTC
Mesmo se você for um programador Java avançado, é útil começar com o tutorial FTC Blocks e depois migrar para a OnBot Java Tool ou para o Android Studio.
Baixando o Projeto
Se você é um programador do Android Studio, existem várias maneiras de baixar este repositório. Observe que se você usar o Blocks ou OnBot Java Tool para programar seu robô, não será necessário baixar este repositório.
- Se você for um usuário git, poderá clonar a versão mais atual do repositório:
clone do git https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
Ou, se preferir, você pode usar o botão “Baixar Zip” disponível na página principal do repositório. Baixar o projeto como um arquivo .ZIP manterá o tamanho do download gerenciável.
Você também pode baixar a pasta do projeto (como um arquivo .zip ou .tar.gz) na subseção Downloads da página Releases deste repositório.
A página Lançamentos também contém APKs pré-construídos.
Depois de baixar e descompactar (se necessário) sua pasta, você pode usar o Android Studio para importar a pasta ("Importar projeto (Eclipse ADT, Gradle, etc.)").
Obtendo ajuda
Documentação do usuário e tutoriais
A FIRST mantém documentação online com informações e tutoriais sobre como usar o software FIRST Tech Challenge e o sistema de controle do robô. Você pode acessar esta documentação usando o seguinte link:
Documentação do PRIMEIRO Desafio Técnico
Observe que a documentação online é um documento “perene” que está em constante atualização e edição. Ele contém as informações mais atuais sobre o software e sistema de controle do FIRST Tech Challenge.
Material de referência Javadoc
A documentação de referência Javadoc para o SDK FTC já está disponível online. Clique no link a seguir para visualizar a documentação Javadoc do FTC SDK como um site ativo:
Documentação Javadoc da FTC
Fórum de usuários on-line
Para questões técnicas relacionadas ao Sistema de Controle ou ao SDK da FTC, visite o site da comunidade FIRST Tech Challenge:
Comunidade do PRIMEIRO Desafio Técnico
Exemplos de OpModes
Este projeto contém uma grande seleção de exemplos de OpModes (exemplos de código de robô) que podem ser recortados e colados em sua pasta /teamcode para serem usados como estão ou modificados para atender às necessidades de sua equipe.
Pasta de amostras: /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
O arquivo readme.md localizado na pasta /TeamCode/src/main/java/org/firstinspires/ftc/teamcode contém uma explicação da convenção de nomenclatura de amostra e instruções sobre como copiá-los para seu próprio espaço de projeto.
Liberar informações
Versão 10.1 (20240919-122750)
Melhorias
- Adiciona novos
VisionProcessor
s baseados em OpenCV (que podem ser anexados a um VisionPortal em Java ou Blocks) para ajudar as equipes a implementar o processamento de cores por meio de visão computacional no jogo INTO THE DEEP-
ColorBlobLocatorProcessor
implementa a detecção de "blob" de cores OpenCV. Um novo programa de amostra ConceptVisionColorLocator
demonstra seu uso.- É oferecida uma escolha entre faixas de cores predefinidas ou a criação de uma faixa personalizada no espaço de cores RGB, HSV ou YCrCb
- A capacidade é fornecida para restringir a detecção a uma região de interesse específica na tela
- São fornecidas funções para aplicar metamorfose de erosão/dilatação à máscara de limite
- São fornecidas funções para classificar e filtrar os dados retornados
-
PredominantColorProcessor
permite usar uma região da câmera como um “sensor de cores de longo alcance” para determinar a cor predominante daquela região. Um novo programa de amostra ConceptVisionColorSensor
demonstra seu uso.- A cor predominante determinada é selecionada a partir de um conjunto discreto de "amostras" de cores, semelhante ao sensor de cores MINDSTORMS NXT
- A documentação sobre este recurso de processamento de cores pode ser encontrada aqui: https://ftc-docs.firstinspires.org/color-processing
- Adicionados programas de amostra Blocks para sensores de cores: RobotAutoDriveToLine e SensorColor.
- Auto-inspeção atualizada para identificar versões de software RC/DS incompatíveis como um "cuidado" em vez de uma "falha".
Correções de bugs
- Corrige a regressão de conversão AngularVelocity
Versão 10.0 (20240828-111152)
Quebrando mudanças
- As classes Java e os blocos para detecção de objetos do TensorFlow foram removidos.
-
AngularVelocity.unit
que era do tipo AngleUnit
foi renomeado para AngularVelocity.angleUnit
do tipo UnnormalizedAngleUnit
Melhorias
- Amostra do indicador digital REV foi adicionada - ConceptRevLED
- Adiciona suporte para o Sparkfun QWIIC LED Stick
- Para conectá-lo diretamente, você precisa deste cabo
- Adiciona ConceptLEDStick OpMode
- Adiciona blocos para as cores preto, azul, ciano, dkgray, cinza, verde, ltgray, magenta, vermelho, branco e amarelo.
- Adiciona um bloco "avaliar mas ignorar o resultado" que executa o bloco conectado e ignora o resultado. Permite chamar uma função e ignorar o valor de retorno.
- Adiciona driver I2C para telêmetro sonar Maxbotix Maxsonar I2CXL
- Adiciona blocos para setPwmEnable, setPwmDisable e isPwmEnabled para servos e servos CR.
- No editor de blocos: um n no campo de comentário da anotação ExportToBlocks é exibido como uma quebra de linha.
- Telemetria tem novo método setNumDecimalPlaces
- A telemetria agora formata duplos e flutuantes (não dentro de objetos, apenas sozinhos)
- Adiciona suporte para Limelight 3A.
- Adiciona suporte inicial para o REV Servo Hub
- Tanto o Controlador do Robô quanto a Estação do Motorista precisam ser atualizados para a versão 10.0 para que os Servo Hubs possam ser configurados como Servo Hubs. Se o aplicativo em qualquer um dos dispositivos estiver desatualizado, o Servo Hub aparecerá como um Expansion Hub e algumas funcionalidades não funcionarão conforme o esperado. Você deve esperar para criar uma configuração que inclua um Servo Hub até que os aplicativos Driver Station e Robot Controller tenham sido atualizados para a versão 10.0.
- Atualizar o firmware do Servo Hub e alterar seu endereço só pode ser feito usando o REV Hardware Client neste momento
- Adiciona suporte para o REV 9-Axis IMU (REV-31-3332)
- O REV 9-Axis IMU é suportado apenas pela interface Universal IMU
- Adiciona a classe Java
Rev9AxisImuOrientationOnRobot
. - Se você substituir mentalmente a porta I2C deste IMU pelas portas USB do Control Hub,
RevHubOrientationOnRobot
também é compatível com este sensor - Adiciona blocos para Rev9AxisImuOrientationOnRobot, incluindo RevHubImuOrientationOnRobot.xyzOrientation e RevHubImuOrientationOnRobot.zyxOrientation.
- Adiciona amostras de blocos SensorRev9AxisIMUOrthogonal e SensorRev9AxisIMUNonOrthogonal.
- Melhora o suporte de blocos para RevHubImuOrientationOnRobot.
- Adiciona blocos para RevHubImuOrientationOnRobot.xyzOrientation e RevHubImuOrientationOnRobot.zyxOrientation.
- Adiciona amostras de blocos SensorHubIMUOrthogonal (substitui SensorIMU) e SensorHubIMUNonOrthogonal.
- Atualiza as versões EasyOpenCV, AprilTag, OpenCV e
libjpeg-turbo
- Adiciona blocos para máximo e mínimo que levam dois números.
- Adiciona blocos OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni e RobotAutoDriveToAprilTagTank.
- Dois OpModes com o mesmo nome agora são renomeados automaticamente com o nome seguido por um "-" e o nome da classe permitindo que ambos estejam no dispositivo.
- Mostra o nome da configuração ativa na página Gerenciar do Console do Controlador do Robô
- Biblioteca AprilTag atualizada para INTO THE DEEP. Notavelmente,
getCurrentGameTagLibrary()
agora retorna tags INTO THE DEEP. - Adiciona blocos para Telemetry.setMsTransmissionInterval e Telemetry.getMsTransmissionInterval.
- Adiciona amostra de blocos SensorOctoQuad.
Correções de bugs
- Corrige um bug onde os blocos RevBlinkinLedDriver estavam em Atuadores na caixa de ferramentas do editor de blocos. Eles agora são Outros Dispositivos.
- Corrige um bug onde
Exception
lançadas no código do usuário após uma parada ser solicitada pela Driver Station seriam consumidas silenciosamente - Corrigido um bug onde se você solicitasse
AngularVelocity
em uma unidade diferente daquela na qual o dispositivo relatou, isso seria normalizado entre -PI e PI para radianos e -180 e 180 para graus.
Versão 9.2 (20240701-085519)
Notas importantes
- As classes Java e os blocos para detecção de objetos do TensorFlow foram descontinuados e serão removidos na versão 10.0.
- As amostras que usam o TensorFlow Object Detection foram removidas.
Melhorias
- Adiciona texto explicativo aos itens reprovados nas atividades de inspeção. Para visualizar o texto explicativo, toque no ícone de aviso vermelho de um item com falha.
- No editor de blocos: adicionado um novo tipo de bloco de conjunto de variáveis que define a variável e também retorna o novo valor.
- Altera a forma como os controles da câmera se comportam para uma SwitchableCamera. Agora, cada método (como getExposure, getMinExposure, getMaxExposure, setExposure para ExposureControl) atua na câmera atualmente ativa.
- Adiciona suporte para o gamepad compatível com REV USB PS4 (REV-31-2983)
- Adiciona ConceptAprilTagMultiPortal OpMode
- Adiciona suporte para codificador de quadratura OctoQuad e módulo de interface de largura de pulso
- Adiciona a anotação ExportAprilTagLibraryToBlocks que indica que um método estático que retorna uma AprilTagLibrary é exportado para o ambiente de programação Blocks. O bloco correspondente aparecerá na caixa de ferramentas Blocos junto com as bibliotecas de tags integradas.
- Adiciona blocos OpMode ConceptAprilTagOptimizeExposure.
- Adiciona suporte para o sensor de odometria de rastreamento óptico SparkFun.
Correções de bugs
- Corrige #942 onde visionPortal.close() pode causar um IndexOutOfBoundsError.
- Corrige um bug no editor de blocos onde os blocos de função recolhidos mostram um aviso "Blocos recolhidos contêm avisos". quando o OpMode dos Blocos for reaberto.
- Corrige um bug em que o editor de blocos não avisava que você tinha alterações não salvas ao tentar sair. Este bug foi introduzido devido a uma mudança de comportamento no Chrome 119.
- Problema nº 764 – Obter controle de ganho retorna um ponteiro nulo para uma câmera comutável
- Corrige um bug em que a zona morta correta para determinados gamepads não era aplicada quando os recursos avançados de gamepad estavam ativados
Versão 9.1 (20240215-115542)
Melhorias
- Corrige problema com Blocos: caso o usuário feche o balão de aviso de um Bloco, ele ainda será fechado na próxima vez que o projeto for aberto no editor de Blocos.
- No editor de Blocos, um alerta de dispositivos de hardware ausentes não é mostrado se todos os Blocos que utilizam os dispositivos de hardware ausentes estiverem desabilitados.
- Adiciona blocos para suportar a comparação de valores de propriedade CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode e Servo.Direction, ao bloco enum correspondente.
- Melhora a importação automática do OnBotJava para importar classes corretamente quando usado em determinadas situações.
- Melhora o preenchimento automático do OnBotJava para fornecer melhores opções de preenchimento na maioria dos casos.
- Isso corrige um problema em que o preenchimento automático falharia se um método com dois ou mais parâmetros formais fosse definido.
- No OnBotJava, o suporte à dobragem de código foi adicionado para expandir e recolher seções de código
- No OnBotJava, o cabeçalho de copyright agora é automaticamente recolhido ao carregar novos arquivos
- Para todos os exemplos de Blocks OpMode, os comentários introdutórios foram movidos para o balão de comentários RunOpMode.
- O comando Limpar blocos no editor de blocos agora posiciona os blocos de função para que seus balões de comentários não se sobreponham a outros blocos de função.
- Adicionado bloco OpMode de exemplo SensorTouch.
- Adicionada amostra Java OpMode SensorDigitalTouch.
- Várias melhorias no VisionPortal
- Adiciona opção para controlar se o fluxo é iniciado automaticamente após uma chamada
.build()
em um VisionPortal Builder - Adiciona opção para controlar se a sobreposição de estatísticas de processamento de visão é renderizada ou não
- VisionPortals agora implementam a interface
CameraStreamSource
, permitindo que usuários multiportais selecionem qual portal é roteado para o DS no INIT chamando CameraStreamServer.getInstance().setSource(visionPortal). Pode ser selecionado via gamepad, entre sessões de Camera Stream. - Adicionada opção ao
AprilTagProcessor
para suprimir avisos de calibração - Melhora os avisos de calibração da câmera
- Se uma calibração for dimensionada, a resolução a partir da qual ela foi dimensionada será listada
- Se existirem calibrações com a proporção errada, as resoluções calibradas serão listadas
- Corrige a condição de corrida que causava falha no aplicativo ao chamar
stopStreaming()
imediatamente seguido por close()
em um VisionPortal - Corrige IllegalStateException ao chamar
stopStreaming()
imediatamente após construir um VisionPortal - Adicionadas contrapartes FTC Blocks aos novos métodos Java:
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setSource
Correções de bugs
- Corrige um problema em que OnBotJava não aplica configurações de tamanho de fonte ao editor.
- Atualiza a dependência do EasyOpenCV para v1.7.1
- Corrige a incapacidade de usar EasyOpenCV CameraFactory no OnBotJava
- Corrige todo o travamento do aplicativo RC quando o pipeline do usuário lança uma exceção
- Corrige todo o travamento do aplicativo RC quando o anotador de tela do usuário lança uma exceção
- Use a exibição moderna do stacktrace ao lidar com exceções do usuário em vez da mensagem de telemetria ESTOP herdada
Versão 9.0.1 (20230929-083754)
Melhorias
- Atualiza as amostras AprilTag para incluir dizimação e comentários adicionais. Também corrige avisos enganosos de ID de tag
- Aumenta o tamanho máximo dos comentários in-line do Blocks para 140 caracteres
- Adiciona amostra de blocos BasicOmniOpMode.
- Quaternions de orientação AprilTag da biblioteca CENTERSTAGE atualizada
- Amostra Java ConceptTensorFlowObjectDetection.java atualizada para incluir elementos ausentes necessários para suporte ao modelo customizado.
Correções de bugs
- Corrige um problema em que, após 1º de outubro, a Driver Station reportaria como obsoleta na v9.0 e solicitaria ao usuário a atualização.
Versão 9.0 (20230830-154348)
Quebrando mudanças
- Remove Vuforia
- Os campos nos objetos
AprilTagDetection
e AprilTagPose(ftc/raw)
agora são final
- O método construtor VisionPortal
setCameraMonitorViewId()
foi renomeado para setLiveViewContainerId()
e enableCameraMonitoring()
foi renomeado para enableLiveView()
Melhorias
- Adiciona suporte para o sensor de visão DFRobot HuskyLens.
- As equipes de blocos agora podem realizar calibração de webcam.
- Adicionado um bloco para System.currentTimeMillis (em Utilitários/Tempo)
- Adicionado um bloco para VisionPortal.saveNextFrameRaw (em Vision/VisionPortal)
- Adicionado um novo OpMode de blocos de amostra chamado UtilityCameraFrameCapture.
- A amostra RobotDriveByGyro foi atualizada para usar a nova interface IMU universal. Agora suporta ambos os tipos de IMU.
- Removidos alguns blocos ElapsedTime propensos a erros da caixa de ferramentas do editor de blocos. Esta não é uma mudança significativa: OpModes de blocos antigos que usam esses blocos ainda funcionarão, tanto no editor de blocos quanto em tempo de execução.
- Padroniza no formulário "OpMode" o termo OpMode.
- A maneira preferida de se referir aos OpModes que estendem especificamente
LinearOpMode
(incluindo OpModes de blocos) é "opMode linear". - A maneira preferida de se referir aos OpModes que estendem especificamente
OpMode
diretamente é "OpMode iterativo".
- Revisa os comentários Javadoc
OpMode
e LinearOpMode
para serem mais fáceis de ler e incluir mais detalhes. - Faz pequenas melhorias em amostras Java
- Os comentários Javadoc em exemplos que poderiam ser mal renderizados no Android Studio foram convertidos em comentários padrão de várias linhas
- A consistência entre as amostras foi melhorada
- O exemplo SensorDigitalTouch foi substituído por um novo exemplo SensorTouch que usa a interface
TouchSensor
em vez de DigitalChannel
. - As amostras ConceptCompassCalibration, SensorMRCompass e SensorMRIRSeeker foram excluídas, pois não são úteis para competições FTC modernas.
Correções de bugs
- Corrige um bug que impedia que os gamepads do PlayStation fossem usados no modo Bluetooth. O Bluetooth NÃO é legal para competição, mas pode ser útil para permitir que um dispositivo DS seja usado durante o carregamento ou em um evento de divulgação.
- Corrige um bug em que o valor de Data Modificada do Blocks OpMode pode mudar para 31 de dezembro de 1969, se o Control Hub for reinicializado enquanto o Blocks OpMode estiver sendo editado.
- Corrige o recurso de pré-seleção automática do TeleOp (quebrou na versão 8.2)
- Corrige um bug em que passar um número inteiro como 123 para o bloco Telemetry.addData que recebe um número aparece como 123,0 na telemetria.
- Corrige problemas de preenchimento automático do OnBotJava:
- O preenchimento automático forneceria incorretamente valores para a classe atual ao preencher automaticamente uma variável local
- O preenchimento automático
hardwareMap
incluiria incorretamente entradas de classe lambda
- Corrige o OnBotJava que não importa classes automaticamente.
- Corrige guias OnBotJava que não fecham quando seu arquivo é excluído.
- Corrige uma atualização da visualização do projeto que não acontecia quando um arquivo é renomeado no OnBotJava.
- Corrige o item de menu de contexto "Download" para bibliotecas externas na interface OnBotJava.
- Corrige o problema em que a telemetria da Driver Station congelava intermitentemente quando definida para o modo Monospace.
- Corrige a regressão de desempenho para determinadas operações do REV Hub introduzidas na versão 8.2.
- Corrige a lógica de comparação TagID em exemplos DriveToTag.
Versão 8.2 (20230707-131020)
Quebrando mudanças
- OpModes não lineares (iterativos) não têm mais permissão para manipular atuadores em seu método
stop()
. As tentativas de fazer isso serão ignoradas e registradas.- Quando um OpMode tenta manipular ilegalmente um atuador, o Controlador do Robô imprimirá uma mensagem de log incluindo o texto
CANCELLED_FOR_SAFETY
. - Além disso, LinearOpModes não são mais capazes de recuperar a capacidade de manipular atuadores removendo a interrupção de seu thread ou usando outro thread.
- Remove o suporte para Android versão 6.0 (Marshmallow). A minSdkVersion agora é 24.
- Aumenta a versão Robocol.
- Isso significa que um Controlador de Robô ou Estação de Piloto 8.2 ou posterior não será capaz de se comunicar com uma Estação de Piloto ou Controlador de Robô 8.1 ou anterior.
- Se você esquecer de atualizar os dois aplicativos ao mesmo tempo, uma mensagem de erro será exibida explicando qual aplicativo é mais antigo e deve ser atualizado.
- FTC_FieldCoordenSystemDefinition.pdf foi movido. Ele ainda está no histórico do git, mas foi removido do instantâneo do git correspondente à tag 8.2. A versão oficial agora está disponível no Field Coordinate System.
-
LynxUsbDevice.addConfiguredModule()
e LynxUsbDevice.getConfiguredModule()
foram substituídos por LynxUsbDevice.getOrAddModule()
. - Blocos antigos para Vuforia e TensorFlow Object Detection estão obsoletos e foram removidos da caixa de ferramentas do editor de blocos. Os OpModes de blocos existentes que contêm os antigos blocos para Vuforia ou TensorFlow Object Detection podem ser abertos no editor de blocos, mas executá-los não funcionará.
Novos recursos
- Adiciona nova API
VisionPortal
para visão computacional- Esta API pode estar sujeita a alterações para o lançamento final!
- Várias novas amostras adicionadas.
- Adiciona suporte para detecção de AprilTags.
-
VisionPortal
é o novo ponto de entrada para processamento AprilTag e TFOD. - Vuforia será removido em uma versão futura.
- Dependências do TensorFlow atualizadas.
- Adicionado suporte para controles de câmera de webcam em blocos.
- A caixa de ferramentas do editor Blocks agora possui uma categoria Visão, diretamente acima da categoria Utilitários.
- A documentação relacionada para tecnologias associadas pode ser encontrada em
- Introdução à AprilTag
- Guia do SDK AprilTag
- Valores de detecção de AprilTag
- Imagens de teste AprilTag
- Calibração da câmera
- Adiciona suporte Driver Station para gamepads Logitech Dual Action e Sony PS5 DualSense.
- Isso não inclui suporte para o gamepad Sony PS5 DualSense Edge.
- Consulte sempre o Manual do Jogo 1 para determinar a legalidade do gamepad em competição.
- Adiciona suporte para streaming de carga útil MJPEG ao driver UVC (rotina de descompressão JPEG externa necessária para uso).
- Mostra uma dica na UI da Driver Station sobre como vincular um gamepad quando os botões são pressionados ou os manípulos são movidos em um gamepad não vinculado.
- Adiciona opção de tela cheia "Camera Stream" na Driver Station.
- O código-fonte OnBotJava é salvo automaticamente como um arquivo ZIP em cada compilação com uma janela contínua das últimas 30 compilações mantidas; permite recuperar o código-fonte de compilações anteriores se o código for acidentalmente excluído ou corrompido.
- Adiciona suporte para alteração de endereços de Hubs de Expansão que não estão conectados diretamente via USB.
- A tela Alteração de endereço do Expansion Hub agora possui um botão Aplicar que altera os endereços sem sair da tela.
- Endereços atribuídos a outros hubs conectados à mesma conexão USB ou Control Hub não podem mais ser selecionados.
- Aumenta o tamanho máximo dos comentários in-line do Blocks para 100 caracteres
- Salva a posição dos balões de comentários de blocos abertos
- Adiciona novas amostras de AprilTag Driving: RobotDriveToAprilTagTank e RobotDriveToAprilTagOmni
- Adiciona amostra para ilustrar a otimização da exposição da câmera para AprilTags: ConceptAprilTagOptimizeExposure
Correções de bugs
- Corrige a tela de inspeção para relatar a versão do aplicativo usando a versão do SDK definida nas bibliotecas em vez da versão especificada em
AndroidManifest.xml
. Isso corrige o caso em que o aplicativo poderia mostrar números de versões correspondentes ao usuário, mas ainda assim indicar que as versões não correspondiam.- Se a versão especificada em
AndroidManifest.xml
não corresponder à versão do SDK, uma entrada de versão do SDK será exibida na página Gerenciar.
- Corrige nenhum erro exibido ao salvar um arquivo de configuração com nomes duplicados da Driver Station.
- Corrige um impasse no driver UVC que se manifestou em OpenFTC/EasyOpenCV#57.
- Corrige um impasse no driver UVC que pode ocorrer ao conectar câmeras a quente.
- Corrige a compatibilidade do driver UVC com a câmera de obturador global Arducam OV9281.
- Corrige a condição de parada de emergência quando ocorre uma compilação OnBotJava com nomes OpMode duplicados.
- Corrige causas conhecidas de logspam "Tentativa de uso de uma instância fechada do LynxModule".
- Corrige o padrão de LED de identificação visual ao configurar Hubs de Expansão conectados via RS-485.
Versão 8.1.1 (20221201-150726)
Esta é uma versão apenas de correção de bug para resolver os quatro problemas a seguir.
- Problema nº 492 - Não é possível criar novos modos de operação de blocos.
- Problema nº 495 – Remova o modificador final do objeto Telemetria do OpMode.
- Problema nº 500 - Alguns dispositivos não podem ser configurados quando o aplicativo Driver Station foi atualizado para 8.1
- Atualizar o aplicativo Robot Controller ou o aplicativo Driver Station para 8.1.1 ou posterior corrigirá esse problema.
- O sensor de toque da Modern Robotics foi configurável como um dispositivo digital. Ele só pode ser usado como um dispositivo analógico.
Versão 8.1 (20221121-115119)
Quebrando mudanças
- Descontinua os campos
OpMode
msStuckDetectInit
, msStuckDetectInitLoop
, msStuckDetectStart
, msStuckDetectLoop
e msStuckDetectStop
.- OpModes não tem mais limite de tempo para
init()
, init_loop()
, start()
ou loop()
, portanto os campos correspondentes a esses métodos não são mais utilizados. -
stop()
ainda tem um limite de tempo, mas agora está codificado para durar 1 segundo e não pode ser alterado usando msStuckDetectStop
.
- Descontinua os métodos
OpMode
internalPreInit()
, internalPostInitLoop()
e internalPostLoop()
.-
OpMode
s iterativos continuarão a chamar esses métodos caso eles tenham sido substituídos. - Esses métodos não serão chamados para
LinearOpMode
s.
- Descontinua (e deixa de respeitar)
DeviceProperties.xmlTagAliases
.
Melhorias
- Adiciona uma nova interface
IMU
para Blocks e Java que pode ser usada tanto com o IMU BNO055 original incluído em todos os Control Hubs e Hubs de Expansão mais antigos, quanto com a nova alternativa BHI260AP IMU.- É possível determinar qual tipo de IMU está em seu Control Hub navegando até a página Gerenciar da interface da web.
- Para aprender como usar a nova interface
IMU
, consulte https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html. A amostra SensorIMU
Blocks também foi atualizada para usar a nova interface IMU
, e as seguintes amostras Java foram adicionadas:-
SensorIMUOrthogonal
- Use este exemplo se o seu REV Hub estiver montado de forma paralela ou perpendicular à parte inferior do seu robô.
-
SensorIMUNonOrthogonal
- Use este exemplo se o seu REV Hub estiver montado no seu robô em qualquer outra orientação
-
ConceptExploringIMUOrientations
- Este OpMode é uma ferramenta para ajudá-lo a entender como funcionam as orientações ortogonais e qual delas se aplica ao seu robô.
- A IMU BHI260AP só pode ser acessada através da nova interface
IMU
. O BNO055 IMU pode ser programado usando a nova interface IMU
, ou você pode continuar a programá-lo usando a antiga interface BNO055IMU
. Se você quiser mudar rapidamente para um novo Control Hub que pode conter o IMU BHI260AP, você deve migrar seu código para usar a nova interface IMU
. - Ao contrário da antiga interface
BNO055IMU
, que só funcionava corretamente quando o REV Hub estava montado no seu robô, a interface IMU
permite que você especifique a orientação do REV Hub no seu robô. Ele explicará isso e fornecerá sua orientação em um sistema de coordenadas do robô, em vez de um sistema de coordenadas especial para o REV Hub. Como resultado, sua inclinação e guinada serão 0 quando o robô estiver nivelado, em vez de quando o REV Hub estiver nivelado, o que resultará em valores de ângulo de orientação muito mais confiáveis para a maioria das orientações de montagem. - Devido ao novo sistema de coordenadas centrado no robô, os ângulos de inclinação e rotação retornados pela interface
IMU
serão diferentes daqueles retornados pela interface BNO055IMU
. Ao migrar seu código, preste muita atenção à documentação. - Se você calibrou seu BNO055, poderá fornecer esses dados de calibração para a nova interface
IMU
passando uma instância BNO055IMUNew.Parameters
para IMU.initialize()
. - A interface
IMU
também é adequada para implementação por fornecedores terceirizados para IMUs que oferecem suporte ao fornecimento de orientação na forma de um quaternion.
-
OpMode
s iterativos (em oposição a LinearOpMode
s) agora são executados em um thread dedicado.- Os tempos de ciclo não devem ser tão afetados por tudo o que acontece no sistema.
- Os
OpMode
lentos não podem mais aumentar o tempo necessário para processar comandos de rede e vice-versa. - Os métodos
init()
, init_loop()
, start()
e loop()
não precisam mais retornar dentro de um determinado período de tempo.
- Driver herdado BNO055 IMU: restaura a capacidade de inicializar em um OpMode e, em seguida, fazer com que outro OpMode reutilize essa inicialização. Isso permite manter a posição 0-yaw entre OpModes, se desejado.
- Permite que versões personalizadas de drivers de dispositivo no SDK da FTC usem a mesma tag XML.
- Antes, se você quisesse personalizar um driver de dispositivo, era necessário copiá-lo para uma nova classe e atribuir-lhe uma nova tag XML. Atribuir a ele uma nova tag XML significava que, para mudar o driver que estava sendo usado, você teria que modificar seu arquivo de configuração.
- Agora, para usar seu driver personalizado, tudo que você precisa fazer é especificar a classe do seu driver personalizado ao chamar
hardwareMap.get()
. Para voltar ao driver original, especifique a classe do driver original. Se você especificar uma interface implementada pelo driver original e pelo driver personalizado, não há garantia sobre qual implementação será retornada.
Correções de bugs
- Corrige o acesso aos links "Gerenciar modelos do TensorFlow Lite" e "Gerenciar sons" e realizar downloads de blocos e OnBotJava OpMode do REV Hardware Client.
- Corrige o problema em que um driver de dispositivo I2C seria inicializado automaticamente usando os parâmetros atribuídos em uma execução anterior do OpMode.
- Melhora o posicionamento do menu pop-up da Driver Station no layout paisagem.
- Corrige NullPointerException ao tentar obter um IMU BNO055 não configurado em um Blocks OpMode em um telefone RC.
- Corrige problema com Blocos se uma variável for denominada
orientation
.
Versão 8.0 (20220907-131644)
Quebrando mudanças
- Aumenta a versão Robocol.
- Isso significa que um Controlador de Robô ou Estação de Motorista 8.0 ou posterior não será capaz de se comunicar com uma Estação de Motorista ou Controlador de Robô 7.2 ou anterior.
- Se você esquecer de atualizar os dois aplicativos ao mesmo tempo, uma mensagem de erro será exibida explicando qual aplicativo é mais antigo e deve ser atualizado.
- A inicialização de dispositivos I2C agora acontece quando você os recupera do
HardwareMap
pela primeira vez.- Anteriormente, todos os dispositivos I2C seriam inicializados antes mesmo de o OpMode começar a ser executado, independentemente de você realmente usá-los ou não. Isso pode resultar em desempenho reduzido e avisos desnecessários.
- Com esta mudança, é muito importante que os usuários Java recuperem todos os dispositivos necessários do
HardwareMap
durante a fase Init do OpMode . Ou seja, declare uma variável para cada dispositivo de hardware que o OpMode usará e atribua um valor a cada um. Não faça isso durante a fase Run, ou seu OpMode poderá travar brevemente enquanto os dispositivos que você está recuperando são inicializados. - OpModes que não usam todos os dispositivos I2C especificados no arquivo de configuração devem levar menos tempo para inicializar. OpModes que usam todos os dispositivos I2C especificados devem levar o mesmo tempo que anteriormente.
- Corrige o problema nº 251 alterando a ordem em que as taxas de rotação do eixo são lidas no vetor de velocidade angular no driver BNO055 IMU.
- Obsoleta
pitchMode
em BNO055IMU.Parameters
.- Definir
pitchMode
como PitchMode.WINDOWS
quebraria as convenções de coordenadas usadas pelo driver.
- Move
OpModeManagerImpl
para o pacote com.qualcomm.robotcore.eventloop.opmode
.- Isso interrompe as bibliotecas de terceiros EasyOpenCV (versão 1.5.1 e anteriores) e FTC Dashboard (versão 0.4.4 e anteriores).
- Exclui o método
OpMode
obsoleto resetStartTime()
(use resetRuntime()
em vez disso). - Exclui a classe protegida
LinearOpMode.LinearOpModeHelper
(que não foi projetada para uso por OpModes). - Remove o tipo de configuração do dispositivo I2C (síncrono) (obsoleto desde 2018)
Melhorias
- Exceções não detectadas em OpModes não exigem mais uma reinicialização do robô
- Uma tela azul aparecendo com um stacktrace não é um erro do SDK; isso substitui o texto vermelho na área de telemetria.
- Desde o primeiro lançamento do SDK, as falhas do OpMode colocaram o robô no estado "EMERGENCY STOP", mostrando apenas a primeira linha da exceção e exigindo que o usuário pressione "Restart Robot" para continuar
- Exceções durante um OpMode agora abrem uma janela pop-up com o mesmo esquema de cores do visualizador de log, contendo 15 linhas do stacktrace de exceção para permitir rastrear facilmente a linha ofensiva sem precisar se conectar para visualizar logs no ADB ou percorrer grandes quantidades de logs no visualizador de registros.
- O texto de exceção na janela pop-up pode ser ampliado e rolado, assim como uma página da web.
- Pressionar o botão "OK" na janela pop-up retornará à tela principal da Driver Station e permitirá que um OpMode seja executado novamente imediatamente, sem a necessidade de realizar um "Restart Robot"
- Adiciona novo exemplo Java para demonstrar o uso de uma classe de hardware para abstrair atuadores de robôs e compartilhá-los em vários OpModes.
- Exemplo de OpMode é ConceptExternalHardwareClass.java
- A classe de hardware abstraída é RobotHardware.java
- Atualiza a amostra Java RobotAutoDriveByGyro_Linear para usar IMU do hub de controle/expansão REV.
- Atualiza as amostras do Vuforia para fazer referência a ativos do PowerPlay e ter nomes corretos e localizações de campos de destinos de imagem.
- Atualiza amostras do TensorFlow para fazer referência a ativos do PowerPlay.
- Adiciona suporte opcional para recursos da linguagem Java 8 ao editor OnBotJava.
- Para aceitar, abra as configurações do OnBotJava e marque
Enable beta Java 8 support
. - Observe que o código Java 8 só será compilado quando o Robot Controller executar o Android 7.0 Nougat ou posterior.
- Por favor, relate problemas aqui.
- No OnBotJava, clicar em erros de compilação agora salta corretamente para o local correto.
- Melhora o comportamento de preenchimento automático do OnBotJava para fornecer melhores opções de preenchimento na maioria dos casos.
- Adiciona um código QR ao relatório de inspeção do controlador de robô quando visualizado na estação de motorista para digitalização pelos inspetores na competição.
- Melhora o desempenho e a confiabilidade do I2C em alguns cenários.
Versão 7.2 (20220723-130006)
Quebrando mudanças
- Atualiza a ferramenta de compilação. Para os usuários do Android Studio, essa alteração requer o Android Studio Chipmunk 2021.2.1.
- Remove o apoio a dispositivos que não são legais da concorrência, incluindo os modernos módulos de controle do núcleo da robótica, o controlador da matriz e os controladores e sensores Hitechnic/NXT. O apoio permanece para os sensores modernos da robótica I2C.
Aprimoramentos
- Aumenta a altura da área de toque do menu da paisagem de 3 pontos na estação de motorista, facilitando muito a seleção.
- Adiciona o método
terminateOpModeNow()
para permitir que os Opmodes se auto-Expliquem de maneira limpa imediatamente. - Adiciona o método
opModeInInit()
ao LinearOpMode
para facilitar os loops init. Semelhante ao opModeIsActive()
mas para a fase init. - Adverte o usuário se eles têm um gamepad Logitech F310 conectado que está definido como o Modo DirectInput.
- Permite que os controladores de motor Sparkmini reajam mais rapidamente para acelerar as alterações.
- Esconde o número de versão do aplicativo irmã instalado incorretamente (ou seja, instalado no dispositivo RC ou vice-versa) na tela de inspeção.
- Adiciona suporte para permitir que o usuário edite o comentário para o bloco RUNOPMODE.
- Adiciona o campo ParameterDefaultValues ao @ExportToBlocks. Isso fornece a capacidade de um método Java com uma anotação @ExportToBlocks para especificar valores padrão para os parâmetros do método quando for mostrado no editor de blocos.
- Torne os blocos linearopmode mais legíveis. O nome do OpMode é exibido no bloco RUNOPMODE, mas não nos outros blocos linearopmode.
- Adicionado suporte à detecção de objeto TensorFlow para usar um gerador de quadros diferente, em vez de Vuforia. Usando o Vuforia para passar o quadro da câmera para o TFOD ainda é suportado.
- Remove o uso do renderize.
- FIXE o logspam na inicialização de aplicativos de retraces repetidos relacionados à
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- Permite desativar o rádio Bluetooth da tela de inspeção
- Melhora as mensagens de aviso quando os dispositivos I2C não estão respondendo
- Adiciona suporte para controlar o LED RGB presente nos gamepads PS4/ETPARK da Opmodes
- Remove as referências de PushBot legadas de amostras de opmode. Renomeia amostras "PushBot" para "robô". As instruções do motor revertidas para serem compatíveis com o trem de acionamento de "acionamento direto".
Correções de bugs
- Correções A edição nº 316 (matrixf.inverted () retornou uma matriz de tamanho incorretamente para matrizes 1x1 e 2x2).
- O Auto -Inspect agora permite a compatibilidade da estação de motorista e do controlador de robô entre as liberações de pontos.
- Corrige o bug onde, se a mesma instância do objeto
RumbleEffect
foi filada para vários gamepads, pode acontecer que ambos os comandos rumbed fossem enviados para apenas um gamepad. - Corrige o bug na estação de motorista onde no hub de motorista, se os recursos avançados do gamepad estivessem desativados e um gamepad oficialmente suportado estivesse conectado, abrindo os recursos avançados do gamepad ou as telas do tipo gamepad que o gamepad seria recuperado pelo driver USB personalizado, embora Os recursos avançados do GamePad foram desativados.
- Protege contra a exceção (improvável) do ponteiro nulo no Vuforia Localizer.
- Harden Onbotjava e Blocks Saves para proteger contra problemas de salvamento ao desconectar -se do programa e gerenciar
- O problema de correções em que o aplicativo RC penduraria se um hub Rev i2C grava falhasse porque a operação anterior I2C ainda estava em andamento. Isso ocorre mais comumente durante a inicialização do sensor de distância Rev 2m
- Remove o programa de amostra de conceptwebcam.java. Esta amostra não é compatível com Onbotjava.
- Corrige o bug onde o uso de tags HTML em um campo de comentários @ExportToBlocks impediu o carregamento do editor de blocos.
- Fixes Blocks Editor, para que ele não peça que você salve quando você não modificou nada.
- Corrige o upload de um projeto de blocos muito grande para o editor de blocos offline.
- Corrige o bug que fez com que os blocos para o dcmotorex fossem omitidos na caixa de ferramentas do editor de blocos.
- Correções Blocks Programas despojados de blocos (devido ao uso do bloco de etiquetas Tensorflow)
Versão 7.1 (20211223-120805)
- Fixes trava ao chamar
isPwmEnabled()
(Edição #223). - Corrige o erro de fiapo (edição nº 4).
- Corrige o acidente da estação de motorista ao tentar usar o DualShock4 v1 gamepad com recursos avançados de gamepad ativados (edição nº 173).
- Correções possíveis (mas improváveis) Crash da estação de motorista ao conectar gamepads de qualquer tipo.
- Correções Bug, onde a estação de motorista usaria 20% de moradia genérica para Xbox360 e Logitech F310 GamePads quando os recursos avançados do GamePad foram desativados.
- Adicionado opmode de amostra simples e simples.
- Adiciona API de controle de balanço Branco UVC.
- Correções O problema #259 A maioria dos bloqueios de amostras para TensorFlow não pode ser usada para um modelo diferente.
- Os blocos rotulados anteriormente tensorFoBObjectDeTectionFreightFrenzy (da subcategoria denominada "otimizada para frenesi de frete") e tensorflowobjectDetectionCustommodel (da subcategoria denominada "Modelo Custom") foram substituídos por blocos marcados com tensorflowDetecção. Os blocos nos Opmodes existentes serão atualizados automaticamente para os novos blocos quando abertos no editor de blocos.
- Correções Os blocos do problema #260 não podem chamar o método Java que possui um parâmetro Vuforialocalizer.
- O Blocks agora tem um bloco rotulado Vuforiafreightfrenzy.getvuforialocalizer para isso.
- Adicionado uma página para gerenciar os modelos TensorFlow Lite em/sdcard/primeiro/tflitemodels. Para chegar à página Modelos Tflite:
- Você pode clicar no link na parte inferior da página Gerenciar.
- Você pode clicar no link na página Superior-direita, o projeto Blocks.
- FIXE LOGSPAM Quando
isBusy()
é chamado em um motor que não está no modo RTP. - Esconde o item "rc senha" na tela de inspeção para controladores de robôs baseados em telefone. (É aplicável apenas a hubs de controle).
- Adiciona o menu de seleção de canal direto do canal 165 ao Wi-Fi na tela Configurações. (165 estava disponível anteriormente na interface do usuário da web, mas não localmente no aplicativo).
Versão 7.0 (20210915-141025)
Aprimoramentos e novos recursos
- Adiciona suporte para bibliotecas externas ao onbotjava e blocos.
- Faça o upload .jar e .aar arquivos em onbotjava.
- Limitação conhecida - O dispositivo RobotController deve estar executando o Android 7.0 ou maior.
- Limitação conhecida - os arquivos AAAR com ativos não são suportados.
- As bibliotecas externas podem fornecer suporte para dispositivos de hardware usando a anotação no pacote com.qualcomm.robotcore.hardware.configuration.annotações.
- As bibliotecas externas podem incluir arquivos .so para código nativo.
- As bibliotecas externas podem ser usadas nos opmodes onbotjava.
- Bibliotecas externas que usam as seguintes anotações podem ser usadas nos blocos Opmodes.
- org.firstinspires.ftc.robotcore.external.exportClasStoBlocks
- org.firstinspires.ftc.robotcore.external.exportToBlocks
- Bibliotecas externas que usam as anotações a seguir podem adicionar novos dispositivos de hardware:
- com.qualcomm.robotcore.hardware.configuration.annotações.analogsensortype
- com.qualcomm.robotcore.hardware.configuration.annotações.deviceProperties
- com.qualcomm.robotcore.hardware.configuration.annotações.digitaliodeviceType
- com.qualcomm.robotcore.hardware.configuration.annotações.i2cdeviceType
- com.qualcomm.robotcore.hardware.configuration.annotações.motortype
- com.qualcomm.robotcore.hardware.configuration.annotações.servotype
- Bibliotecas externas que usam as seguintes anotações podem adicionar nova funcionalidade ao controlador de robô:
- 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.webhandlerRecirder
- Adiciona suporte ao Rev Robotics Driver Hub.
- Adiciona o driver USB Gamepad totalmente personalizado da área de gamepad à estação de motorista (consulte o menu "Recursos avançados para gamepad" nas configurações do DS).
- Permite que os gamepads trabalhem em dispositivos sem suporte nativo do kernel Linux (por exemplo, alguns dispositivos da Motorola Romena).
- Permite que o DS leia o número de série exclusivo de cada gamepad, permitindo a recuperação automática dos gamepads descartados, mesmo que dois gamepads da mesma queda do modelo. (Nota: Infelizmente, isso não se aplica aos gamepads do ETPARK, porque eles não têm uma série única) .
- A leitura do número de série exclusivo também fornece a capacidade de configurar o DS para atribuir gamepads a uma determinada posição por padrão (portanto, não há necessidade de iniciar+A/B).
- O anel de LED no Xbox360 gamepad e a barra de LED RGB no GamePad PS4 são usados para indicar a posição do motorista à qual o GamePad está ligado.
- Os motores Rumble nos gamepads Xbox360, PS4 e Etpark podem ser controlados a partir de opmodes.
- O touchpad de 2 pontos no PS4 gamepad pode ser lido nos Opmodes.
- Os botões "Voltar" e "guia" no gamepad agora podem estar vinculados em segurança aos controles de robô (anteriormente, em muitos dispositivos, o Android interceptava esses botões como o botão doméstico pressiona e fecha o aplicativo).
- Os recursos avançados do GamePad são ativados por padrão, mas podem ser desativados no menu Configurações para reverter para o suporte ao gamepad fornecido nativamente pelo Android.
- Melhora a precisão da medição de ping.
- As correções são questionadas em que o tempo de ping mostrou como maior que a realidade ao se conectar inicialmente ou reiniciar o robô.
- Para ver a melhoria completa, você deve atualizar o controlador de robô e os aplicativos da estação de motorista.
- Atualizações amostras localizadas em/ftcrobotController/src/main/java/org/FirstInspires/ftc/robotcontroller/externa/amostras.
- Adicionado amostras de conceitoGamePadrumble e conceptGamepadTouchPad para ilustrar o uso desses novos recursos de Gampad.
- As amostras de Vuforia existentes condensadas em apenas 2 amostras (conceituaForiafieldNavigation & ConceptvuiaiaFieldNavigationWebcam) mostrando como determinar a localização do robô em campo usando Vuforia. Ambos usam as imagens de destino da temporada atual.
- Adicionado ConceptVUFORIDRIVETOTARGETWEBCAM para ilustrar uma maneira fácil de dirigir diretamente para qualquer destino visível da Vuforia.
- Faz muitas melhorias no sistema de alerta e avisos individuais.
- Os avisos agora estão muito mais espaçados, para que sejam mais fáceis de ler.
- Novos avisos foram adicionados para condições que deveriam ser resolvidas antes de competir.
- O aviso de aplicativos incompatíveis agora usa as versões principais e menores do aplicativo, não o código da versão.
- Os avisos são automaticamente reativados quando um aplicativo controlador de robô de uma nova temporada de FTC é instalado.
- Adiciona suporte para transações I2C no hub de expansão / hub de controle sem especificar um endereço de registro.
- Consulte a Seção 3 da especificação Ti I2C.
- Chamar esses novos métodos ao usar o hardware moderno da robótica resultará em uma exceção não suportada.
- Altera o método Vuforialocalizer
close()
para ser público. - Adiciona suporte para modelos de detecção de objetos TensorFlow V2.
- Reduz a ambiguidade da linguagem e dos gráficos auto -inspecionados.
- Onbotjava agora alerta sobre substituições de arquivos potencialmente não intencionais.
- Melhora o comportamento da banda Wi-Fi e seletor de canal na página da Web de gerenciar.
Correções de bugs
- Fixe o aplicativo do controlador de robô falha no Android 9+ quando uma estação de motorista se conecta.
- O problema correta em que um opmode foi responsável por chamar o desligamento do tensorflow tfObjectDeTector. Agora isso é feito automaticamente.
- Corrige os blocos de inicialização do Vuforia para permitir que o usuário escolha o eixo do eixo. Blocks relevantes atualizados Opmodes.
- FIXE a edição do FTCROBOTController #114 LED Blocks e Java Class não funcionam.
- Fixes corresponde ao log para opmodes que contêm caracteres especiais em seus nomes.
- Os controles da correção da estação de motorista ficam sem resposta se a estação de motorista foi definida para o layout da paisagem e uma construção onbotjava foi acionada enquanto um opmode estava em execução.
- Corrige o aplicativo da estação de motorista se fechando quando é alterado para longe ou a tela é desligada.
- FIXE "Black Swirl of Doom" (Infinite "Configurando a mensagem Wi-Fi Direct" em dispositivos mais antigos.
- Atualiza o comentário do wiki na página de introdução do Onbotjava.
Versão 6.2 (20210218-074821)
Aprimoramentos
- Tentativas de corrigir automaticamente a condição em que o hub de expansão interno de um hub de controle não está funcionando novamente, relembrando seu firmware
- Faz várias melhorias na tela de emparelhamento direto Wi-Fi, especialmente no modo paisagem
- Faz com que o serviço do controlador de robô não seja mais reiniciado categoricamente quando a atividade principal é levada para o primeiro plano
- (por exemplo, o serviço não é mais reiniciado simplesmente visualizando a tela auto -inspecionada e pressionando o botão traseiro)
- Ainda é reiniciado se o menu de configurações ou configurar o menu robô for aberto
Correções de bugs
- FIXES FTCROBOTController A edição #71 não pode abrir o Opmodes em V6.1 Blocks Offline Editor
- FIXES FTCROBOTCONTROLLER Edição #79 6.1 Causa uma reinicialização suave no Motorola E5 Play
- Corrigir emitir onde o cão de guarda do Hub OS de controle reiniciaria o aplicativo Robot Controller se o hub de controle não pudesse se comunicar com seu hub de expansão interna
- Corrige certos dispositivos I2C que não aparecem nos campos
HardwareMap
apropriados (como hardwareMap.colorSensor
) - O problema das correções é que a realização de uma redefinição de fábrica Wi-Fi no hub de controle não definiria a banda Wi-Fi como 2,4 GHz
- Corrigir a questão onde o onbotjava pode deixar de criar um novo arquivo se a opção de "código de configuração para hardware configurado" foi selecionado
- Corrigir a questão em que a execução de determinadas operações após uma falha de opmode quebraria temporariamente a comunicação do Hub de Controle/Expansão
- Corrigir problemas em que um hub de controle com um hub de expansão conectado à USB configurado não funcionaria se o hub de expansão estivesse ausente na inicialização
- Corrige os problemas em potencial causados por ter versões de firmware de controle/expansão incompatíveis
- FIXES FTC_APP Issue 673 O mais recente MatchLog está sendo excluído em vez de antigos pelo robotlog
- FIXECE CONCEITIVEVUFORIATIMATIMEGEALNAVUGUTATIONWEBCAM Opmode, orientando corretamente a câmera no robô.
- O problema correta em que o logcat seria spam com o interruptedExceptions quando a parada for solicitada na estação de motorista (esse comportamento foi introduzido acidentalmente na v5.3). Essa mudança não tem impacto na funcionalidade.
- Corrigir o problema em que o editor de blocos não carrega se o nome de qualquer opmode Teleop contiver um apóstrofo.
Versão 6.1 (20201209-113742)
- Faz o botão de varredura na tela de configuração atualizar a lista de hubs de expansão conectados via RS-485
- Corrige a edição Skystone #143
- Melhora a compatibilidade da interface da Web com as versões mais antigas do navegador e do sistema Android.
- Problema corrige no driver UVC, onde algumas câmeras (por exemplo, certas MS Lifecams) que relataram intervalos de quadros como valores arredondados em vez de truncados (por exemplo,
666667*100ns
em vez de 666666*100ns
para 15fps) falhariam ao começar a transmitir. - Adiciona suporte no driver UVC para controle virtual de PTZ
- Adiciona suporte ao Driver UVC para Gain (ISO) Control
- Adiciona suporte ao driver UVC para ativar/desativar a prioridade do AE. Esta configuração fornece um meio de dizer ao firmware da câmera
- A) Ele pode subir a taxa de quadros solicitados para fornecer uma imagem teoricamente melhor (ou seja, com uma exposição mais longa do que o período entre quadros da taxa de quadros selecionados permite)
- B) Ele deve cumprir o prazo entre quadros para a taxa de quadros selecionados, mesmo que a imagem possa ser subexposta como resultado
- Adiciona suporte ao controle do Hub OS 1.1.2 Watchdog do controlador de robôs
- O aplicativo Robot Controller será reiniciado se parar de responder por mais de 10 segundos
- Adiciona suporte para usar o aplicativo da estação de motorista no Android 10+
- Apresenta um recurso de pré -seleção automática de teleop
- Para obter detalhes e guia de uso, consulte esta entrada wiki
- Mostra o ícone ao lado do nome da opmode na lista suspensa da lista Opmode na estação de motorista para indicar a fonte do opmode (ou seja, a ferramenta de programação usada para criá -lo)
- Corrigir o problema onde o aplicativo da estação de motorista sairia após a exibição da tela direta Wi-Fi de configuração
- Fixes Blocks e Onbotjava solicita quando acessados através do REV Hardware Client
Versão 6.0 (20200921-085816)
Notas importantes
- A versão 6.0 é a versão para a melhor temporada de gols.
- Requer Android Studio 4.0.
- Os usuários do Android Studio precisam estar conectados à Internet na primeira vez que criam o aplicativo (para baixar os pacotes necessários para a compilação).
- A versão 5.5 foi uma queda moderadamente grande na temporada, agosto de 2020,. Vale a pena revisar as notas de lançamento abaixo também.
- A versão 5.5 e maior não funcionará nos telefones Android 4.x e 5.x mais antigos. Os usuários devem atualizar para um dispositivo Android 6.x aprovado ou mais recente.
- Os valores de PIDF padrão para os motores de REV foram revertidos para os valores de PID padrão que foram usados na temporada 2018-2019
- Essa mudança foi feita porque os valores de 2018-2019 acabaram funcionando melhor para muitos mecanismos
- Isso traz o comportamento dos motores REV de acordo com o comportamento de todos os outros motores
- Se você preferir o comportamento da temporada 2019-2020 para a Rev Motors, aqui estão os valores do PIDF que estavam em vigor, para que você possa defini-los manualmente em seus opmodos:
Motores HD Hex (todas as caixas de câmbio): Velocity PIDF Valores: P = 1.17
, I = 0.117
, F = 11.7
Posição Valores PIDF: P = 5.0
Motor hexápico do núcleo: Velocidade PIDF Valores: P = 4.96
, I = 0.496
, F = 49.6
Posição Valores PIDF: P = 5.0
Novos recursos
- Inclui modelo de inferência de tensorflow e opmodos de amostra para detectar pilhas de partida de objetivos finais (quatro anéis vs pilha de anel único).
- Inclui alvos de visão de metas Vuforia Ultimate e Opmodes de amostra.
- Introduz um recurso de zoom digital para detecção de objeto Tensorflow (para detectar objetos com mais precisão a distâncias maiores).
- Adiciona entrada de configuração para o motor HD Ultraplanetário Rev Ultraplnetário
Aprimoramentos
- Adiciona métodos setGain () e getGain () à interface normalizadaColorseSor
- Ao definir o ganho de um sensor de cores, você pode ajustar diferentes condições de iluminação. Por exemplo, se você detectar valores mais baixos de cores do que o esperado, poderá aumentar o ganho.
- O valor de ganho é aplicado apenas aos métodos argb () e getNormIlizedColors (), não aos métodos de cor bruta. O método getNormIlizedColors () é recomendado para facilitar o uso e a clareza, uma vez que o argb () deve ser convertido.
- Atualiza a amostra do sensorColor Java para demonstrar uso de ganho
- Mescla amostra de java sensorRevcolordância em amostra sensorcolor java, que mostra as melhores práticas para todos os sensores de cores
- Melhora os valores de recuperação do sensor de cores Rev V3
- Atualiza o cálculo de normalização dos canais RGB
- Melhora o cálculo do canal alfa (pode ser usado como um indicador geral de brilho)
- Corrige a resolução do sensor padrão, que causou problemas com ambientes brilhantes
- Adiciona suporte para alterar a resolução e a taxa de medição do chip do sensor Broadcom
- Remove as leituras e cálculos de RI não destinados ao chip de sensor Broadcom
Correções de bugs
- Melhora a confiabilidade da inicialização da IMU BNO055IMU para evitar falhas de inicialização aleatória (que se manifestaram como
Problem with 'imu'
).
Versão 5.5 (20200824-090813)
A versão 5.5 requer Android Studio 4.0 ou posterior.
Novos recursos
- Adiciona suporte para ligar para as classes Java personalizadas dos blocos Opmodes (corrige a edição Skystone #161).
- As classes devem estar no pacote org.firstinspires.ftc.teamcode.
- Para ter fácil acesso ao OpMode, Hardwaremap, Telemetria, GamePad1 e GamePad2, as classes podem estender o org.firstinspires.ftc.robotcore.external.blocksopmodecompanion.
- Os métodos devem ser estáticos públicos e não têm mais de 21 parâmetros.
- Os métodos devem ser anotados com org.firstinspires.ftc.robotcore.external.exportToBlocks.
- Os parâmetros declarados como opmode, linearopmode, telemetria e hardwaremap são suportados e o argumento é fornecido automaticamente, independentemente da ordem dos parâmetros. No bloco, os soquetes para esses parâmetros são preenchidos automaticamente.
- Os parâmetros declarados como char ou java.lang.Character aceitarão qualquer bloco que retorne o texto e usará apenas o primeiro caractere no texto.
- Os parâmetros declarados como booleanos ou java.lang.boolean aceitarão qualquer bloco que retorne booleano.
- Parâmetros declarados como byte, java.lang.byte, curta, java.lang.short, int, java.lang.integer, long, ou java.lang.long, aceitará qualquer bloco que retorne um número e arredondará esse valor para o número inteiro mais próximo.
- Parâmetros declarados como float, java.lang.float, duplo, java.lang.double aceitará qualquer bloco que retorne um número.
- Adiciona o método da API de telemetria para definir o formato de exibição
- Clássico
- Monoespaçado
- HTML (apenas certas tags)
- Adiciona suporte de blocos para trocar de câmeras.
- Adiciona suporte de blocos para detecção de objeto Tensorflow com um modelo personalizado.
- Adiciona suporte para fazer upload de um modelo de detecção de objeto TensorFlow personalizado na página Gerenciar, o que é especialmente útil para usuários de blocos e onbotjava.
- Mostra novos códigos de piscar de hub de controle quando a banda Wi-Fi é comutada usando o botão do hub de controle (apenas possível no Hub de controle OS 1.1.2)
- Adiciona novos avisos que podem ser desativados nas configurações avançadas de RC
- Versões de aplicativos incompatíveis aviso
- Aviso de uso desnecessário de 2,4 GHz Wi-Fi
- O Rev Hub está executando firmware desatualizado (mais antigo que a versão 1.8.2)
- Adiciona suporte para a Sony PS4 gamepad e retrabalha como os gamepads funcionam na estação de motorista
- Remove a preferência que define o tipo gamepad com base na posição do driver. Substituído por menu que permite especificar o tipo para gamepads com vid e pid desconhecido
- Tentativas de detectar automaticamente o tipo de gamepad com base no USB Vid e PID
- Se o gamepad vid e o PID não forem conhecidos, use o tipo especificado pelo usuário para esse vid e pid
- Se o gamepad vid e o PID não são conhecidos e o usuário não especificou um tipo para esse vid e pid, é feito um palpite sobre como mapear o gamepad
- A estação de motorista agora tentará se recuperar automaticamente de uma desconexão do gamepad e re-assinar novamente para a posição em que foi atribuído quando caiu
- Se apenas um gamepad for atribuído e cair: ele pode ser recuperado
- Se dois gamepads forem atribuídos e tiverem diferentes assinaturas de Vid/PID, e apenas uma queda: será recuperada
- Se dois gamepads forem atribuídos e tiverem diferentes assinaturas de VID/PID, e ambas caem: ambos serão recuperados
- Se dois gamepads forem atribuídos e tiverem as mesmas assinaturas de vídeo/PID, e apenas uma queda: será recuperada
- Se dois gamepads forem atribuídos e tiverem as mesmas assinaturas de Vid/PID, e ambas caírem: nenhuma será recuperada, devido à ambiguidade dos gamepads quando eles reaparecem no barramento USB.
- Atualmente, existe um caso de borda conhecido: se houver dois gamepads com a mesma assinatura de Vid/PID conectada, mas apenas uma é atribuída , e ambos caem, é uma chance de 50-50 da qual será escolhido para a recuperação automática para A posição atribuída: é determinada por qualquer que seja re-reinumerado primeiro pelo controlador de barramento USB.
- Adiciona interface do usuário da paisagem à estação de motorista
- Novo recurso: Timer de prática com dicas de áudio
- Novo recurso (apenas hub de controle): indicador de força de conexão de rede sem fio (0-5 barras)
- Novo recurso (somente hub de controle): tocar na tela Ping/canal mudará para uma tela alternativa mostrando o Radio RX DBM e a velocidade do link (toque novamente para alternar)
- O layout não será autorotado. Você pode alternar o layout do menu Configurações da estação de motorista.
Quebrando mudanças
- Remove o suporte para as versões Android 4.4 a 5.1 (Kitkat e Lollipop). O MinsdkVersion agora tem 23 anos.
- Remove os métodos
LinearOpMode
depreciados waitOneFullHardwareCycle()
e waitForNextHardwareCycle()
Aprimoramentos
- Lida com o endereço de controle RS485 do RS485 automaticamente
- O hub de controle recebe automaticamente um endereço reservado
- Os arquivos de configuração existentes continuarão a funcionar
- Todos os endereços no intervalo de 1-10 ainda estão disponíveis para hubs de expansão
- A luz do hub de controle agora normalmente será verde sólido, sem piscar para indicar o endereço
- O hub de controle não será mostrado na página de configurações de alteração do endereço do hub de expansão
- Melhora o atualizador de firmware do Rev Hub
- O usuário agora pode escolher entre todos os arquivos de atualização de firmware disponíveis
- A versão 1.8.2 do firmware do Rev Hub é agrupada no aplicativo Robot Controller.
- Foi adicionado texto para esclarecer que os hubs de expansão só podem ser atualizados via USB.
- A velocidade de atualização do firmware foi reduzida para melhorar a confiabilidade
- Permite que o firmware do Rev Hub seja atualizado diretamente da página da web do gerenciamento
- Melhora o visualizador de log no controlador de robôs
- Suporte de rolagem horizontal (não mais embrulhada)
- Suporta Pinch-to-Zoom
- Usa uma fonte monoespacada
- As mensagens de erro são destacadas
- Novo esquema de cores
- Tentativas de forçar a parada de um opmode fugitivo/preso sem reiniciar o aplicativo inteiro
- Nem todos os tipos de condições de fuga são interrompidas, mas se o código do usuário tentar conversar com hardware durante o fuga, o sistema deverá capturá -lo.
- Faz vários ajustes na tela auto -inspecionada
- Renomeia a entrada da "versão do OS" para "Android Version"
- Renomeia o "Nome direto Wi-Fi" para "Nome Wi-Fi"
- Adiciona a versão do controle do hub de controle, ao visualizar o relatório de um hub de controle
- Esconde a entrada do modo de avião, ao visualizar o relatório de um hub de controle
- Remove a verificação do trocador de canal de velocidade ZTE
- Mostra a versão de firmware para todos os hubs de expansão e controle
- Reworks Configurações de rede Parte da página Gerenciar
- Todas as configurações de rede agora são aplicadas com um único clique
- O canal direto do Wi-Fi de controladores de robô baseado em telefone agora pode ser alterado na página Gerenciar
- Os canais Wi-Fi são filtrados pela banda (2,4 vs 5 GHz) e se eles se sobrepõem a outros canais
- O canal Wi-Fi atual é pré-selecionado em controladores de robôs baseados em telefone e hubs de controle executando o OS 1.1.2 ou posterior.
- Nos hubs de controle executando o OS 1.1.2 ou posterior, você pode optar por ter o sistema selecionando automaticamente um canal na banda de 5 GHz
- Melhora Onbotjava
- Novos temas claros e escuros substituem os temas antigos (caos, github, cromo, ...)
- O novo tema padrão é
light
e será usado quando você atualizar para esta versão pela primeira vez
- Onbotjava agora tem um editor de guias
- Modo offline somente leitura
- Melhora a função do item de menu "saída" no controlador de robôs e na estação de motorista
- Agora garantido para ser totalmente interrompido e descarregado da memória
- Mostra uma mensagem de aviso se um modo linearopmode existir prematuramente devido à falha em monitorar a condição de início
- Melhora a mensagem de erro mostrada quando a estação de motorista e o controlador de robôs são incompatíveis entre si
- Painel de controle da estação de motorista agora desativado enquanto um robô de reinicialização está em andamento
- Desative as configurações avançadas relacionadas ao Wi-Fi Direct quando o controlador de robô é um hub de controle.
- Ícones da bateria do telefone TINT na estação de motorista quando baixo/crítico.
- Usa nomes "Control Hub Portal" e "Control Hub" (quando apropriado) em novos arquivos de configuração
- Melhorar o desempenho de leitura i2c
- Melhoria muito grande no hub de controle; até ~ 2x mais rápido com lê pequenas (por exemplo, 6 byte)
- Não tão aparente nos hubs de expansão conectados a um telefone
- Atualizar/atualizar a infraestrutura de construção
- Atualização para a biblioteca de suporte 'Androidx' de 'com.android.support:appcompat', que é o fim da vida
- Atualize o TargetsDkVersion e CompilesdkVersion para 28
- Atualize o plugin Android do Android Studio para mais recente
- Corrigir registro de registro relatado na tela 'Sobre'
- Adicionar amostra ilustrando manual webcam Uso: conceptwebcam
Correções de bugs
- Corrige a edição Skystone #248
- Corrige o Skystone Edição #232 e modifica a semântica de cache a granel para permitir transições manuais/automóveis de preservação de cache.
- Melhora o desempenho quando o sensor de distância do Rev 2M está desconectado
- Melhora a legibilidade de mensagens de brinde em determinados dispositivos
- Permite que uma estação de motorista se conecte a um controlador de robô após o outro desconectado
- Melhora a geração de números de série falsos para câmeras UVC que não fornecem um número de série real
- Anteriormente, alguns dispositivos atribuíam tais câmeras uma série de
0:0
e falhavam em abrir e começar a transmitir - FIXE FTC_APP Issue #638.
- Corrige uma série de bugs com o monitor da câmera Vuforia, incluindo:
- Correções de bug, onde a visualização pode ser exibida com uma proporção instável
- Correções Bug onde a visualização pode ser cortada na paisagem
- Corrige o bug onde a pré -visualização ficou totalmente confusa ao girar o telefone
- Corrige o bug onde a mira pode desviar o alvo ao usar webcams
- Corrigir o problema no driver UVC em alguns dispositivos (ftc_app 681) se o streaming foi iniciado/parado várias vezes em uma linha
- A edição manifestada como pânico no kernel em dispositivos que não possuem esse patch do kernel.
- Nos dispositivos afetados que têm o patch, o problema foi manifesto como simplesmente uma falha no início da transmissão.
- A equipe de tecnologia acredita que a causa raiz do problema é um bug no driver Linux Kernel XHCI. Uma solução alternativa foi implementada no driver SDK UVC.
- Corrige o bug no driver UVC, onde muitas vezes a metade dos quadros da câmera seria descartada (por exemplo, apenas 15fps entregues durante uma sessão de streaming configurada para 30fps).
- A emissão de correções em que a detecção de objeto TensorFlow mostraria resultados cuja confiança era menor que o parâmetro mínimo de confiança.
- Corrige uma possível questão de exploração da CVE-2019-11358 em Onbotjava
- Fixes Alterar o endereço de um centro de expansão com hubs de expansão adicionais conectados a ele
- Preserva a conexão de rede do Hub de controle quando "reiniciar robô" é selecionado
- Corrigir emitir onde as varreduras de dispositivos falhariam enquanto o robô estava reiniciando
- Corrija o uso de renderize
- Use Androidx.renderScript Variante: Maior compatibilidade
- Use renderizescript no modo java, não nativo: simplifica a construção
- Corrige o problema de conversão de quadro para bitmap na webcam: o canal alfa não estava sendo inicializado, apenas R, G e B
- Corrige o possível transbordamento aritmético no prazo
- Corrige o deadlock no suporte da webcam da Vuforia, que pode causar atrasos de 5 segundos ao interromper o OpMode
Versão 5.4 (20200108-101156)
- Corrige o Skystone Issue #88
- Adiciona um item de inspeção que observa quando um controlador de robô (Hub Control) está usando a senha padrão de fábrica.
- Corrige o Skystone Issue #61
- Corrige o Skystone Issue #142
- FIXE FTC_APP Issue #417, adicionando mais recursos de monitoramento de corrente e tensão para hubs do REV.
- Corrige um acidente às vezes causado pela atividade de Onbotjava
- Melhora o Onbotjava AutoSave Funcionalidade FTC_APP #738
- Corrige o problema da capacidade de resposta do sistema quando um hub de expansão é desconectado
- Corrigir problemas onde a inicialização da IMU pode impedir que os Opmodes parem
- Corrigir emitir onde AndroidTextTospeech.Speak () falharia se fosse chamado muito cedo
- Adiciona métodos e blocos de telemetria.Speak (), que fazem com que a estação de motorista (se também atualizada) fale texto
- Adiciona e melhora os avisos relacionados ao cubo de expansão
- Melhora o hub de expansão Baixa aviso de bateria
- Exibe o aviso imediatamente após o hub relatar
- Especifica se a condição está atualizada ou ocorreu temporariamente durante uma execução do Opmode
- Displays quais hubs relataram bateria baixa
- Exibe aviso quando o hub perde e recupera o poder durante uma execução do Opmode
- Corrige o padrão de LED do hub após esta condição
- Exibe aviso quando o hub de expansão não está respondendo aos comandos
- Especifica se a condição está atualizada ou ocorreu temporariamente durante uma execução do Opmode
- Esclarece o aviso quando o hub de expansão não está presente na startup
- Especifica que essa condição requer uma reinicialização do robô antes que o hub possa ser usado.
- A luz do hub agora refletirá com precisão este estado
- Melhora a extração de madeira e reduz o spam de log durante essas condições
- Sincroniza o tempo do hub de controle e o fuso horário a um navegador da Web conectado programando o robô, se uma estação de motorista não estiver disponível.
- Adiciona funcionalidade de leitura em massa para hubs de rotações
- Um modo de cache a granel deve ser definido no nível do hub com
LynxModule#setBulkCachingMode()
. Isso se aplica a todas as classes de hardware SDK relevantes que referenciam esse hub. - Os seguintes modos de cache a granel a seguir estão disponíveis:
-
BulkCachingMode.OFF
(padrão): Todas as chamadas de hardware operam como de costume. Os dados em massa podem ler através do LynxModule#getBulkData()
e processados manualmente. -
BulkCachingMode.AUTO
: As chamadas de hardware aplicáveis são servidas a partir de um cache de leitura em massa que é limpo/atualizado automaticamente para garantir que os comandos idênticos não atinjam o mesmo cache. O cache também pode ser limpo manualmente com LynxModule#clearBulkCache()
, embora isso não seja recomendado. - (Usuários Avançados)
BulkCachingMode.MANUAL
: o mesmo que BulkCachingMode.AUTO
exceto que o cache nunca é limpo automaticamente. To avoid getting stale data, the cache must be manually cleared at the beginning of each loop body or as the user deems appropriate.
- Removes PIDF Annotation values added in Rev 5.3 (to AndyMark, goBILDA and TETRIX motor configurations).
- 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.
Sem fio
- 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.
Resiliência
- 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.
Blocks
- 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).
Variado
- 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.
- Blocks
- 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:
- Estúdio 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).
- Minor fixes.
- 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.