УВЕДОМЛЕНИЕ
Этот репозиторий содержит общедоступный SDK FTC для сезона соревнований INTO THE DEEP (2024–2025 гг.).
Добро пожаловать!
Этот репозиторий GitHub содержит исходный код, который используется для создания приложения Android для управления роботом, участвующим в соревнованиях FIRST Tech Challenge. Чтобы использовать этот SDK, загрузите/клонируйте весь проект на свой локальный компьютер.
Требования
Чтобы использовать этот проект Android Studio, вам понадобится Android Studio 2021.2 (кодовое имя Chipmunk) или более поздняя версия.
Чтобы запрограммировать своего робота в Blocks или OnBot Java, вам не нужна Android Studio.
Начиная
Если вы новичок в робототехнике или впервые участвуете в FIRST Tech Challenge, вам следует рассмотреть возможность просмотра Учебного пособия FTC Blocks, чтобы ознакомиться с тем, как использовать систему управления:
Интернет-руководство по блокированию FTC
Даже если вы опытный Java-программист, полезно начать с руководства по блокам FTC, а затем перейти к Java-инструменту OnBot или к Android Studio.
Загрузка проекта
Если вы программист Android Studio, есть несколько способов загрузить этот репозиторий. Обратите внимание: если вы используете Java-инструмент Blocks или OnBot для программирования своего робота, вам не нужно загружать этот репозиторий.
- Если вы являетесь пользователем git, вы можете клонировать самую последнюю версию репозитория:
git-клон https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
Или, если хотите, вы можете использовать кнопку «Загрузить Zip», доступную на главной странице репозитория. Загрузка проекта в виде файла .ZIP позволит сохранить управляемый размер загружаемого файла.
Вы также можете загрузить папку проекта (в виде архивного файла .zip или .tar.gz) из подраздела «Загрузки» на странице «Релизы» для этого репозитория.
Страница «Релизы» также содержит готовые APK-файлы.
После того, как вы загрузили и распаковали (при необходимости) папку, вы можете использовать Android Studio для ее импорта («Импортировать проект (Eclipse ADT, Gradle и т. д.)»).
Получение помощи
Пользовательская документация и руководства
FIRST поддерживает онлайн-документацию с информацией и учебными пособиями по использованию программного обеспечения FIRST Tech Challenge и системы управления роботами. Вы можете получить доступ к этой документации, используя следующую ссылку:
Документация FIRST Tech Challenge
Обратите внимание, что онлайн-документация — это «вечнозеленый» документ, который постоянно обновляется и редактируется. Он содержит самую актуальную информацию о программном обеспечении и системе управления FIRST Tech Challenge.
Справочный материал Javadoc
Справочная документация Javadoc для FTC SDK теперь доступна в Интернете. Нажмите на следующую ссылку, чтобы просмотреть документацию FTC SDK Javadoc в виде действующего веб-сайта:
Документация FTC Javadoc
Интернет-форум пользователей
По техническим вопросам, касающимся системы управления или FTC SDK, посетите сайт сообщества FIRST Tech Challenge:
Сообщество FIRST Tech Challenge
Примеры режимов работы
Этот проект содержит большой выбор примеров OpModes (примеров кода роботов), которые можно вырезать и вставить в папку /teamcode для использования в исходном виде или изменить в соответствии с потребностями вашей команды.
Папка образцов: /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
Файл readme.md, расположенный в папке /TeamCode/src/main/java/org/firstinspires/ftc/teamcode, содержит объяснение примера соглашения об именовании и инструкции о том, как скопировать их в пространство вашего собственного проекта.
Информация о выпуске
Версия 10.1 (20240919-122750)
Улучшения
- Добавляет новые
VisionProcessor
на базе OpenCV (которые можно подключить к VisionPortal на языке Java или Blocks), чтобы помочь командам реализовать обработку цвета с помощью компьютерного зрения в игре INTO THE DEEP.-
ColorBlobLocatorProcessor
реализует обнаружение цветных «капель» OpenCV. Новый пример программы ConceptVisionColorLocator
демонстрирует ее использование.- Предлагается выбор между предварительно заданными цветовыми диапазонами или созданием собственного в цветовом пространстве RGB, HSV или YCrCb.
- Предусмотрена возможность ограничить обнаружение определенной областью интереса на экране.
- Предоставляются функции для применения морфинга эрозии/дилатации к пороговой маске.
- Предусмотрены функции сортировки и фильтрации возвращаемых данных.
-
PredominantColorProcessor
позволяет использовать область камеры в качестве «датчика цвета дальнего действия» для определения преобладающего цвета этой области. Новый пример программы ConceptVisionColorSensor
демонстрирует ее использование.- Определенный преобладающий цвет выбирается из дискретного набора цветовых «образцов», аналогично датчику цвета MINDSTORMS NXT.
- Документацию по этой функции обработки цвета можно найти здесь: https://ftc-docs.firstinspires.org/color-processing.
- Добавлены примеры программ блоков для датчиков цвета: RobotAutoDriveToLine и SensorColor.
- Обновлена функция самопроверки, позволяющая идентифицировать несовпадающие версии программного обеспечения RC/DS как «предостережение», а не как «сбой».
Исправления ошибок
- Исправляет регрессию преобразования AngularVelocity.
Версия 10.0 (20240828-111152)
Критические изменения
- Классы Java и блоки для обнаружения объектов TensorFlow были удалены.
-
AngularVelocity.unit
, который имел тип AngleUnit
был переименован в AngularVelocity.angleUnit
типа UnnormalizedAngleUnit
Улучшения
- Добавлен образец цифрового индикатора REV - ConceptRevLED
- Добавлена поддержка светодиодной палочки Sparkfun QWIIC.
- Для прямого подключения вам понадобится этот кабель
- Добавляет ConceptLEDStick OpMode.
- Добавляет блоки для цветов: черного, синего, голубого, темно-серого, серого, зеленого, светло-серого, пурпурного, красного, белого и желтого.
- Добавляет блок «оценить, но игнорировать результат», который выполняет подключенный блок и игнорирует результат. Позволяет вызвать функцию и игнорировать возвращаемое значение.
- Добавлен драйвер I2C для сонара-дальномера Maxbotix Maxsonar I2CXL.
- Добавляет блоки для setPwmEnable, setPwmDisable и isPwmEnabled для сервоприводов и сервоприводов CR.
- В редакторе блоков: n в поле комментария аннотации ExportToBlocks отображается как разрыв строки.
- В телеметрии появился новый метод setNumDecimalPlaces.
- Телеметрия теперь форматирует двойные и плавающие значения (не внутри объектов, а отдельно).
- Добавляет поддержку Limelight 3A.
- Добавляет начальную поддержку REV Servo Hub.
- Контроллер робота и станция водителя необходимо обновить до версии 10.0, чтобы сервоконцентраторы можно было настроить как сервоконцентраторы. Если приложение на любом из устройств устарело, сервоконцентратор будет отображаться как концентратор расширения, и некоторые функции не будут работать должным образом. Вам следует подождать с созданием конфигурации, включающей сервоконцентратор, пока приложения Driver Station и Robot Controller не будут обновлены до версии 10.0.
- Обновление прошивки сервоконцентратора и изменение его адреса в настоящее время можно выполнить только с помощью аппаратного клиента REV.
- Добавлена поддержка 9-осевого IMU REV (REV-31-3332).
- 9-осевой IMU REV поддерживается только универсальным интерфейсом IMU.
- Добавляет Java-класс
Rev9AxisImuOrientationOnRobot
. - Если вы мысленно замените порт I2C этого IMU портами USB Control Hub,
RevHubOrientationOnRobot
также будет совместим с этим датчиком. - Добавляет блоки для Rev9AxisImuOrientationOnRobot, включая RevHubImuOrientationOnRobot.xyzOrientation и RevHubImuOrientationOnRobot.zyxOrientation.
- Добавляет образцы блоков SensorRev9AxisIMUOrthogonal и SensorRev9AxisIMUNonOrthogonal.
- Улучшает поддержку блоков для RevHubImuOrientationOnRobot.
- Добавляет блоки для RevHubImuOrientationOnRobot.xyzOrientation и RevHubImuOrientationOnRobot.zyxOrientation.
- Добавляет образцы блоков SensorHubIMUOrthogonal (заменяет SensorIMU) и SensorHubIMUNonOrthogonal.
- Обновляет версии EasyOpenCV, AprilTag, OpenCV и
libjpeg-turbo
- Добавляет блоки для максимума и минимума, которые принимают два числа.
- Добавляет блоки OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni и RobotAutoDriveToAprilTagTank.
- Два режима работы с одинаковым именем теперь автоматически переименовываются с указанием имени, за которым следует «-» и имени класса, что позволяет им обоим находиться на устройстве.
- Показывает имя активной конфигурации на странице «Управление» консоли контроллера робота.
- Обновлена библиотека AprilTag для INTO THE DEEP. Примечательно, что
getCurrentGameTagLibrary()
теперь возвращает теги INTO THE DEEP. - Добавляет блоки для Telemetry.setMsTransmissionInterval и Telemetry.getMsTransmissionInterval.
- Добавляет образец блоков SensorOctoQuad.
Исправления ошибок
- Исправлена ошибка, из-за которой блоки RevBlinkinLedDriver находились в разделе «Исполнители» на панели инструментов редактора блоков. Теперь они являются «Другими устройствами».
- Устранена ошибка, из-за которой
Exception
, возникшие в пользовательском коде после запроса остановки со стороны станции водителя, автоматически обрабатывались. - Исправлена ошибка, из-за которой, если вы запросили
AngularVelocity
в единицах измерения, отличных от тех, в которых устройство сообщило об этом, оно нормализовало бы ее между -PI и PI для радианов и -180 и 180 для градусов.
Версия 9.2 (20240701-085519)
Важные примечания
- Классы Java и блоки для обнаружения объектов TensorFlow устарели и будут удалены в версии 10.0.
- Образцы, использующие обнаружение объектов TensorFlow, были удалены.
Улучшения
- Добавляет пояснительный текст к невыполненным элементам проверки. Чтобы просмотреть пояснительный текст, коснитесь красного значка предупреждения о невыполненном элементе.
- В редакторе блоков: добавлен новый тип блока набора переменных, который устанавливает переменную, а также возвращает новое значение.
- Изменяет поведение элементов управления камерой для SwitchableCamera. Теперь каждый метод (например, getExposure, getMinExposure, getMaxExposure, setExposure для ExposureControl) действует на активную в данный момент камеру.
- Добавлена поддержка геймпада, совместимого с REV USB PS4 (REV-31-2983).
- Добавляет ConceptAprilTagMultiPortal OpMode
- Добавлена поддержка квадратурного энкодера OctoQuad и модуля интерфейса ширины импульса.
- Добавляет аннотацию ExportAprilTagLibraryToBlocks, указывающую, что статический метод, возвращающий AprilTagLibrary, экспортируется в среду программирования Blocks. Соответствующий блок появится в панели инструментов «Блоки» вместе со встроенными библиотеками тегов.
- Добавляет блоки OpMode ConceptAprilTagOptimizeExposure.
- Добавлена поддержка датчика одометрии оптического отслеживания SparkFun.
Исправления ошибок
- Исправления №942, из-за которых VisionPortal.close() мог вызвать ошибку IndexOutOfBoundsError.
- Исправлена ошибка в редакторе блоков, из-за которой в свернутых функциональных блоках отображалось предупреждение «Свернутые блоки содержат предупреждения». когда режим Blocks OpMode снова открывается.
- Исправлена ошибка, из-за которой редактор блоков не предупреждал вас о наличии несохраненных изменений при попытке выйти. Эта ошибка возникла из-за изменения поведения в Chrome 119.
- Проблема № 764. Функция Get Gain Control возвращает нулевой указатель для переключаемой камеры.
- Исправлена ошибка, из-за которой правильная мертвая зона для некоторых геймпадов не применялась при включении расширенных функций геймпада.
Версия 9.1 (20240215-115542)
Улучшения
- Устраняет проблему с блоками: если пользователь закрывает всплывающее окно с предупреждением о блоке, оно все равно будет закрыто при следующем открытии проекта в редакторе блоков.
- В редакторе блоков предупреждение об отсутствующих аппаратных устройствах не отображается, если все блоки, использующие отсутствующие аппаратные устройства, отключены.
- Добавляет блоки для поддержки сравнения значений свойств CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode и Servo.Direction в соответствующий блок перечисления.
- Улучшает автоматический импорт OnBotJava для правильного импорта классов при использовании в определенных ситуациях.
- Улучшает автозаполнение OnBotJava, чтобы в большинстве случаев обеспечить лучшие варианты завершения.
- Это устраняет проблему, из-за которой автозаполнение завершалось неудачно, если был определен метод с двумя или более формальными параметрами.
- В OnBotJava добавлена поддержка свертывания кода для развертывания и свертывания разделов кода.
- В OnBotJava заголовок авторских прав теперь автоматически сворачивается при загрузке новых файлов.
- Для всех примеров Blocks OpMode вступительные комментарии были перенесены во всплывающее окно комментариев RunOpMode.
- Команда «Очистить блоки» в редакторе блоков теперь размещает функциональные блоки так, чтобы их всплывающие подсказки комментариев не перекрывали другие функциональные блоки.
- Добавлен пример блоков OpMode SensorTouch.
- Добавлен пример Java OpMode SensorDigitalTouch.
- Несколько улучшений VisionPortal
- Добавляет возможность контролировать, запускается ли поток автоматически после вызова
.build()
в VisionPortal Builder. - Добавляет возможность контролировать, отображается ли наложение статистики обработки зрения или нет.
- VisionPortals теперь реализует интерфейс
CameraStreamSource
, позволяющий пользователям нескольких порталов выбирать, какой портал направляется к DS в INIT, путем вызова CameraStreamServer.getInstance().setSource(visionPortal). Можно выбрать с помощью геймпада между сеансами Camera Stream. - Добавьте опцию в
AprilTagProcessor
для подавления предупреждений о калибровке. - Улучшены предупреждения о калибровке камеры.
- Если калибровка масштабирована, будет указано разрешение, с которого она была масштабирована.
- Если существуют калибровки с неправильным соотношением сторон, будут указаны откалиброванные разрешения.
- Устраняет состояние гонки, которое приводило к сбою приложения при вызове
stopStreaming()
за которым сразу же следовал close()
на VisionPortal. - Исправляет IllegalStateException при вызове
stopStreaming()
сразу после создания VisionPortal. - В новые методы Java добавлены аналоги блоков FTC:
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setSource
Исправления ошибок
- Устраняет проблему, из-за которой OnBotJava не применяет настройки размера шрифта к редактору.
- Обновляет зависимость EasyOpenCV до версии 1.7.1.
- Исправлена невозможность использования EasyOpenCV CameraFactory в OnBotJava.
- Исправляет полный сбой приложения RC, когда пользовательский конвейер выдает исключение.
- Исправлен весь сбой приложения RC, когда аннотатор пользовательского холста выдает исключение.
- Используйте современное отображение трассировки стека при обработке пользовательских исключений вместо устаревшего телеметрического сообщения ESTOP.
Версия 9.0.1 (20230929-083754)
Улучшения
- Обновляет образцы AprilTag, включая децимацию и дополнительные комментарии. Также исправляет вводящие в заблуждение предупреждения об идентификаторе тега.
- Увеличен максимальный размер встроенных комментариев блоков до 140 символов.
- Добавляет образец блоков BasicOmniOpMode.
- Обновлена библиотека CENTERSTAGE, кватернионы ориентации AprilTag.
- Обновлен пример Java ConceptTensorFlowObjectDetection.java, включивший недостающие элементы, необходимые для поддержки пользовательских моделей.
Исправления ошибок
- Устранена проблема, из-за которой после 1 октября Driver Station сообщала об устаревшей версии 9.0 и предлагала пользователю выполнить обновление.
Версия 9.0 (20230830-154348)
Критические изменения
- Удаляет Вуфорию
- Поля в объектах
AprilTagDetection
и AprilTagPose(ftc/raw)
теперь являются final
- Метод компоновщика VisionPortal
setCameraMonitorViewId()
был переименован в setLiveViewContainerId()
а enableCameraMonitoring()
переименован в enableLiveView()
Улучшения
- Добавляет поддержку датчика зрения DFRobot HuskyLens.
- Команды блоков теперь могут выполнять калибровку веб-камеры.
- Добавлен блок для System.currentTimeMillis (в разделе «Утилиты/Время»).
- Добавлен блок для VisionPortal.saveNextFrameRaw (в разделе Vision/VisionPortal).
- Добавлен новый образец OpMode блоков под названием UtilityCameraFrameCapture.
- Образец RobotDriveByGyro был обновлен для использования нового универсального интерфейса IMU. Теперь он поддерживает оба типа IMU.
- Из панели инструментов редактора блоков удалены некоторые подверженные ошибкам блоки ElapsedTime. Это не критическое изменение: старые OpModes блоков, которые используют эти блоки, по-прежнему будут работать как в редакторе блоков, так и во время выполнения.
- Стандартизирует форму «OpMode» для термина «OpMode».
- Предпочтительным способом обозначения OpMode, которые конкретно расширяют
LinearOpMode
(включая блочные OpMode), является «линейный OpMode». - Предпочтительным способом ссылки на OpModes, которые непосредственно расширяют
OpMode
является «итеративный OpMode».
- Переработаны комментарии Javadoc
OpMode
и LinearOpMode
, чтобы их было легче читать и они содержали больше деталей. - Вносит незначительные улучшения в примеры Java.
- Комментарии Javadoc в примерах, которые могли плохо отображаться в Android Studio, были преобразованы в стандартные многострочные комментарии.
- Улучшена согласованность между образцами.
- Образец SensorDigitalTouch был заменен новым образцом SensorTouch, который использует интерфейс
TouchSensor
вместо DigitalChannel
. - Образцы ConceptCompassCalibration, SensorMRCompass и SensorMRIRSeeker были удалены, поскольку они бесполезны для современных соревнований FTC.
Исправления ошибок
- Исправлена ошибка, из-за которой геймпады PlayStation нельзя было использовать в режиме Bluetooth. Bluetooth НЕ разрешен для соревнований, но может быть полезен для использования устройства DS во время зарядки или на информационно-просветительском мероприятии.
- Устранена ошибка, из-за которой значение даты изменения рабочего режима блоков могло измениться на 31 декабря 1969 года, если Control Hub перезагружается во время редактирования рабочего режима блоков.
- Исправлена функция автоматического предварительного выбора TeleOp (не работала в версии 8.2).
- Устраняет ошибку, из-за которой передача целого числа, например 123, в блок Telemetry.addData, который принимает число, отображается в телеметрии как 123,0.
- Устраняет проблемы автозаполнения OnBotJava:
- Автозаполнение неправильно предоставляло значения для текущего класса при автозаполнении локальной переменной.
- Автозаполнение
hardwareMap
неправильно включало бы записи лямбда-класса
- Исправлена ошибка, из-за которой OnBotJava не импортировала классы автоматически.
- Исправлена ошибка, из-за которой вкладки OnBotJava не закрывались при удалении их файла.
- Исправлено обновление представления проекта, которое не происходило при переименовании файла в OnBotJava.
- Исправлен пункт контекстного меню "Загрузить" для внешних библиотек в интерфейсе OnBotJava.
- Устранена проблема, из-за которой телеметрия Driver Station периодически зависала при установке моноширинного режима.
- Исправлено снижение производительности для некоторых операций REV Hub, которое было представлено в версии 8.2.
- Исправлена логика сравнения TagID в примерах DriveToTag.
Версия 8.2 (20230707-131020)
Критические изменения
- Нелинейным (итеративным) режимам эксплуатации больше не разрешается манипулировать исполнительными механизмами в методе
stop()
. Попытки сделать это будут игнорироваться и регистрироваться.- Когда OpMode пытается незаконно манипулировать приводом, контроллер робота распечатывает сообщение журнала, включающее текст
CANCELLED_FOR_SAFETY
. - Кроме того, LinearOpModes больше не могут восстановить способность манипулировать исполнительными механизмами, удалив прерывание своего потока или используя другой поток.
- Удалена поддержка Android версии 6.0 (Marshmallow). MinSdkVersion теперь равен 24.
- Увеличивает версию Робокола.
- Это означает, что контроллер робота или станция водителя версии 8.2 или более поздней версии не сможет взаимодействовать с станцией водителя или контроллером робота версии 8.1 или более ранней версии.
- Если вы забудете обновить оба приложения одновременно, появится сообщение об ошибке с указанием того, какое приложение старше и его следует обновить.
- FTC_FieldCoordinateSystemDefinition.pdf был перемещен. Он все еще находится в истории git, но был удален из снимка git, соответствующего тегу 8.2. Официальная версия теперь находится в системе координат поля.
-
LynxUsbDevice.addConfiguredModule()
и LynxUsbDevice.getConfiguredModule()
заменены на LynxUsbDevice.getOrAddModule()
. - Старые блоки для обнаружения объектов Vuforia и TensorFlow устарели и были удалены из панели инструментов редактора блоков. Существующие блоки OpModes, содержащие старые блоки для обнаружения объектов Vuforia или TensorFlow, можно открыть в редакторе блоков, но запустить их не получится.
Новые возможности
- Добавляет новый API
VisionPortal
для компьютерного зрения.- Этот API может быть изменен в финальной версии!
- Добавлено несколько новых образцов.
- Добавляет поддержку обнаружения AprilTags.
-
VisionPortal
— это новая точка входа для обработки AprilTag и TFOD. - Vuforia будет удалена в будущем выпуске.
- Обновлены зависимости TensorFlow.
- В блоки добавлена поддержка элементов управления веб-камерой.
- На панели инструментов редактора блоков теперь есть категория «Видение», расположенная непосредственно над категорией «Утилиты».
- Соответствующую документацию по соответствующим технологиям можно найти по адресу
- АпрельТег Введение
- Руководство по AprilTag SDK
- Значения обнаружения AprilTag
- Тестовые изображения AprilTag
- Калибровка камеры
- Добавлена поддержка Driver Station для геймпадов Logitech Dual Action и Sony PS5 DualSense.
- Сюда не входит поддержка геймпада Sony PS5 DualSense Edge.
- Всегда обращайтесь к Руководству по игре 1, чтобы определить законность геймпада в соревнованиях.
- Добавляет поддержку потоковой передачи полезных данных MJPEG в драйвер UVC (для использования требуется внешняя процедура распаковки JPEG).
- Показывает в пользовательском интерфейсе Driver Station подсказку о том, как привязать геймпад при нажатии кнопок или перемещении джойстиков на несвязанном геймпаде.
- Добавляет опцию полноэкранного просмотра «Потока камеры» на Driver Station.
- Исходный код OnBotJava автоматически сохраняется в виде ZIP-файла при каждой сборке с сохранением скользящего окна последних 30 сборок; позволяет восстановить исходный код из предыдущих сборок, если код был случайно удален или поврежден.
- Добавляет поддержку изменения адресов концентраторов расширения, которые не подключены напрямую через USB.
- На экране «Изменение адреса концентратора расширения» теперь есть кнопка «Применить», позволяющая изменять адреса, не выходя из экрана.
- Адреса, назначенные другим концентраторам, подключенным к тому же USB-соединению или Control Hub, больше нельзя выбрать.
- Увеличен максимальный размер встроенных комментариев блоков до 100 символов.
- Сохраняет положение открытых блоков комментариев.
- Добавляет новые образцы AprilTag Driving: RobotDriveToAprilTagTank и RobotDriveToAprilTagOmni.
- Добавляет пример, иллюстрирующий оптимизацию экспозиции камеры для AprilTags: ConceptAprilTagOptimizeExposure.
Исправления ошибок
- Исправляет экран проверки, чтобы сообщать о версии приложения, используя версию SDK, определенную в библиотеках, вместо версии, указанной в
AndroidManifest.xml
. Это исправляет случай, когда приложение могло показывать пользователю совпадающие номера версий, но при этом сообщать, что версии не совпадают.- Если версия, указанная в
AndroidManifest.xml
не соответствует версии SDK, запись о версии SDK будет отображаться на веб-странице управления.
- Исправлено отсутствие отображения ошибок при сохранении файла конфигурации с повторяющимися именами из Driver Station.
- Устраняет взаимоблокировку в драйвере UVC, которая проявлялась в OpenFTC/EasyOpenCV#57.
- Устраняет взаимоблокировку в драйвере UVC, которая могла возникнуть при горячем подключении камер.
- Исправлена совместимость драйвера UVC с камерой с глобальным затвором Arducam OV9281.
- Исправляет состояние аварийной остановки при возникновении сборки OnBotJava с повторяющимися именами OpMode.
- Устраняет известные причины спама в журналах «Попытка использования закрытого экземпляра LynxModule».
- Исправлена индикация светодиодов визуальной идентификации при настройке концентраторов расширения, подключенных через RS-485.
Версия 8.1.1 (20221201-150726)
Это выпуск, предназначенный только для исправления ошибок и направленный на устранение следующих четырех проблем.
- Проблема № 492 — Невозможно создать новые режимы операций блоков.
- Проблема № 495. Удалите последний модификатор из объекта телеметрии OpMode.
- Проблема № 500. Некоторые устройства невозможно настроить, если приложение Driver Station обновлено до версии 8.1.
- Обновление приложения Robot Controller или Driver Station до версии 8.1.1 или более поздней версии устранит эту проблему.
- Сенсорный датчик Modern Robotics можно было настроить как цифровое устройство. Его можно использовать только как аналоговое устройство.
Версия 8.1 (20221121-115119)
Критические изменения
- Устаревшие поля
OpMode
msStuckDetectInit
, msStuckDetectInitLoop
, msStuckDetectStart
, msStuckDetectLoop
и msStuckDetectStop
.- OpModes больше не имеет ограничения по времени для
init()
, init_loop()
, start()
или loop()
, поэтому поля, соответствующие этим методам, больше не используются. -
stop()
по-прежнему имеет ограничение по времени, но теперь оно жестко запрограммировано на 1 секунду и не может быть изменено с помощью msStuckDetectStop
.
- Устаревшие методы
OpMode
internalPreInit()
, internalPostInitLoop()
и internalPostLoop()
.- Итеративные
OpMode
будут продолжать вызывать эти методы в случае, если они были переопределены. - Эти методы вообще не будут вызываться для
LinearOpMode
.
- Устаревший (и перестающий учитывать)
DeviceProperties.xmlTagAliases
.
Улучшения
- Добавляет новый интерфейс
IMU
в Blocks и Java, который можно использовать как с исходным IMU BNO055, включенным во все старые концентраторы управления и концентраторы расширения, так и с новым альтернативным IMU BHI260AP.- Вы можете определить, какой тип IMU находится в вашем Control Hub, перейдя на страницу «Управление» веб-интерфейса.
- Чтобы узнать, как использовать новый интерфейс
IMU
, см. https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html. Образец блоков SensorIMU
также был обновлен для использования нового интерфейса IMU
, и были добавлены следующие примеры Java:-
SensorIMUOrthogonal
- Используйте этот образец, если концентратор REV установлен параллельно или перпендикулярно нижней части робота.
-
SensorIMUNonOrthogonal
- Используйте этот образец, если ваш REV Hub установлен на роботе в любой другой ориентации.
-
ConceptExploringIMUOrientations
- Этот OpMode — это инструмент, который поможет вам понять, как работают ортогональные ориентации и какая из них применима к вашему роботу.
- Доступ к IMU BHI260AP возможен только через новый интерфейс
IMU
. BNO055 IMU можно запрограммировать с использованием нового интерфейса IMU
или продолжить программирование с использованием старого интерфейса BNO055IMU
. Если вы хотите иметь возможность быстро переключиться на новый Control Hub, который может содержать IMU BHI260AP, вам следует перенести свой код для использования нового интерфейса IMU
. - В отличие от старого интерфейса
BNO055IMU
, который работал правильно только тогда, когда концентратор REV был установлен на вашем роботе, интерфейс IMU
позволяет вам указать ориентацию концентратора REV на вашем роботе. Он учтет это и даст вам ориентацию в системе координат робота, а не в специальной системе координат для REV Hub. В результате ваш шаг и рыскание будут равны 0, когда ваш робот выровнен, а не когда концентратор REV выровнен, что приведет к гораздо более надежным значениям угла ориентации для большинства монтажных ориентаций. - Из-за новой роботоориентированной системы координат углы тангажа и крена, возвращаемые интерфейсом
IMU
будут отличаться от тех, которые возвращаются интерфейсом BNO055IMU
. При переносе кода обратите особое внимание на документацию. - Если вы откалибровали свой BNO055, вы можете предоставить эти данные калибровки новому интерфейсу
IMU
, передав экземпляр BNO055IMUNew.Parameters
в IMU.initialize()
. - Интерфейс
IMU
также подходит для реализации сторонними поставщиками для IMU, которые поддерживают предоставление ориентации в форме кватерниона.
- Итеративные
OpMode
(в отличие от LinearOpMode
) теперь выполняются в выделенном потоке.- На время цикла не должно влиять все остальное, что происходит в системе.
- Slow
OpMode
больше не может увеличивать время, необходимое для обработки сетевых команд, и наоборот. - Методам
init()
, init_loop()
, start()
loop()
больше не требуется возвращать результат в течение определенного периода времени.
- Устаревший драйвер IMU BNO055: восстанавливает возможность инициализации в одном OpMode, а затем позволяет другому OpMode повторно использовать эту инициализацию. Это позволяет вам поддерживать положение 0 отклонения между режимами работы, если это необходимо.
- Позволяет настроенным версиям драйверов устройств в FTC SDK использовать один и тот же тег XML.
- Раньше, если вы хотели настроить драйвер устройства, вам нужно было скопировать его в новый класс и присвоить ему новый тег XML. Добавление нового тега XML означало, что для переключения используемого драйвера вам нужно было изменить файл конфигурации.
- Теперь, чтобы использовать ваш собственный драйвер, все, что вам нужно сделать, это указать класс вашего пользовательского драйвера при вызове
hardwareMap.get()
. Чтобы вернуться к исходному драйверу, укажите исходный класс драйвера. Если вы укажете интерфейс, который реализуется как исходным, так и пользовательским драйвером, нет никакой гарантии, какая реализация будет возвращена.
Исправления ошибок
- Исправлен доступ к ссылкам «Управление моделями TensorFlow Lite» и «Управление звуками», а также выполнение загрузки блоков и OnBotJava OpMode из аппаратного клиента REV.
- Устранена проблема, из-за которой драйвер устройства I2C автоматически инициализировался с использованием параметров, назначенных при предыдущем запуске OpMode.
- Улучшено размещение всплывающего меню Driver Station в альбомной ориентации.
- Исправляет исключение NullPointerException при попытке получить ненастроенный IMU BNO055 в режиме Blocks OpMode на телефоне с дистанционным управлением.
- Устраняет проблему с блоками, если переменная называется
orientation
.
Версия 8.0 (20220907-131644)
Критические изменения
- Увеличивает версию Робокола.
- Это означает, что контроллер робота или станция водителя версии 8.0 или более поздней версии не сможет взаимодействовать со станцией водителя или контроллером робота версии 7.2 или более ранней версии.
- Если вы забудете обновить оба приложения одновременно, появится сообщение об ошибке с указанием того, какое приложение старше и его следует обновить.
- Инициализация устройств I2C теперь происходит при первом их извлечении из
HardwareMap
.- Раньше все устройства I2C инициализировались еще до начала выполнения OpMode, независимо от того, собирались ли вы их использовать на самом деле или нет. Это может привести к снижению производительности и появлению ненужных предупреждений.
- Благодаря этому изменению для пользователей Java очень важно получить все необходимые устройства из
HardwareMap
на этапе инициализации OpMode . А именно, объявите переменную для каждого аппаратного устройства, которое будет использовать OpMode, и присвойте каждому значение. Не делайте этого на этапе выполнения, иначе ваш OpMode может ненадолго зависнуть, пока инициализируются извлекаемые вами устройства. - Режимы работы, которые не используют все устройства I2C, указанные в файле конфигурации, должны занимать меньше времени для инициализации. Режимы работы, в которых используются все указанные устройства I2C, должны занимать то же время, что и раньше.
- Устраняет проблему № 251 путем изменения порядка, в котором скорость вращения оси считывается из вектора угловой скорости в драйвере BNO055 IMU.
- Устаревший
pitchMode
в BNO055IMU.Parameters
.- Установка для
pitchMode
PitchMode.WINDOWS
нарушит соглашения о координатах, используемые драйвером.
- Перемещает
OpModeManagerImpl
в пакет com.qualcomm.robotcore.eventloop.opmode
.- Это нарушает работу сторонних библиотек EasyOpenCV (версия 1.5.1 и более ранние) и FTC Dashboard (версия 0.4.4 и более ранние).
- Удаляет устаревший метод
OpMode
resetStartTime()
(вместо него используйте resetRuntime()
). - Удаляет защищенный класс
LinearOpMode.LinearOpModeHelper
(который не предназначен для использования OpModes). - Удаляет тип конфигурации устройства I2C (синхронный) (устарел с 2018 г.).
Улучшения
- Неперехваченные исключения в режимах эксплуатации больше не требуют перезапуска робота.
- Появление синего экрана со трассировкой стека не является ошибкой SDK; это заменяет красный текст в области телеметрии.
- С самого первого выпуска SDK сбои в OpMode переводили робота в состояние «АВАРИЙНОЙ ОСТАНОВКИ», отображая только первую строку исключения и требуя от пользователя нажать «Перезапустить робота», чтобы продолжить.
- Исключения во время OpMode теперь открывают всплывающее окно с той же цветовой схемой, что и средство просмотра журналов, содержащее 15 строк трассировки стека исключений, что позволяет легко отслеживать вызывающую ошибку строку без необходимости подключения для просмотра журналов через ADB или прокрутки большого количества журналов. в средстве просмотра журналов.
- Текст исключения во всплывающем окне можно масштабировать и прокручивать, как на веб-странице.
- Нажатие кнопки «ОК» во всплывающем окне вернет вас на главный экран станции водителя и позволит немедленно снова запустить OpMode без необходимости выполнения «Перезапуска робота».
- Добавляет новый пример Java для демонстрации использования класса оборудования для абстракции исполнительных механизмов робота и совместного использования их в нескольких режимах работы.
- Пример OpMode — ConceptExternalHardwareClass.java.
- Абстрактным классом оборудования является RobotHardware.java.
- Обновляется образец Java RobotAutoDriveByGyro_Linear для использования IMU концентратора управления/расширения REV.
- Обновляет образцы Vuforia, чтобы они ссылались на ресурсы PowerPlay и имели правильные имена и расположение полей целевых изображений.
- Обновляет образцы TensorFlow для ссылки на ресурсы PowerPlay.
- Добавляет дополнительную поддержку языковых функций Java 8 в редактор OnBotJava.
- Чтобы принять участие, откройте настройки OnBotJava и установите флажок
Enable beta Java 8 support
. - Обратите внимание, что код Java 8 будет компилироваться только в том случае, если контроллер робота работает под управлением Android 7.0 Nougat или более поздней версии.
- Пожалуйста, сообщайте о проблемах здесь.
- В OnBotJava нажатие на ошибки сборки теперь корректно переходит в правильное место.
- Улучшает поведение автозаполнения OnBotJava, чтобы в большинстве случаев обеспечить лучшие варианты завершения.
- Добавляет QR-код в отчет о проверке контроллера робота при просмотре со станции водителя для сканирования инспекторами на соревнованиях.
- Повышает производительность и надежность I2C в некоторых сценариях.
Версия 7.2 (20220723-130006)
Критические изменения
- Обновляет инструмент сборки. Для пользователей Android Studio это изменение требует Android Studio Bumpmunk 2021.2.1.
- Удаляет поддержку устройств, которые не являются конкурентными юридическими, включая модули управления Core Modern Robotics, Matrix Controller, а также контроллеры и датчики Hitechnic/NXT. Поддержка остается для современной робототехники I2C датчиков.
Улучшения
- Увеличивает высоту площади ландшафтного меню на 3 дота на станции водителя, что значительно облегчает выбор.
- Добавляет метод
terminateOpModeNow()
, чтобы Opmodes сразу же позволил сразу же самостоятельно выяснить. - Добавляет метод
opModeInInit()
в LinearOpMode
для облегчения инициаторов. Аналогично opModeIsActive()
но для фазы иниции. - Предупреждает пользователя, если у него есть подключенный Logitech F310 GamePad, который установлен в режим DirectInput.
- Позволяет контроллерам двигателя Sparkmini быстрее реагировать, чтобы ускорить изменения.
- Укрывает номер версии неправильно установленного сестринского приложения (то есть DS, установленного на устройстве RC или наоборот) на экране проверки.
- Добавляет поддержку для разрешения пользователю отредактировать комментарий для блока RunoPmode.
- Добавляет поле ParameterDefaultValues в @Exporttoblocks. Это дает возможность для метода Java с аннотацией @ExporttoBlocks для указания значений по умолчанию для параметров метода, когда он показан в редакторе блоков.
- Сделайте блоки LinearoPmode более читаемыми. Имя Opmode отображается в блоке RunoPMode, но не на других блоках LineAROPMode.
- Добавлена поддержка обнаружения объектов TensorFlow для использования другого генератора кадров, а не Vuforia. Использование Vuforia для передачи камеры камеры в TFOD все еще поддерживается.
- Удаляет использование renderscript.
- Исправляет logspam на запуске приложений повторяющихся стектраксов, относящихся к
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- Позволяет отключить радио Bluetooth с экрана проверки
- Улучшает предупреждающие сообщения, когда устройства i2C не отвечают
- Добавляет поддержку для управления светодиодом RGB, присутствующим на Gamepads PS4/ETPARK от Opmodes
- Удаляет устаревшие ссылки на топ -бот из образцов Opmode. Переименуют образцы «pushbot» в «Робот». Моторные направления поменялись, чтобы быть совместимыми с приводным поездом «Прямой привод».
Исправления ошибок
- Исправляет выпуск № 316 (matrixf.inverted () вернул неверную матрицу для матриц 1x1 и 2x2).
- Самосекция теперь допускает совместимость с контроллером водителя и контроллера роботов между точками.
- Исправляет ошибку, где, если бы один и тот же экземпляр объекта
RumbleEffect
был в очередь в очереди на несколько геймпадов, может произойти, что обе команды Rumble будут отправлены только на один геймпад. - Исправляет ошибку на станции водителя, где на концентраторе Driver, если Advanced Gamepad Features была отключена и был подключен официально поддерживаемый GamePad, а затем открытие Advanced GamePad функции или переопределения типа геймпада приведут к восстановлению геймпада пользовательским драйвером USB, даже если вы даже не будут Advanced Gamepad функции были отключены.
- Защита от (маловероятного) исключения нулевого указателя в Vuforia Localizer.
- HERMEN ONBOTJAVA и Blocks Saves для защиты от проблем с сохранением при отключении от программы и управления
- Исправляет проблему, в которой приложение RC будет зависеть, если бы rev Hub I2C Write Fake не удалась, потому что предыдущая операция I2C все еще продолжалась. Это висится чаще всего во время инициализации датчика расстояния REV 2M
- Удаление ConceptWebcam.java Пример программы. Этот образец не совместим с онботжавой.
- Исправляет ошибку, где использование HTML -тегов в поле комментариев @ExportToBlocks предотвратило загрузку редактора блоков.
- Исправляет редактор блоков, поэтому он не просит вас сохранить, когда вы ничего не изменили.
- Исправляет загрузку очень большего проекта блоков в редактор автономных блоков.
- Исправляет ошибку, которая заставила блоки для DCMotorex быть опущены из инструментального ящика редактора блоков.
- Исправляет блоки программы, лишенные блоков (из -за использования блока метки TensorFlow)
Версия 7.1 (20211223-120805)
- Исправляет сбой при вызове
isPwmEnabled()
(выпуск № 223). - Исправляет ошибку Lint (выпуск № 4).
- Исправляет сбой станции водителя при попытке использовать GamePad DualShock4 v1 с включенными функциями GamePad (выпуск № 173).
- Исправляет возможный (но маловероятный) сбой станции водителя при подключении геймпадов любого типа.
- Исправляет ошибку, где водительская станция будет использовать Generic 20% Deadzone для Xbox360 и Logitech F310 Gamepads, когда усовершенствованные функции GamePad были отключены.
- Добавлены Simpleomnidrive образца Opmode.
- Добавляет API контроля баланса UVC.
- Исправляет проблему № 259 Большинство образцов блоков для TensorFlow нельзя использовать для другой модели.
- Блоки, ранее помеченные TensorFlowObjectDetectionFreightFrenzy (из подкатегории, названной «Оптимизированной для грузового бешенства») и TensorFlowObjectDetectionCustomdelel (из подкатегории, названной «Пользовательская модель»), были заменены блоками, помеченными в TensorFlowObjectDetection. Блоки в существующих Opmodes будут автоматически обновлены на новые блоки при открытии в редакторе блоков.
- Исправляет проблему № 260 Блоки не могут вызвать метод Java, который имеет параметр Vuforialocalizer.
- Blocks теперь имеет блок с надписью VuforiafreightFrenzy.getVuforialOcalizer для этого.
- Добавлена страница для управления моделями TensorFlow Lite в/SDCARD/First/TfliteModels. Чтобы добраться до страницы моделей Tflite:
- Вы можете нажать на ссылку внизу страницы управления.
- Вы можете нажать на ссылку на странице проекта в верхнем правом проекте.
- Исправляет logspam, когда
isBusy()
вызывается на двигателе, а не в режиме RTP. - Укрывает элемент «Пароль RC» на экране проверки для контроллеров роботов на основе телефона. (Это применимо только к контрольным центрам).
- Добавляет меню «Канал» 165 в Wi-Fi Direct Channel Menu на экране настроек. (165 ранее был доступен через веб -интерфейс, но не локально в приложении).
Версия 7.0 (20210915-141025)
Улучшения и новые функции
- Добавляет поддержку внешних библиотек онботжавы и блоков.
- Загрузить .jar и .aar файлы в onbotjava.
- Известное ограничение - устройство RobotController должно работать с Android 7.0 или более.
- Известное ограничение - файлы .AAR с активами не поддерживаются.
- Внешние библиотеки могут обеспечить поддержку аппаратных устройств, используя аннотацию в пакете com.qualcomm.robotcore.hardware.configuration.annotations.
- Внешние библиотеки могут включать в себя файлы .so для собственного кода.
- Внешние библиотеки можно использовать из Opmodes Onbotjava.
- Внешние библиотеки, которые используют следующие аннотации, могут использоваться из блоков Opmodes.
- org.firstinspires.ftc.robotcore.external.exportclasstoblocks
- org.firstinspires.ftc.robotcore.external.exporttoblocks
- Внешние библиотеки, которые используют следующие аннотации, могут добавить новые аппаратные устройства:
- com.qualcomm.robotcore.hardware.configuration.annotations.analogsensortype
- com.qualcomm.robotcore.hardware.configuration.annotations.deviceProperties
- com.qualcomm.robotcore.hardware.configuration.annotations.digitaliodevicetype
- com.qualcomm.robotcore.hardware.configuration.annotations.i2cdevicetype
- com.qualcomm.robotcore.hardware.configuration.annotations.motortype
- com.qualcomm.robotcore.hardware.configuration.annotations.servotype
- Внешние библиотеки, которые используют следующие аннотации, могут добавить новую функциональность в контроллер робота:
- org.firstinspires.ftc.ftccommon.external.oncreate
- org.firstinspires.ftc.ftccommon.external.oncreateeventloop
- org.firstinspires.ftc.ftccommon.external.oncreatemenu
- org.firstinspires.ftc.ftccommon.external.ondestroy
- org.firstinspires.ftc.ftccommon.external.webhandlerregistrar
- Добавляет поддержку в центре драйвера Robotics.
- Добавляет полностью пользовательские пользователи USB Gamepad Driver к станции водителя (см. Меню «Advanced Gamepad Features» в настройках DS).
- Позволяет GamePads работать на устройствах без нативной поддержки ядра Linux (например, некоторые румынские устройства Motorola).
- Позволяет DS читать уникальный серийный номер каждого геймпада, обеспечивая автоматическое переоборудование выпавших игровых пар (Примечание: к сожалению, это не относится к геймпадам etpark, потому что у них нет уникального сериала) .
- Чтение уникального серийного номера также дает возможность настроить DS для назначения геймпадов в определенную позицию по умолчанию (поэтому не нужно начинать+A/B вообще).
- Светодиодное кольцо на геймпаде Xbox360 и светодиодной панели RGB на PS4 Gamepad используется для обозначения позиции драйвера, с которой привязан геймпад.
- Руловые двигатели на геймпадах Xbox360, PS4 и ETPARK можно контролировать из OpModes.
- Двухточечная сенсорная панель на геймпаде PS4 может быть прочитана от Opmodes.
- Кнопки «Back» и «Руководство» на геймпаде теперь могут быть безопасно связаны с элементами управления роботами (ранее, на многих устройствах Android перехватывает эти кнопки в качестве нажатия кнопок дома и закрывать приложение).
- Усовершенствованные функции GamePad включены по умолчанию, но могут быть отключены через меню «Настройки», чтобы вернуться к поддержке геймпада, предоставленной Android.
- Улучшает точность измерения пинга.
- Исправляет проблему, когда время пинга показало, что было выше, чем реальность, когда первоначально подключилось к роботу или перезагрузку.
- Чтобы увидеть полное улучшение, вы должны обновить как приложения контроллера робота, так и приложения водителя.
- Образцы обновлений, расположенные в/ftcrobotcontroller/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples.
- Добавлены образцы ConceptGamePadrumble и ConceptGamePadtouchPad, чтобы проиллюстрировать использование этих новых возможностей Gampad.
- Сгущенные существующие образцы Vuforia только в 2 образца (ConceptVuforifieldNavigation & ConceptVuforiafieldNavigationWebcam), показывающие, как определить местоположение робота на поле с использованием Vuforia. Они оба используют целевые изображения текущего сезона.
- Добавлен ConceptVuforiadRivetOtargetWebcam, чтобы проиллюстрировать простой способ двигаться непосредственно к любой видимой цели Vuforia.
- Делает много улучшений в системе предупреждения и индивидуальных предупреждений.
- Предупреждения теперь гораздо более расставлены, так что их легче читать.
- Новые предупреждения были добавлены для условий, которые должны быть разрешены перед конкуренцией.
- Несоответствующее предупреждение приложений теперь использует основные и незначительные версии приложений, а не код версии.
- Предупреждения автоматически переработаны, когда установлено приложение Controller из нового сезона FTC.
- Добавляет поддержку транзакций I2C в концентраторе Expansion Hub / Control Hub без указания адреса регистра.
- См. Раздел 3 спецификации Ti i2c.
- Призыв этих новых методов при использовании современного оборудования для робототехники приведет к UnsupportedOperationException.
- Изменения Vuforialocalizer
close()
метод быть публичным. - Добавляет поддержку моделей обнаружения объектов TensorFlow V2.
- Уменьшает неоднозначность самооценки языка и графики.
- Onbotjava теперь предупреждает о потенциально непреднамеренных перезаписи файла.
- Улучшает поведение диапазона Wi-Fi и селектора каналов на веб-странице Manage.
Исправления ошибок
- Исправляет приложение Robot Controller Crash на Android 9+, когда подключается станция водителя.
- Исправляет проблему, в которой OpMode отвечал за вызов отключения на TenSorFlow TfoBjectDetector. Теперь это делается автоматически.
- Исправляет блоки инициализации Vuforia, чтобы позволить пользователю выбрать оси. Обновлены соответствующие блоки. Образец Опмоды.
- Исправляет FtcrobotController Выпуск #114 Светодиодные блоки и класс Java не работают.
- Исправляет регистрацию сопоставления для Opmodes, которые содержат специальные символы в их именах.
- Определяет управление Opmode станции водителя, становящиеся безрезультатными, если станция водителя была установлена на ландшафтную планировку, а сборка Onbotjava была вызвана во время работы OpMode.
- Исправляет приложение станции водителя, закрывающее себя, когда оно отключается, или экран выключен.
- Исправляет «Black Vlirl of Doom» (Infinite »настройка сообщения Wi-Fi Direct») на старых устройствах.
- Обновляет комментарий Wiki на странице Onbotjava Intro.
Версия 6.2 (20210218-074821)
Улучшения
- Попытки автоматически исправить условие, в котором внутренний центр расширения управляющего центра не работает, переполняя свою прошивку
- Делает различные улучшения на экране прямого сопряжения Wi-Fi, особенно в режиме ландшафта
- Служба контроллера робота больше не категорически перезапускается, когда основное действие выдвигается на передний план
- (Например, служба больше не перезапускается, просто просмотрев экран самооценки и нажав кнопку задней части)
- Он по -прежнему перезапускается, если открывается меню «Настройки» или настройка меню робота
Исправления ошибок
- Исправляет FtcrobotController Проблема № 71 не может открыть Opmodes в блоках V6.1
- Исправляет FtcrobotController выпуск № 79 6.1. Вызывает мягкую перезагрузку в игре Motorola E5
- Исправляет проблему, когда сторожевой пейзаж ОС управляющего хаба перезагрузил бы приложение для контроллера робота, если контрольный центр не смог общаться со своим центром внутреннего расширения
- Исправляет определенные устройства i2c, не отображаемые в соответствующих полях
HardwareMap
(например, hardwareMap.colorSensor
) - Исправляет проблему, в которой выполнение сброса Wi-Fi Factory в управляющем узле не установило бы полосу Wi-Fi на 2,4 ГГц.
- Исправляет проблему, где onbotjava может не создать новый файл, если была выбрана опция «Код настройки для настроенного аппаратного обеспечения»
- Исправляет проблему, когда выполнение определенных операций после сбоев OpMode временно нарушит связь с контролем/расширением.
- Исправляет проблему, в которой управляющий концентратор с настроенным USB-подключенным центром расширения не будет работать, если в стартап не хватает центра расширения.
- Исправляет потенциальные проблемы, вызванные несовместимыми версиями прошивки контроля/расширения.
- Исправляет FTC_APP Выпуск 673 Последний матч -блок удаляется вместо старых от Robotlog
- Исправляет ConceptVuforiaultimateGoalNavigationWebcam Sample Opmode с помощью правильно ориентируя камеру на роботе.
- Исправляет проблему, в которой LogCat будет спам с прерыванием, когда запрашивается остановка со станции водителя (это поведение было случайно введено в V5.3). Это изменение не влияет на функциональность.
- Исправляет проблему, в которой редактор блоков не загружается, если имя любого телефона содержит апостроф.
Версия 6.1 (20201209-113742)
- Создает кнопку сканирования на экране конфигурации, обновите список экспансионных концентраторов, подключенных через RS-485
- Исправляет выпуск Skystone #143
- Улучшает совместимость веб -интерфейса со старыми версиями Browser и System System.
- Исправляет проблему в драйвере UVC, где некоторые камеры (например, определенные MS Lifecams), которые сообщали о интервале кадров как округлые, а не усеченные значения (например,
666667*100ns
вместо 666666*100ns
для 15 кадров в секунду), не смогут начать потоковую передачу. - Добавляет поддержку в драйвере UVC для виртуального управления PTZ
- Добавляет поддержку в управление Driver UVC для усиления (ISO)
- Добавляет поддержку в драйвере UVC для включения/отключения приоритета AE. Эта настройка предоставляет средство для прошивки камеры
- А) Это может недооценить запрошенную частоту кадров, чтобы обеспечить теоретически лучшее изображение (т.е. с более длительным воздействием, чем позволяет межкафрентный период выбранной частоты кадров))
- Б) Он должен соответствовать срок межкадрового срока для выбранной частоты кадров, даже если изображение может быть недоведочным в результате
- Добавляет поддержку для контрольного контроля Robot Controller Watchdog.
- Приложение Controller Robot будет перезапущено, если оно перестанет реагировать на более 10 секунд
- Добавляет поддержку для использования приложения станции Driver на Android 10+
- Вводит функцию предварительного выбора автоматического телеоптора
- Для получения подробной информации и руководства по использованию, пожалуйста, смотрите эту запись в вики
- Показывает значок рядом с именем OpMode в раскрывающемся списке списка OpMode на станции драйвера, чтобы указать источник OpMode (то есть инструмент программирования, используемый для его создания)
- Исправляет проблему, где приложение станции драйвера выйдет после отображения настройки прямого экрана Wi-Fi
- Исправляет блоки и подсказки onbotjava при обращении через аппаратный клиент Rev
Версия 6.0 (20200921-085816)
Важные примечания
- Версия 6.0 - версия для Ultimate Choal Season.
- Требуется Android Studio 4.0.
- Пользователи Android Studio должны быть подключены к Интернету при первом создании приложения (для того, чтобы загрузить необходимые пакеты для сборки).
- Версия 5.5 была умеренно большой межсезонье, август 2020 года. Стоит также просмотреть эти заметки о выпуске ниже.
- Версия 5.5 и больше не будут работать на старых телефонах Android 4.x и 5.x. Пользователи должны перейти на утвержденное устройство Android 6.x или новое.
- Значения PIDF по умолчанию для моторов Rev были возвращены к значениям PID по умолчанию, которые использовались в сезоне 2018-2019
- Это изменение было сделано, потому что значения 2018-2019 гг. Оказались лучше для многих механизмов
- Это приводит к поведению моторов Rev в соответствии с поведением всех других двигателей
- Если вы предпочитаете поведение сезона 2019-2020 для Rev Motors, вот значения PIDF, которые были на месте, чтобы вы могли вручную установить их в своих Opmodes:
HD Hex Motors (все коробки передач): значения скорости PIDF: P = 1.17
, I F = 49.6
I = 0.117
, F = 11.7
I = 0.496
значения PIDF: P = 5.0
P = 4.96
шестнадцатеричного двигателя: скорость PIDF Значения PIDF: P = 5.0
Новые возможности
- Включает в себя модель вывода TensorFlow и образцы Opmodes для обнаружения конечных стеков стартовых целей (четыре кольца против одного кольцевого стека).
- Включает в себя целевые цели Vuforia Ultimate Goal Vision и выборки Opmodes.
- Представляет функцию цифрового масштабирования для обнаружения объектов TensorFlow (для более точного обнаружения объектов на больших расстояниях).
- Добавляет запись конфигурации для rev ultraplanetary HD Hex Motor
Улучшения
- Добавляет методы setGain () и getGain () к интерфейсу NormalizedColorsensor.
- Установив усиление датчика цвета, вы можете настроить различные условия освещения. Например, если вы обнаружите более низкие значения цвета, чем ожидалось, вы можете увеличить усиление.
- Значение усиления применяется только к методам argb () и getNormalizedcolors (), а не к необработанным методам цвета. Метод GetNormalizedColors () рекомендуется для простоты использования и ясности, поскольку argb () должен быть преобразован.
- Обновления Sensorcolor Java Sample, чтобы продемонстрировать использование усиления
- Слияет SensorRevColordistance Образец Java в образец SensorColor Java, который демонстрирует лучшие практики для всех датчиков цвета
- Улучшает извлечение значений из датчика Color Rev Color v3
- Обновляет расчет нормализации каналов RGB
- Улучшает расчет альфа -канала (может быть использован в качестве общего показателя яркости)
- Исправляет разрешение датчика по умолчанию, что вызвало проблемы с яркими средами
- Добавляет поддержку для изменения разрешения и скорости измерения чипа датчика Broadcom
- Удаляет IR показания и расчеты, не предназначенные для чипа датчика Broadcom
Исправления ошибок
- Улучшает достоверность инициализации BNO055IMU IMU для предотвращения ошибок случайной инициализации (которая проявлялась как
Problem with 'imu'
).
Версия 5.5 (20200824-090813)
Версия 5.5 требует Android Studio 4.0 или более поздней версии.
Новые возможности
- Добавляет поддержку для вызова пользовательских классов Java из блоков Opmodes (исправляет выпуск Skystone #161).
- Классы должны быть в пакете org.firstinspires.ftc.teamcode.
- Чтобы получить легкий доступ к Opmode, Hardwaremap, Telemetry, GamePad1 и GamePad2, классы могут расширять org.firstinspires.ftc.robotcore.external.blocksopmodecompanion.
- Методы должны быть общедоступными статичными и иметь не более 21 параметров.
- Методы должны быть аннотированы с помощью org.firstinspires.ftc.robotcore.external.exporttoblocks.
- Параметры, объявленные как OpMode, LineAROPMode, телеметрия и HardwareMap, поддерживаются, и аргумент предоставляется автоматически, независимо от порядка параметров. На блоке разъемы для этих параметров автоматически заполняются.
- Параметры, объявленные как char или java.lang.character, примут любой блок, который возвращает текст и будет использовать только первый символ в тексте.
- Параметры, объявленные логическими или Java.lang.boolean, примут любой блок, который возвращает логический.
- Параметры, объявленные Byte, java.lang.byte, short, java.lang.short, int, java.lang.integer, long, или java.lang.long, примут любой блок, который возвращает число и округл бы это значение. ближайшее целое число.
- Параметры, объявленные как float, java.lang.float, двойной, java.lang.double примет любой блок, который возвращает число.
- Добавляет метод API телеметрии для настройки формата отображения
- Классический
- Моноспорт
- HTML (только определенные теги)
- Добавляет поддержку блоков для переключения камер.
- Добавляет поддержку блоков для обнаружения объектов TensorFlow с помощью пользовательской модели.
- Добавляет поддержку для загрузки пользовательской модели обнаружения объектов TensorFlow на странице управления, что особенно полезно для блоков и пользователей onbotjava.
- Показывают новые коды Blink Hub, когда полоса Wi-Fi переключается с использованием кнопки управляющего центра (возможно только для управляющего Hub OS 1.1.2)
- Добавляет новые предупреждения, которые можно отключить в расширенных настройках RC
- Несоответствующие версии приложений предупреждение
- Ненужное предупреждение о использовании 2,4 ГГц Wi-Fi
- Rev Hub работает на устаревшей прошивке (старше версии 1.8.2)
- Добавляет поддержку Sony PS4 GamePad и переосмысливает, как работают геймпады на станции водителя
- Удаляет предпочтения, который устанавливает тип геймпада на основе позиции драйвера. Замените меню, которое позволяет определить тип для геймпадов с неизвестным VID и PID
- Попытки автоматического определения геймпада на основе USB VID и PID
- Если GamePad VID и PID не известны, используйте тип, указанный пользователем для этого VID и PID
- Если GamePad Vid и PID не известны, и пользователь не указал тип для этого видео и PID, сделано образованное предположение о том, как картировать GamePad
- Станция водителя теперь попытается автоматически восстановиться после отключения геймпада и повторно оценить ее до позиции, на которую оно было назначено, когда он упал
- Если назначен только один геймпад и его падает: его можно восстановить
- Если назначены два геймпада и имеют разные подписи VID/PID, и только один падает: это будет восстановлено
- Если назначены два геймпада и имеют разные подписи VID/PID, и оба падают: оба будут восстановлены
- Если назначены два геймпада и имеют одинаковые подписи VID/PID, и только один падает: это будет восстановлено
- Если два геймпада назначены и имеют одинаковые подписи VID/PID, и оба падают: ни один из них не будет восстановлен из-за неоднозначности геймпадов, когда они заносят на USB-автобус.
- В настоящее время есть один известный случай с краем: если есть два геймпада с одной и той же подключенной сигнатурой VID/PID, но только один назначен , и они оба падают, это вероятность 50-50, из которого будет выбрана для автоматического восстановления Присвоенная позиция: она определяется каким-либо, каким-то переоснащены сначала контроллером шины USB.
- Добавляет ландшафтный пользовательский интерфейс к станции водителя
- Новая функция: тренировочный таймер с звуковыми сигналами
- Новая функция (только в центре управления): индикатор прочности подключения к беспроводной сети (0-5 столбцов)
- Новая функция (только концентратор управления): нажатие на дисплей Ping/Channel переключится на альтернативный дисплей, показывающий RX RX DBM и скорость ссылки (нажмите снова, чтобы переключиться назад)
- Макет не будет автоотеж. Вы можете переключить макет из меню «Настройки станции водителя».
Нарушение изменений
- Удаляет поддержку версий Android от 4,4 до 5.1 (Kitkat и Lollipop). Minsdkversion сейчас 23.
- Удаляет устаревшие методы
LinearOpMode
waitOneFullHardwareCycle()
и waitForNextHardwareCycle()
Улучшения
- Автоматически обрабатывает адрес управления RS485.
- Концентратор управления автоматически дает зарезервированный адрес
- Существующие файлы конфигурации будут продолжать работать
- Все адреса в диапазоне 1-10 по-прежнему доступны для экспансионных центров
- Свет концентратора управления теперь обычно будет сплошным зеленым, без мигания, чтобы указать адрес
- Управляющий концентратор не будет отображаться на странице Настройки изменения адреса расширения.
- Улучшает обновление прошивки Rev Hub
- Пользователь теперь может выбирать между всеми доступными файлами обновления прошивки
- Версия 1.8.2 прошивки REV HUB сочетается в приложении Robot Controller.
- Текст был добавлен, чтобы уточнить, что концентраторы расширения могут быть обновлены только через USB.
- Скорость обновления прошивки была снижена для повышения надежности
- Позволяет обновлять прошивку REV HUB непосредственно с веб -страницы Manage
- Улучшает просмотрщик журнала на контроллере робота
- Горизонтальная поддержка прокрутки (больше не обернуто слово)
- Поддерживает щипнику к ззую
- Использует моноселистый шрифт
- Сообщения об ошибках выделены
- Новая цветовая схема
- Попытки принудительно остановить беглый/застрявший Opmode без перезапуска всего приложения
- Не все типы сбежавших условий остановлены, но если пользовательский код пытается общаться с оборудованием во время безупречного, система должна быть в состоянии его захватить.
- Вдает различные настройки на экране самооценки
- Переименование «Версия ОС» в «версию Android»
- Переименование «Wi-Fi Direct Name» на «Wi-Fi Name»
- Добавляет версию ОС управления, при просмотре отчета управляющего центра
- Скрывает запись режима самолета, при просмотре отчета управляющего центра
- Удаляет проверку на Changer ZTE Speed Channel
- Показывает версию прошивки для всех центров расширения и управления
- Перезагрузка сетевой настройки страницы управления страницей
- Все настройки сети теперь применяются с одним щелчком
- Wi-Fi Direct Channel of Phone Robot Controllers теперь может быть изменен со страницы управления
- Wi-Fi-каналы фильтруются полосой (2,4 против 5 ГГц) и перекрываются ли они с другими каналами
- Текущий канал Wi-Fi предварительно выбран на телефонных контроллерах на основе телефона, а управляющие концентраторы под управлением ОС 1.1.2 или более поздней версии.
- В контрольных центрах, работающих на ОС 1.1.2 или более
- Улучшает онботжава
- Новые свет и темные темы заменяют старые темы (хаос, GitHub, Chrome, ...)
- Новая тема по умолчанию
light
и будет использоваться при первом обновлении до этой версии
- У онботжава теперь есть редактор с вкладками
- Офлайн-режим только для чтения
- Улучшает функцию пункта меню «Выход» на контроллере робота и водительской станции
- Теперь гарантированно будет полностью остановлен и выгружен из памяти
- Показывает предупреждающее сообщение, если LineAropMode существует преждевременно из -за неспособности контролировать условия начала
- Улучшает сообщение об ошибке, показанное, когда станция водителя и контроллер робота несовместимы друг с другом
- Панель управления Opmode Station Station теперь отключена, пока находится робот перезагрузки
- Отключает расширенные настройки, связанные с Wi-Fi Direct, когда контроллер робота является контрольным центром.
- Тинта Значки аккумулятора на станции водителя, когда низкий/критический.
- Использует имена «Портал управления концентратором» и «Концентратор управления» (при необходимости) в новых файлах конфигурации
- Улучшение I2C Read Performance
- Очень большое улучшение в контрольном центре; до ~ 2 раза быстрее с небольшими (например, 6 байтами) чтениями
- Не так очевидно в экспансионных центрах, подключенных к телефону
- Обновление/обновить инфраструктуру сборки
- Обновление до библиотеки поддержки Androidx 'от' com.android.support:appcompat ', которая является окончанием жизни
- Обновление TargetSdkversion и CompilesDkversion до 28
- Обновление плагина Android Android Android Studio на последнее время
- Исправлена зарегистрированная метка строительства на экране «О» экране
- Добавьте образец иллюстрации ручного использования веб -камеры: conceptWebcam
Исправления ошибок
- Исправляет выпуск Skystone #248
- Исправляет проблему Skystone #232 и изменяет семантику массовой кэширования, чтобы обеспечить руководство по обеспечению кеша/автоматические переходы.
- Повышает производительность, когда датчик расстояния REV 2M отключен
- Улучшает читабельность сообщений тостов на определенных устройствах
- Позволяет водительской станции подключаться к контроллеру робота после того, как другой отключил
- Улучшает генерацию поддельных серийных номеров для UVC -камер, которые не обеспечивают реального серийного номера
- Ранее некоторые устройства назначали такие камеры сериал
0:0
и не могут открыть и начать потоковую передачу - Исправляет выпуск FTC_APP #638.
- Исправляет множество ошибок с монитором камеры Vuforia, включая:
- Исправляет ошибку, где может быть отображен предварительный просмотр с помощью невысокого соотношения сторон
- Исправляет ошибку, где предварительный просмотр может быть отрезан в ландшафте
- Исправляет ошибку, где предварительный просмотр полностью испортился при вращении телефона
- Исправляет ошибку, где Crosshair может уйти от цели при использовании веб -камеров
- Исправляет проблему в драйвере UVC на некоторых устройствах (FTC_APP 681), если потоковая передача была запущена/остановлен несколько раз подряд
- Проблема проявляется как паника ядра на устройствах, у которых нет этого патча ядра.
- На пострадавших устройствах, которые имеют патч, проблема проявлялась как просто неспособность начать потоковую передачу.
- Техническая команда считает, что основной причиной проблемы является ошибка в драйвере ядра Linux XHCI. Обходной путь был реализован в драйвере UVC SDK.
- Исправляет ошибку в драйвере UVC, где часто половина кадров от камеры будет отброшена (например, только 15 кадров в секунду, доставленные во время потокового сеанса, настроенного на 30 кадров в секунду).
- Исправляет проблему, в которой обнаружение объектов TensorFlow показало бы результаты, чья уверенность была ниже, чем минимальный параметр доверия.
- Исправляет потенциальную проблему эксплуатации CVE-2019-11358 в онботжаве
- Исправляет изменение адреса расширения концентратора с помощью дополнительных концентраторов расширения, подключенных к нему
- Сохраняет сетевое соединение управляющего концентратора при выборе «перезапуска робота»
- Исправляет проблему, когда сканирование устройств потерпит неудачу, когда робот перезагружался
- Исправлено использование рендеров
- Используйте вариант Androidx.RenderScript: повышенная совместимость
- Используйте renderscript в режиме Java, а не нативно: упрощает сборку
- Исправляет задача преобразования веб-камеры в плаву
- Исправляет возможный арифметический переполнение в крайний срок
- Исправляет тупик в поддержке веб-камеры Vuforia, которая может вызвать 5-секундные задержки при остановке Opmode
Версия 5.4 (20200108-101156)
- Исправляет выпуск Skystone #88
- Добавляет элемент проверки, который примечает, когда контроллер робота (управляющий центр) использует пароль для завода по умолчанию.
- Исправляет выпуск Skystone #61
- Исправляет выпуск Skystone #142
- Исправляет выпуск FTC_APP #417, добавив больше возможностей для мониторинга тока и напряжения для Hub.
- Исправляет аварию, иногда вызванную активностью онботжавы
- Улучшает функциональность Autosave Onbotjava ftc_app #738
- Исправляет проблему реагирования на систему при отключении центра расширения
- Исправляет проблему, где инициализация IMU может помешать опмодам остановиться
- Исправляет проблему, где AndroidTextTospeech.speak () потерпит неудачу, если бы ее называли слишком рано
- Добавляет методы и блоки Telemetry.speak (), которые приводят к тому, что станция водителя (если также обновляется) говорить текст
- Добавляет и улучшает предупреждения, связанные с экспансией
- Улучшает предупреждение о низком батареи в центре расширения
- Отображает предупреждение сразу после того, как хаб сообщает об этом
- Указывает, является ли условие ток или произошло временно во время запуска Opmode
- Дисплей, в каких хабах сообщили о низкой батареи
- Отображает предупреждение, когда Хаб теряет и восстанавливает мощность во время работы OpMode
- Исправляет светодиодный шаблон концентратора после этого условия
- Отображает предупреждение, когда концентратор расширения не отвечает на команды
- Указывает, является ли условие ток или произошло временно во время запуска Opmode
- Уточняет предупреждение, когда в стартапе нет центра расширения.
- Указывает, что это условие требует перезапуска робота, прежде чем можно будет использовать концентратор.
- Свет концентратора теперь точно отражает это состояние
- Улучшает ведение журналов и уменьшает спам в этих условиях
- Синхронизирует время управляющего центра и часовой пояс под соединенным веб -браузером программированием робота, если станция водителя недоступна.
- Добавляет функциональность насыпного чтения для Hubs Rev
- Режим объемного кэширования должен быть установлен на уровне концентратора с помощью
LynxModule#setBulkCachingMode()
. Это относится ко всем соответствующим классам оборудования SDK, которые ссылаются на этот центр. - Доступны следующие следующие режимы массового кэширования концентратора:
-
BulkCachingMode.OFF
(по умолчанию): все аппаратные вызовы работают как обычно. Массовые данные могут прочитать через LynxModule#getBulkData()
и обрабатываться вручную. -
BulkCachingMode.AUTO
: Применимые аппаратные вызовы обслуживаются из объемного кэша чтения, который автоматически очищается/обновляется, чтобы убедиться, что идентичные команды не достигают того же кэша. Кэш также может быть очищен вручную с помощью LynxModule#clearBulkCache()
, хотя это не рекомендуется. - (расширенные пользователи)
BulkCachingMode.MANUAL
: То же, что и BulkCachingMode.AUTO
за исключением того, что кэш никогда не очищается автоматически. Чтобы избежать получения устаревших данных, кэш должен быть очищен вручную в начале каждого тела цикла или, как пользователь считает целесообразным.
- Удаляет значения аннотации PIDF, добавленные в Rev. 5.3 (к конфигурациям AndyMark, Gobilda и Tetrix Motor).
- 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
Известные проблемы:
- 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.
Беспроводная связь
- 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.
Устойчивость
- 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.
Блоки
- 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).
Разнообразный
- 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".
Известные проблемы:
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.
- Блоки
- 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.
Известные проблемы:
- Android Studio
- 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).
Известные проблемы:
- 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.