알아채다
이 저장소에는 INTO THE DEEP(2024-2025) 대회 시즌을 위한 공개 FTC SDK가 포함되어 있습니다.
환영!
이 GitHub 저장소에는 FIRST Tech Challenge 대회 로봇을 제어하기 위한 Android 앱을 빌드하는 데 사용되는 소스 코드가 포함되어 있습니다. 이 SDK를 사용하려면 전체 프로젝트를 로컬 컴퓨터에 다운로드/복제하세요.
요구사항
이 Android Studio 프로젝트를 사용하려면 Android Studio 2021.2(코드명 Chipmunk) 이상이 필요합니다.
Blocks 또는 OnBot Java로 로봇을 프로그래밍하려면 Android Studio가 필요하지 않습니다.
시작하기
로봇 공학을 처음 접하거나 FIRST Tech Challenge를 처음 접하는 경우 FTC Blocks 튜토리얼을 검토하여 제어 시스템 사용 방법을 숙지하는 것이 좋습니다.
FTC 블록 온라인 튜토리얼
고급 Java 프로그래머라도 FTC Blocks 튜토리얼로 시작한 다음 나중에 OnBot Java Tool 또는 Android Studio로 마이그레이션하는 것이 도움이 됩니다.
프로젝트 다운로드
Android Studio 프로그래머인 경우 이 저장소를 다운로드하는 방법에는 여러 가지가 있습니다. Blocks 또는 OnBot Java 도구를 사용하여 로봇을 프로그래밍하는 경우 이 저장소를 다운로드할 필요가 없습니다.
- 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 기술 챌린지 문서
온라인 문서는 지속적으로 업데이트되고 편집되는 "상시적인" 문서입니다. 여기에는 FIRST Tech Challenge 소프트웨어 및 제어 시스템에 대한 최신 정보가 포함되어 있습니다.
Javadoc 참조 자료
FTC SDK에 대한 Javadoc 참조 문서가 이제 온라인으로 제공됩니다. FTC SDK Javadoc 문서를 라이브 웹사이트로 보려면 다음 링크를 클릭하세요.
FTC Javadoc 문서
온라인 사용자 포럼
제어 시스템 또는 FTC SDK에 관한 기술적인 질문이 있는 경우 FIRST Tech Challenge 커뮤니티 사이트를 방문하십시오.
FIRST 기술 챌린지 커뮤니티
샘플 OpMode
이 프로젝트에는 잘라내어 /teamcode 폴더에 붙여넣어 그대로 사용하거나 팀의 요구 사항에 맞게 수정할 수 있는 다양한 샘플 OpMode(로봇 코드 예제)가 포함되어 있습니다.
샘플 폴더: /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
/TeamCode/src/main/java/org/firstinspires/ftc/teamcode 폴더에 있는 readme.md 파일에는 샘플 명명 규칙에 대한 설명과 이를 자신의 프로젝트 공간에 복사하는 방법에 대한 지침이 포함되어 있습니다.
출시 정보
버전 10.1(20240919-122750)
향상된 기능
- 팀이 INTO THE DEEP 게임에서 컴퓨터 비전을 통해 색상 처리를 구현하는 데 도움이 되는 새로운 OpenCV 기반
VisionProcessor
(Java 또는 블록의 VisionPortal에 연결될 수 있음)를 추가합니다.-
ColorBlobLocatorProcessor
OpenCV 색상 "blob" 감지를 구현합니다. 새로운 샘플 프로그램인 ConceptVisionColorLocator
는 그 사용법을 보여줍니다.- 사전 정의된 색상 범위 중에서 선택하거나 RGB, HSV 또는 YCrCb 색상 공간에서 사용자 정의 색상 범위를 생성할 수 있습니다.
- 화면의 특정 관심 영역으로 감지를 제한하는 기능이 제공됩니다.
- Threshold Mask에 침식/팽창 모핑을 적용하는 기능 제공
- 반환된 데이터를 정렬하고 필터링하는 기능 제공
-
PredominantColorProcessor
사용하면 카메라 영역을 "장거리 색상 센서"로 사용하여 해당 영역의 주요 색상을 결정할 수 있습니다. 새로운 샘플 프로그램인 ConceptVisionColorSensor
는 그 사용법을 보여줍니다.- 결정된 주요 색상은 MINDSTORMS NXT 색상 센서와 유사한 개별 색상 "견본" 세트에서 선택됩니다.
- 이 색상 처리 기능에 대한 문서는 여기에서 찾을 수 있습니다: https://ftc-docs.firstinspires.org/color-processing
- 컬러 센서용 블록 샘플 프로그램인 RobotAutoDriveToLine 및 SensorColor를 추가했습니다.
- 일치하지 않는 RC/DS 소프트웨어 버전을 "실패"가 아닌 "주의"로 식별하도록 자체 검사가 업데이트되었습니다.
버그 수정
- AngularVelocity 변환 회귀 문제를 수정했습니다.
버전 10.0(20240828-111152)
주요 변경 사항
- TensorFlow 객체 감지용 Java 클래스 및 블록이 제거되었습니다.
-
AngleUnit
유형이었던 AngularVelocity.unit
이 UnnormalizedAngleUnit
유형의 AngularVelocity.angleUnit
으로 이름이 바뀌었습니다.
향상된 기능
- REV 디지털 표시기용 샘플이 추가되었습니다 - ConceptRevLED
- Sparkfun QWIIC LED 스틱에 대한 지원 추가
- ConceptLEDStick OpMode 추가
- 검정색, 파란색, 청록색, dkgray, 회색, 녹색, ltgray, 자홍색, 빨간색, 흰색 및 노란색 색상에 대한 블록을 추가합니다.
- 연결된 블록을 실행하고 결과를 무시하는 "평가하지만 결과 무시" 블록을 추가합니다. 함수를 호출하고 반환 값을 무시할 수 있습니다.
- Maxbotix Maxsonar I2CXL 소나 거리 측정기용 I2C 드라이버 추가
- 서보 및 CR 서보에 대해 setPwmEnable, setPwmDisable 및 isPwmEnabled에 대한 블록을 추가합니다.
- Blocks 편집기에서: ImportToBlocks 주석의 설명 필드에 있는 n이 줄 바꿈으로 표시됩니다.
- 원격 측정에는 새로운 메서드 setNumDecimalPlaces가 있습니다.
- 원격 측정은 이제 double 및 float 형식을 지정합니다(객체 내부가 아닌 자체적으로).
- Limelight 3A에 대한 지원을 추가합니다.
- REV 서보 허브에 대한 초기 지원을 추가합니다.
- 서보 허브를 서보 허브로 구성하려면 로봇 컨트롤러와 드라이버 스테이션을 모두 버전 10.0으로 업데이트해야 합니다. 두 장치 중 하나의 앱이 오래된 경우 서보 허브가 확장 허브로 표시되고 일부 기능이 예상대로 작동하지 않습니다. Driver Station과 로봇 컨트롤러 앱이 모두 버전 10.0으로 업데이트될 때까지 서보 허브를 포함하는 구성을 생성해야 합니다.
- 서보 허브의 펌웨어 업데이트 및 주소 변경은 현재 REV 하드웨어 클라이언트를 통해서만 수행할 수 있습니다.
- REV 9축 IMU(REV-31-3332)에 대한 지원 추가
- REV 9축 IMU는 범용 IMU 인터페이스에서만 지원됩니다.
-
Rev9AxisImuOrientationOnRobot
Java 클래스를 추가합니다. - 이 IMU의 I2C 포트를 Control Hub의 USB 포트로 정신적으로 대체하는 경우
RevHubOrientationOnRobot
도 이 센서와 호환됩니다. - RevHubImuOrientationOnRobot.xyzOrientation 및 RevHubImuOrientationOnRobot.zyxOrientation을 포함하여 Rev9AxisImuOrientationOnRobot에 대한 블록을 추가합니다.
- 블록 샘플 SensorRev9AxisIMUOrthogonal 및 SensorRev9AxisIMUNonOrthogonal을 추가합니다.
- RevHubImuOrientationOnRobot에 대한 블록 지원을 향상합니다.
- RevHubImuOrientationOnRobot.xyzOrientation 및 RevHubImuOrientationOnRobot.zyxOrientation에 대한 블록을 추가합니다.
- 블록 샘플 SensorHubIMUOrthogonal(SensorIMU 대체) 및 SensorHubIMUNonOrthogonal을 추가합니다.
- EasyOpenCV, AprilTag, OpenCV 및
libjpeg-turbo
버전 업데이트 - 두 개의 숫자를 사용하는 최대 및 최소 블록을 추가합니다.
- OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni 및 RobotAutoDriveToAprilTagTank를 추가합니다.
- 동일한 이름을 가진 두 개의 OpMode는 이제 자동으로 이름 뒤에 "-"가 붙은 이름과 클래스 이름으로 변경되어 둘 다 장치에 있을 수 있습니다.
- 로봇 컨트롤러 콘솔의 관리 페이지에 활성 구성의 이름을 표시합니다.
- INTO THE DEEP의 AprilTag 라이브러리가 업데이트되었습니다. 특히
getCurrentGameTagLibrary()
이제 INTO THE DEEP 태그를 반환합니다. - Telemetry.setMsTransmissionInterval 및 Telemetry.getMsTransmissionInterval에 대한 블록을 추가합니다.
- 블록 샘플 SensorOctoQuad를 추가합니다.
버그 수정
- RevBlinkinLedDriver 블록이 블록 편집기 도구 상자의 액추에이터 아래에 있던 버그를 수정합니다. 이제 기타 장치입니다.
- Driver Station에서 정지를 요청한 후 사용자 코드에
Exception
가 발생하면 자동으로 먹히는 버그를 수정합니다. - 장치가 보고한 것과 다른 단위로
AngularVelocity
를 요청하면 라디안의 경우 -PI와 PI, 도의 경우 -180과 180 사이에서 정규화되는 버그가 수정되었습니다.
버전 9.2(20240701-085519)
중요 사항
- TensorFlow 객체 감지용 Java 클래스 및 블록은 더 이상 사용되지 않으며 버전 10.0에서 제거될 예정입니다.
- TensorFlow 객체 감지를 사용하는 샘플이 삭제되었습니다.
향상된 기능
- 검사 활동 중 불합격 항목에 대한 설명 텍스트를 추가합니다. 설명 텍스트를 보려면 실패한 항목에 대한 빨간색 경고 아이콘을 탭하세요.
- 블록 편집기에서: 변수를 설정하고 새 값도 반환하는 새로운 종류의 변수 설정 블록을 추가했습니다.
- SwitchableCamera에 대해 카메라 컨트롤이 작동하는 방식을 변경합니다. 이제 각 메소드(예: getExposure, getMinExposure, getMaxExposure, ExposureControl의 setExposure)는 현재 활성 카메라에 작동합니다.
- REV USB PS4 호환 게임패드(REV-31-2983)에 대한 지원 추가
- ConceptAprilTagMultiPortal OpMode 추가
- OctoQuad Quadrature 인코더 및 펄스 폭 인터페이스 모듈에 대한 지원 추가
- AprilTagLibrary를 반환하는 정적 메서드를 Blocks 프로그래밍 환경으로 내보냈음을 나타내는 ImportAprilTagLibraryToBlocks 주석을 추가합니다. 해당 블록은 내장 태그 라이브러리와 함께 블록 도구 상자에 나타납니다.
- 블록 OpMode ConceptAprilTagOptimizeExposure를 추가합니다.
- SparkFun 광학 추적 오도메트리 센서에 대한 지원을 추가합니다.
버그 수정
- VisionPortal.close()가 IndexOutOfBoundsError를 일으킬 수 있는 #942를 수정합니다.
- 축소된 기능 블록에 "접힌 블록에 경고가 포함되어 있습니다."라는 경고가 표시되는 블록 편집기의 버그를 수정합니다. 블록 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의 몇 가지 개선 사항
- VisionPortal Builder에서
.build()
호출 후 스트림이 자동으로 시작되는지 여부를 제어하는 옵션을 추가합니다. - 비전 처리 통계 오버레이가 렌더링되는지 여부를 제어하는 옵션을 추가합니다.
- VisionPortals는 이제
CameraStreamSource
인터페이스를 구현하므로 다중 포털 사용자가 CameraStreamServer.getInstance().setSource(visionPortal)를 호출하여 INIT에서 DS로 라우팅되는 포털을 선택할 수 있습니다. 카메라 스트림 세션 사이에서 게임패드를 통해 선택할 수 있습니다. - 보정 경고를 억제하는 옵션을
AprilTagProcessor
에 추가하세요. - 카메라 보정 경고 개선
- 교정의 크기가 조정되면 조정된 해상도가 나열됩니다.
- 잘못된 종횡비의 보정이 있는 경우 보정된 해상도가 나열됩니다.
- VisionPortal에서
stopStreaming()
호출한 후 즉시 close()
호출할 때 앱 충돌을 일으키는 경합 상태를 수정합니다. - VisionPortal을 구축한 후 즉시
stopStreaming()
호출할 때 발생하는 IllegalStateException을 수정합니다. - 새로운 Java 메소드에 FTC Block 대응 항목을 추가했습니다.
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setSource
버그 수정
- OnBotJava가 글꼴 크기 설정을 편집기에 적용하지 않는 문제를 수정합니다.
- EasyOpenCV 종속성을 v1.7.1로 업데이트
- OnBotJava에서 EasyOpenCV CameraFactory를 사용할 수 없는 문제 수정
- 사용자 파이프라인에서 예외가 발생할 때 전체 RC 앱 충돌을 수정합니다.
- 사용자 사용자 캔버스 주석자가 예외를 발생시킬 때 전체 RC 앱 충돌을 수정합니다.
- 사용자 예외를 처리할 때 레거시 ESTOP 원격 측정 메시지 대신 최신 스택 추적 디스플레이를 사용합니다.
버전 9.0.1(20230929-083754)
향상된 기능
- Decimation 및 추가 설명을 포함하도록 AprilTag 샘플을 업데이트합니다. 오해의 소지가 있는 태그 ID 경고도 수정합니다.
- 블록 인라인 댓글의 최대 크기를 140자로 늘립니다.
- 블록 샘플 BasicOmniOpMode를 추가합니다.
- 업데이트된 CENTERSTAGE 라이브러리 AprilTag 오리엔테이션 쿼터니언
- 사용자 정의 모델 지원에 필요한 누락된 요소를 포함하도록 Java 샘플 ConceptTensorFlowObjectDetection.java를 업데이트했습니다.
버그 수정
- 10월 1일 이후 Driver Station이 v9.0에서 더 이상 사용되지 않는 것으로 보고하고 사용자에게 업데이트하라는 메시지를 표시하는 문제를 수정합니다.
버전 9.0(20230830-154348)
주요 변경 사항
- Vuforia 제거
-
AprilTagDetection
및 AprilTagPose(ftc/raw)
개체의 필드가 이제 final
입니다. - VisionPortal 빌더 메소드
setCameraMonitorViewId()
setLiveViewContainerId()
로 이름이 바뀌었고, enableCameraMonitoring()
enableLiveView()
로 이름이 바뀌었습니다.
향상된 기능
- DFRobot HuskyLens 비전 센서에 대한 지원을 추가합니다.
- Blocks 팀은 이제 웹캠 보정을 수행할 수 있습니다.
- System.currentTimeMillis에 대한 블록을 추가했습니다(Utilities/Time 아래).
- VisionPortal.saveNextFrameRaw에 대한 블록을 추가했습니다(Vision/VisionPortal 아래).
- UtilityCameraFrameCapture라는 새로운 샘플 블록 OpMode를 추가했습니다.
- RobotDriveByGyro 샘플이 새로운 범용 IMU 인터페이스를 사용하도록 업데이트되었습니다. 이제 두 가지 IMU 유형을 모두 지원합니다.
- 블록 편집기의 도구 상자에서 오류가 발생하기 쉬운 일부 ElapsedTime 블록을 제거했습니다. 이것은 획기적인 변화가 아닙니다. 이러한 블록을 사용하는 기존 블록 OpMode는 블록 편집기와 런타임 모두에서 계속 작동합니다.
- OpMode라는 용어를 "OpMode" 형식으로 표준화합니다.
-
LinearOpMode
(블록 OpMode 포함)를 구체적으로 확장하는 OpMode를 참조하는 기본 방법은 "선형 OpMode"입니다. -
OpMode
직접 확장하는 OpMode를 참조하는 가장 좋은 방법은 "반복 OpMode"입니다.
-
OpMode
및 LinearOpMode
Javadoc 주석을 더 쉽게 읽고 더 많은 세부 정보를 포함하도록 정밀검사합니다. - Java 샘플을 약간 개선합니다.
- Android Studio에서 잘못 렌더링될 수 있는 샘플의 Javadoc 주석이 표준 여러 줄 주석으로 변환되었습니다.
- 샘플 간의 일관성이 향상되었습니다.
- SensorDigitalTouch 샘플은
DigitalChannel
대신 TouchSensor
인터페이스를 사용하는 새로운 SensorTouch 샘플로 대체되었습니다. - ConceptCompassCalibration, SensorMRCompass 및 SensorMRIRSeeker 샘플은 최신 FTC 경쟁에 유용하지 않으므로 삭제되었습니다.
버그 수정
- PlayStation 게임패드를 블루투스 모드에서 사용할 수 없는 버그를 수정했습니다. Bluetooth는 대회에서는 합법적이지 않지만 충전 중이나 홍보 행사에서 DS 장치를 사용하도록 허용하는 데 유용할 수 있습니다.
- 블록 OpMode를 편집하는 동안 Control Hub를 재부팅하면 블록 OpMode의 수정 날짜 값이 1969년 12월 31일로 변경될 수 있는 버그를 수정합니다.
- 자동 TeleOp 사전 선택 기능 수정(8.2에서 손상됨)
- 숫자를 사용하는 Telemetry.addData 블록에 123과 같은 정수를 전달하면 원격 측정에서 123.0으로 표시되는 버그를 수정합니다.
- OnBotJava 자동 완성 문제를 수정합니다.
- 지역 변수를 자동 완성할 때 자동 완성이 현재 클래스에 대한 값을 잘못 제공합니다.
-
hardwareMap
자동 완성에 람다 클래스 항목이 잘못 포함됩니다.
- OnBotJava가 클래스를 자동으로 가져오지 않는 문제를 수정합니다.
- 파일이 삭제될 때 OnBotJava 탭이 닫히지 않는 문제를 수정합니다.
- OnBotJava에서 파일 이름을 바꿀 때 프로젝트 보기 새로 고침이 발생하지 않는 문제를 해결합니다.
- OnBotJava 인터페이스의 외부 라이브러리에 대한 "다운로드" 상황에 맞는 메뉴 항목을 수정합니다.
- 고정폭 모드로 설정하면 Driver Station 원격 측정이 간헐적으로 정지되는 문제를 해결합니다.
- 버전 8.2에 도입된 특정 REV Hub 작업에 대한 성능 회귀를 수정합니다.
- DriveToTag 샘플의 TagID 비교 논리를 수정합니다.
버전 8.2(20230707-131020)
주요 변경 사항
- 비선형(반복) OpMode는 더 이상
stop()
메서드에서 액추에이터를 조작할 수 없습니다. 그렇게 하려는 시도는 무시되고 기록됩니다.- OpMode가 액추에이터를 불법적으로 조작하려고 시도하면 로봇 컨트롤러는
CANCELLED_FOR_SAFETY
텍스트를 포함하는 로그 메시지를 인쇄합니다. - 또한 LinearOpModes는 더 이상 스레드의 인터럽트를 제거하거나 다른 스레드를 사용하여 액추에이터를 조작하는 기능을 다시 얻을 수 없습니다.
- Android 버전 6.0(Marshmallow)에 대한 지원을 제거합니다. minSdkVersion은 이제 24입니다.
- 로보콜 버전을 높입니다.
- 이는 8.2 이상의 로봇 컨트롤러 또는 드라이버 스테이션이 8.1 이하의 드라이버 스테이션 또는 로봇 컨트롤러와 통신할 수 없음을 의미합니다.
- 두 앱을 동시에 업데이트하는 것을 잊은 경우 어떤 앱이 오래되어 업데이트해야 하는지 설명하는 오류 메시지가 표시됩니다.
- FTC_FieldCoordinateSystemDefinition.pdf가 이동되었습니다. 아직 git 기록에 있지만 8.2 태그에 해당하는 git 스냅샷에서는 제거되었습니다. 공식 버전은 이제 Field Coordinate System에 있습니다.
-
LynxUsbDevice.addConfiguredModule()
및 LynxUsbDevice.getConfiguredModule()
LynxUsbDevice.getOrAddModule()
로 대체되었습니다. - Vuforia 및 TensorFlow 객체 감지용 기존 블록은 더 이상 사용되지 않으며 블록 편집기 도구 상자에서 제거되었습니다. Vuforia 또는 TensorFlow 객체 감지용 이전 블록을 포함하는 기존 블록 OpMode는 블록 편집기에서 열 수 있지만 실행하면 작동하지 않습니다.
새로운 기능
- 컴퓨터 비전을 위한 새로운
VisionPortal
API를 추가합니다.- 이 API는 최종 킥오프 릴리스에 따라 변경될 수 있습니다!
- 몇 가지 새로운 샘플이 추가되었습니다.
- AprilTags 감지에 대한 지원을 추가합니다.
-
VisionPortal
은 AprilTag 및 TFOD 처리를 위한 새로운 진입점입니다. - Vuforia는 향후 릴리스에서 제거될 예정입니다.
- TensorFlow 종속성을 업데이트했습니다.
- 블록에 웹캠 카메라 제어에 대한 지원이 추가되었습니다.
- 블록 편집기의 도구 상자에는 이제 유틸리티 카테고리 바로 위에 비전 카테고리가 있습니다.
- 관련 기술에 대한 관련 문서는 다음에서 찾을 수 있습니다.
- 4월태그 소개
- AprilTag SDK 가이드
- AprilTag 감지 값
- 4월태그 테스트 이미지
- 카메라 교정
- Logitech Dual Action 및 Sony PS5 DualSense 게임패드에 대한 드라이버 스테이션 지원을 추가합니다.
- 여기에는 Sony PS5 DualSense Edge 게임패드에 대한 지원이 포함되지 않습니다 .
- 대회에서 게임패드의 합법성을 확인하려면 항상 게임 설명서 1을 참조하세요.
- UVC 드라이버에 MJPEG 페이로드 스트리밍에 대한 지원을 추가합니다(사용하려면 외부 JPEG 압축 해제 루틴 필요).
- 바인딩 해제된 게임패드에서 버튼을 누르거나 스틱을 움직일 때 게임패드를 바인딩하는 방법에 대한 힌트를 드라이버 스테이션 UI에 표시합니다.
- Driver Station에 전체 화면 "카메라 스트림" 옵션을 추가합니다.
- OnBotJava 소스 코드는 마지막 30개 빌드의 롤링 창이 유지되는 모든 빌드에 자동으로 ZIP 파일로 저장됩니다. 코드가 실수로 삭제되거나 손상된 경우 이전 빌드에서 소스 코드를 복구할 수 있습니다.
- USB를 통해 직접 연결되지 않은 확장 허브의 주소 변경에 대한 지원을 추가합니다.
- 이제 확장 허브 주소 변경 화면에는 화면을 떠나지 않고도 주소를 변경하는 적용 버튼이 있습니다.
- 동일한 USB 연결 또는 제어 허브에 연결된 다른 허브에 할당된 주소는 더 이상 선택할 수 없습니다.
- 블록 인라인 댓글의 최대 크기를 100자로 늘립니다.
- 열린 블록 댓글 풍선의 위치를 저장합니다.
- 새로운 AprilTag 구동 샘플 추가: RobotDriveToAprilTagTank 및 RobotDriveToAprilTagOmni
- AprilTags에 대한 카메라 노출 최적화를 설명하기 위해 샘플을 추가합니다: ConceptAprilTagOptimizeExposure
버그 수정
-
AndroidManifest.xml
에 지정된 버전 대신 라이브러리에 정의된 SDK 버전을 사용하여 앱 버전을 보고하도록 검사 화면을 수정했습니다. 이는 앱이 사용자에게 일치하는 버전 번호를 표시할 수 있지만 여전히 버전이 일치하지 않는다고 명시하는 경우를 수정합니다.-
AndroidManifest.xml
에 지정된 버전이 SDK 버전과 일치하지 않으면 SDK 버전 항목이 관리 웹페이지에 표시됩니다.
- Driver Station에서 중복된 이름으로 구성 파일을 저장할 때 표시되는 오류를 수정합니다.
- OpenFTC/EasyOpenCV#57에 나타난 UVC 드라이버의 교착 상태를 수정합니다.
- 카메라를 핫 플러그할 때 발생할 수 있는 UVC 드라이버의 교착 상태를 수정합니다.
- Arducam OV9281 글로벌 셔터 카메라와의 UVC 드라이버 호환성을 수정합니다.
- OpMode 이름이 중복되는 OnBotJava 빌드가 발생할 때 비상 정지 조건을 수정합니다.
- "닫힌 LynxModule 인스턴스 사용 시도" 로그 스팸의 알려진 원인을 수정합니다.
- RS-485를 통해 연결된 확장 허브를 구성할 때 시각적 식별 LED 패턴을 수정합니다.
버전 8.1.1(20221201-150726)
이는 다음 네 가지 문제를 해결하기 위한 버그 수정 전용 릴리스입니다.
- 문제 #492 - 새로운 블록 opmode를 생성할 수 없습니다.
- 문제 #495 - OpMode의 원격 측정 개체에서 최종 수정자를 제거합니다.
- 문제 #500 - Driver Station 앱이 8.1로 업데이트되면 일부 장치를 구성할 수 없습니다.
- 로봇 컨트롤러 앱 또는 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
더 이상 사용하지 않고 존중하지 않습니다.
향상된 기능
- 모든 이전 Control Hub 및 확장 허브에 포함된 원래 BNO055 IMU와 새로운 대체 BHI260AP IMU와 함께 사용할 수 있는 새로운
IMU
인터페이스를 블록 및 Java에 추가합니다.- 웹 인터페이스의 관리 페이지로 이동하여 Control Hub에 있는 IMU 유형을 확인할 수 있습니다.
- 새로운
IMU
인터페이스를 사용하는 방법을 알아보려면 https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html을 참조하세요. SensorIMU
블록 샘플도 새로운 IMU
인터페이스를 사용하도록 업데이트되었으며 다음 Java 샘플이 추가되었습니다.-
SensorIMUOrthogonal
- REV 허브가 로봇 바닥과 평행 또는 수직이 되도록 장착된 경우 이 샘플을 사용하십시오.
-
SensorIMUNonOrthogonal
- REV 허브가 다른 방향으로 로봇에 장착된 경우 이 샘플을 사용하십시오.
-
ConceptExploringIMUOrientations
- 이 OpMode는 직교 방향이 어떻게 작동하는지, 어떤 방향이 로봇에 적용되는지 이해하는 데 도움이 되는 도구입니다.
- BHI260AP IMU는 새로운
IMU
인터페이스를 통해서만 액세스할 수 있습니다. BNO055 IMU는 새로운 IMU
인터페이스를 사용하여 프로그래밍하거나 이전 BNO055IMU
인터페이스를 사용하여 계속 프로그래밍할 수 있습니다. BHI260AP IMU를 포함할 수 있는 새로운 Control Hub로 빠르게 전환할 수 있으려면 새로운 IMU
인터페이스를 사용하도록 코드를 마이그레이션해야 합니다. - REV 허브가 로봇에 평평하게 장착된 경우에만 올바르게 작동했던 이전
BNO055IMU
인터페이스와 달리 IMU
인터페이스를 사용하면 로봇에서 REV 허브의 방향을 지정할 수 있습니다. 이를 설명하고 REV 허브의 특수 좌표계 대신 로봇 좌표계에서 방향을 제공합니다. 결과적으로 REV 허브가 수평일 때가 아니라 로봇이 수평일 때 피치와 요는 0이 되며, 이는 대부분의 장착 방향에 대해 훨씬 더 신뢰할 수 있는 방향 각도 값을 제공합니다. - 새로운 로봇 중심 좌표계로 인해
IMU
인터페이스에서 반환되는 피치 및 롤 각도는 BNO055IMU
인터페이스에서 반환되는 각도와 다릅니다. 코드를 마이그레이션할 때 문서를 주의 깊게 살펴보세요. - BNO055를 교정한 경우
BNO055IMUNew.Parameters
인스턴스를 IMU.initialize()
에 전달하여 해당 교정 데이터를 새 IMU
인터페이스에 제공할 수 있습니다. -
IMU
인터페이스는 쿼터니언 형식의 방향 제공을 지원하는 IMU용 타사 공급업체의 구현에도 적합합니다.
- Iterative
OpMode
s( LinearOpMode
s와 반대)는 이제 전용 스레드에서 실행됩니다.- 사이클 시간은 시스템에서 진행되는 다른 모든 일의 영향을 받아서는 안 됩니다.
- 느린
OpMode
는 더 이상 네트워크 명령을 처리하는 데 걸리는 시간을 늘릴 수 없으며 그 반대의 경우도 마찬가지입니다. -
init()
, init_loop()
, start()
및 loop()
메서드는 더 이상 특정 시간 프레임 내에 반환할 필요가 없습니다.
- BNO055 IMU 레거시 드라이버: 하나의 OpMode에서 초기화하는 기능을 복원한 다음 다른 OpMode에서 해당 초기화를 재사용하도록 합니다. 이를 통해 원하는 경우 OpMode 사이에서 0-yaw 위치를 유지할 수 있습니다.
- FTC SDK에 있는 장치 드라이버의 사용자 정의 버전이 동일한 XML 태그를 사용할 수 있도록 허용합니다.
- 이전에는 장치 드라이버를 사용자 정의하려면 이를 새 클래스에 복사 하고 새 XML 태그를 지정해야 했습니다. 새로운 XML 태그를 제공한다는 것은 사용 중인 드라이버를 전환하려면 구성 파일을 수정해야 함을 의미합니다.
- 이제 사용자 정의 드라이버를 사용하려면
hardwareMap.get()
호출할 때 사용자 정의 드라이버 클래스를 지정하기만 하면 됩니다. 원래 드라이버로 돌아가려면 원래 드라이버 클래스를 지정합니다. 원래 드라이버와 사용자 정의 드라이버 모두에서 구현되는 인터페이스를 지정하는 경우 어떤 구현이 반환될 것인지 보장할 수 없습니다.
버그 수정
- "TensorFlow Lite 모델 관리" 및 "사운드 관리" 링크에 액세스하고 REV 하드웨어 클라이언트에서 블록 및 OnBotJava OpMode 다운로드를 수행하는 문제를 수정합니다.
- I2C 장치 드라이버가 이전 OpMode 실행에서 할당된 매개변수를 사용하여 자동 초기화되는 문제를 해결합니다.
- 가로 레이아웃에서 Driver Station 팝업 메뉴 배치를 개선합니다.
- RC 전화기의 Blocks OpMode에서 구성되지 않은 BNO055 IMU를 가져오려고 시도할 때 NullPointerException을 수정합니다.
- 변수 이름이
orientation
인 경우 블록 관련 문제를 해결합니다.
버전 8.0(20220907-131644)
주요 변경 사항
- 로보콜 버전을 높입니다.
- 이는 8.0 이상의 로봇 컨트롤러 또는 드라이버 스테이션이 7.2 이하의 드라이버 스테이션 또는 로봇 컨트롤러와 통신할 수 없음을 의미합니다.
- 두 앱을 동시에 업데이트하는 것을 잊은 경우 어떤 앱이 오래되어 업데이트해야 하는지 설명하는 오류 메시지가 표시됩니다.
- 이제 I2C 장치 초기화는 처음으로
HardwareMap
에서 검색할 때 발생합니다.- 이전에는 모든 I2C 장치가 실제로 사용 여부에 관계없이 OpMode가 실행되기 전에 초기화되었습니다. 이로 인해 성능이 저하되고 불필요한 경고가 발생할 수 있습니다.
- 이러한 변경으로 인해 Java 사용자는 OpMode의 Init 단계 동안
HardwareMap
에서 필요한 모든 장치를 검색하는 것이 매우 중요합니다. 즉, OpMode가 사용할 각 하드웨어 장치에 대한 변수를 선언하고 각각에 값을 할당합니다. 실행 단계에서는 이 작업을 수행하지 마십시오. 그렇지 않으면 검색 중인 장치가 초기화되는 동안 OpMode가 잠시 중단될 수 있습니다. - 구성 파일에 지정된 모든 I2C 장치를 사용하지 않는 OpMode는 초기화하는 데 더 적은 시간이 걸립니다. 지정된 I2C 장치를 모두 사용하는 OpMode는 이전과 동일한 시간이 소요됩니다.
- BNO055 IMU 드라이버의 각속도 벡터에서 축 회전 속도를 읽는 순서를 변경하여 문제 #251을 해결합니다.
-
BNO055IMU.Parameters
에서 pitchMode
더 이상 사용하지 않습니다.-
pitchMode
PitchMode.WINDOWS
로 설정하면 드라이버에서 사용하는 좌표 규칙이 깨집니다.
-
OpModeManagerImpl
com.qualcomm.robotcore.eventloop.opmode
패키지로 이동합니다.- 이로 인해 타사 라이브러리 EasyOpenCV(버전 1.5.1 이하) 및 FTC 대시보드(버전 0.4.4 이하)가 중단됩니다.
- 더 이상 사용되지 않는
OpMode
메서드 resetStartTime()
삭제합니다(대신 resetRuntime()
사용). - 보호된
LinearOpMode.LinearOpModeHelper
클래스(OpModes에서 사용하기 위한 것이 아님)를 삭제합니다. - I2C 장치(동기식) 구성 유형 제거(2018년부터 더 이상 사용되지 않음)
향상된 기능
- OpModes에서 포착되지 않은 예외에는 더 이상 로봇 재시작이 필요하지 않습니다.
- 스택 추적과 함께 나타나는 블루 스크린은 SDK 오류가 아닙니다. 이는 원격 측정 영역의 빨간색 텍스트를 대체합니다.
- 첫 번째 SDK 릴리스 이후 OpMode 충돌로 인해 로봇이 "비상 중지" 상태가 되었고, 예외의 첫 번째 줄만 표시되었으며 계속하려면 사용자가 "로봇 다시 시작"을 눌러야 했습니다.
- OpMode 중 예외는 이제 로그 뷰어와 동일한 색 구성표로 팝업 창을 엽니다. 여기에는 15줄의 예외 스택 추적이 포함되어 있어 ADB를 통해 로그를 보기 위해 연결하거나 대량의 로그를 스크롤할 필요 없이 문제가 되는 줄을 쉽게 추적할 수 있습니다. 로그 뷰어에서
- 팝업 창의 예외 텍스트는 웹페이지처럼 확대/축소 및 스크롤이 가능합니다.
- 팝업 창에서 "확인" 버튼을 누르면 드라이버 스테이션의 메인 화면으로 돌아가고 "로봇 다시 시작"을 수행할 필요 없이 OpMode를 즉시 다시 실행할 수 있습니다.
- 하드웨어 클래스를 사용하여 로봇 액추에이터를 추상화하고 여러 OpMode에서 공유하는 방법을 보여주는 새로운 Java 샘플을 추가합니다.
- 샘플 OpMode는 ConceptExternalHardwareClass.java입니다.
- 추상화된 하드웨어 클래스는 RobotHardware.java입니다.
- REV 제어/확장 허브 IMU를 사용하도록 RobotAutoDriveByGyro_Linear Java 샘플을 업데이트합니다.
- PowerPlay 자산을 참조하고 이미지 대상의 올바른 이름과 필드 위치를 갖도록 Vuforia 샘플을 업데이트합니다.
- PowerPlay 자산을 참조하도록 TensorFlow 샘플을 업데이트합니다.
- OnBotJava 편집기에 Java 8 언어 기능에 대한 옵트인 지원을 추가합니다.
- 참여하려면 OnBotJava 설정을 열고
Enable beta Java 8 support
선택하세요. - Java 8 코드는 로봇 컨트롤러가 Android 7.0 Nougat 이상을 실행할 때만 컴파일됩니다.
- 여기에서 문제를 보고해 주세요.
- OnBotJava에서 빌드 오류를 클릭하면 이제 올바른 위치로 올바르게 이동합니다.
- OnBotJava 자동 완성 동작을 개선하여 대부분의 경우 더 나은 완성 옵션을 제공합니다.
- 대회에서 검사관이 스캔할 수 있도록 드라이버 스테이션에서 볼 때 로봇 컨트롤러 검사 보고서에 QR 코드를 추가합니다.
- 일부 시나리오에서 I2C 성능과 안정성을 향상합니다.
버전 7.2 (20220723-130006)
주요 변경 사항
- 빌드 툴링을 업데이트합니다. Android Studio 사용자의 경우이 변경에는 Android Studio Chipmunk 2021.2.1이 필요합니다.
- 최신 로봇 핵심 핵심 모듈, 매트릭스 컨트롤러 및 Hitechnic/NXT 컨트롤러 및 센서를 포함하여 경쟁이지 않은 장치에 대한 지원을 제거합니다. 최신 로봇 I2C 센서에 대한 지원이 남아 있습니다.
향상된 기능
- 드라이버 스테이션의 3 점 조경 메뉴 터치 영역의 높이를 증가시켜 선택하기가 훨씬 쉽습니다.
- Opmodes가 즉시 깨끗하게 자체적으로 설정할 수 있도록
terminateOpModeNow()
메소드를 추가합니다. - init-loops를 용이하게하기 위해
LinearOpMode
에 opModeInInit()
메소드를 추가합니다. opModeIsActive()
와 유사하지만 초기 단계. - DirectInput 모드로 설정된 Logitech F310 GamePad가 연결된 경우 사용자에게 경고합니다.
- SparkMini 모터 컨트롤러가 변화 속도 속도에 더 빨리 반응 할 수 있습니다.
- 검사 화면에서 잘못 설치된 자매 앱 (예 : RC 장치 또는 그 반대로 설치된 DS)의 버전 번호를 숨 깁니다.
- 사용자가 RunopMode 블록에 대한 주석을 편집 할 수 있도록 지원을 추가합니다.
- @ExportToBlocks에 ParameterDefaultValues 필드를 추가합니다. 이는 블록 편집기에 표시 될 때 메소드 매개 변수에 대한 기본값을 지정하기 위해 @ExportToBlocks 주석을 가진 Java 메소드의 기능을 제공합니다.
- LinearOpmode 블록을 더 읽기 쉽게 만듭니다. Opmode 이름은 RunopMode 블록에 표시되지만 다른 LinearOpmode 블록에는 표시되지 않습니다.
- vuforia 대신 다른 프레임 생성기를 사용하기위한 Tensorflow 객체 감지에지지를 추가했습니다. Vuforia를 사용하여 카메라 프레임을 TFOD로 전달하는 것이 여전히 지원됩니다.
- 렌더 스크립트 사용을 제거합니다.
-
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- 검사 화면에서 Bluetooth 라디오를 비활성화 할 수 있습니다
- I2C 장치가 응답하지 않을 때 경고 메시지를 향상시킵니다
- Opmodes의 PS4/Etpark Gamepad에 존재하는 RGB LED 제어에 대한 지원이 추가됩니다.
- Opmode 샘플에서 레거시 푸시 보트 참조를 제거합니다. "PushBot"샘플을 "로봇"으로 바꾸십시오. 모터 방향은 "Direct Drive"드라이브 트레인과 호환되도록 역전되었습니다.
버그 수정
- 수정 문제 #316 (matrixf.inverted ()는 1x1 및 2x2 행렬에 대해 잘못된 크기의 행렬을 반환했습니다).
- 자체 검사는 이제 포인트 릴리스 간의 드라이버 스테이션과 로봇 컨트롤러 호환성을 허용합니다.
- 버그 수정 버그가 여러 게임 패드에 대해 동일한
RumbleEffect
객체 인스턴스가 대기되는 경우 두 럼블 명령이 하나의 게임 패드로 전송 될 수 있습니다. - 드라이버 허브에서 고급 게임 패드 기능이 비활성화되고 공식적으로 지원되는 게임 패드가 연결된 경우 드라이버 스테이션의 버그 수정 후 고급 게임 패드 기능 또는 게임 패드 유형을 여는 스크린을 열면 사용자 정의 USB 드라이버가 게임 패드를 리바운드 할 수 있습니다. 고급 게임 패드 기능이 비활성화되었습니다.
- vuforia localizer에서 널 포인터 예외를 보호합니다.
- Onbotjava를 강화하고 블록 저장은 프로그램 및 관리에서 분리 할 때 저장 문제로부터 보호하기 위해 저장됩니다.
- 이전 I2C 작업이 여전히 진행 중이기 때문에 Rev Hub I2C Write가 실패하면 RC 앱이 중단되는 문제를 해결합니다. 이것은 Rev 2m 거리 센서 초기화에서 가장 일반적으로 발생했습니다.
- ConceptWebcam.java 샘플 프로그램을 제거합니다. 이 샘플은 Onbotjava와 호환되지 않습니다.
- @ExportToBlocks에서 html 태그를 사용하는 경우 버그를 수정하면 필드 필드가 블록 편집기가로드되는 것을 방지했습니다.
- 블록 편집기를 수정하여 수정하지 않았을 때 저장을 요구하지 않습니다.
- 오프라인 블록에 편집기에 매우 큰 블록 프로젝트를 업로드하는 수정.
- 블록 편집기 도구 상자에서 dcmotorex의 블록을 생략 한 버그를 수정합니다.
- 수정 블록 블록이 블록을 제거합니다 (텐서 플로우 레이블 블록 사용으로 인해)
버전 7.1 (20211223-120805)
-
isPwmEnabled()
호출 할 때 충돌을 수정합니다 (문제 #223). - 보풀 오류를 수정합니다 (문제 #4).
- 고급 게임 패드 기능이 활성화 된 DualShock4 V1 게임 패드를 사용하려고 할 때 드라이버 스테이션 충돌을 수정합니다 (문제 #173).
- 모든 유형의 게임 패드를 연결할 때 드라이버 스테이션이 발생할 수있는 (그러나 가능성이 낮은) 드라이버 스테이션을 수정합니다.
- 고급 게임 패드 기능이 비활성화 된 경우 Driver Station이 Xbox360 및 Logitech F310 게임 패드를 사용하는 일반 20% Deadzone을 사용하는 버그 수정.
- SimpleomNidrive 샘플 opmode가 추가되었습니다.
- UVC White Balance Control API를 추가합니다.
- 수정 문제 #259 텐서 플로우의 대부분의 블록 샘플은 다른 모델에 사용할 수 없습니다.
- 이전에 라벨링 된 TensorFlowObjectDetectionFreightFrenzy ( "Freight Frenzy를 위해 최적화 된 하위 범주에서)와 TensorflowoBjectDetectionCustommodel ("Custom Model "이라는 하위 범주에서)은 TensorflowBjectDetection이라는 블록으로 대체되었습니다. 기존 OPMODE의 블록은 블록 편집기에서 열 때 새 블록으로 자동 업데이트됩니다.
- 수정 문제 #260 블록은 vuforialocalizer 매개 변수가있는 Java 메소드를 호출 할 수 없습니다.
- 블록에는 이제 블록이 Vuforiafreightfrenzy.getVuforialocalizer라는 블록이 있습니다.
- /sdcard/first/tflitemodels의 텐서 플로우 라이트 모델을 관리하기위한 페이지를 추가했습니다. tflite 모델 페이지로 이동하려면 :
- 관리 페이지 하단의 링크를 클릭 할 수 있습니다.
- 오른쪽 상단의 블록 프로젝트 페이지에서 링크를 클릭 할 수 있습니다.
-
isBusy()
RTP 모드가 아닌 모터에서 호출되면 logspam을 수정합니다. - 전화 기반 로봇 컨트롤러의 검사 화면에서 "RC 비밀번호"항목을 숨 깁니다. (제어 허브에만 적용됩니다).
- 설정 화면에서 채널 165에 Wi-Fi 직접 채널 선택 메뉴를 추가합니다. (165는 이전에 웹 UI를 통해 사용할 수 있었지만 앱에서는 로컬로 제공되지 않았습니다).
버전 7.0 (20210915-141025)
향상 및 새로운 기능
- Onbotjava 및 블록에 외부 라이브러리를 지원합니다.
- Onbotjava에 .jar 및 .aar 파일을 업로드하십시오.
- 알려진 제한 - RobotController 장치는 Android 7.0 이상을 실행해야합니다.
- 알려진 제한 - 자산이있는 AAR 파일은 지원되지 않습니다.
- 외부 라이브러리는 com.qualcomm.robotcore.hardware.configuration.annotations 패키지에 주석을 사용하여 하드웨어 장치를 지원할 수 있습니다.
- 외부 라이브러리에는 기본 코드 용 .SO 파일이 포함될 수 있습니다.
- Onbotjava Opmodes에서 외부 라이브러리를 사용할 수 있습니다.
- 다음 주석을 사용하는 외부 라이브러리는 블록 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.oncreateventLoop
- org.firstinspires.ftc.ftccommon.external.oncreatemenu
- org.firstinspires.ftc.ftccommon.external.ondestroy
- org.firstinspires.ftc.ftccommon.external.webhandlerregistrar
- Rev Robotics Driver Hub에 대한 지원을 추가합니다.
- Driver Station에 완전히 사용자 정의 사용자 공간 USB GamePad 드라이버를 추가합니다 (DS 설정의 "Advanced GamePad 기능"메뉴 참조).
- 기본 Linux 커널 지원 (예 : 루마니아 모토로라 장치)없이 기기에서 게임 패드가 작업 할 수 있습니다.
- DS가 각 게임 패드의 고유 일련 번호를 읽을 수 있도록하여 동일한 모델의 두 게임 패드가 삭제하더라도 삭제 된 게임 패드를 자동 복구 할 수 있습니다. (참고 : 불행히도 이것은 Etpark 게임 패드에는 고유 한 연재물이 없기 때문에 적용되지 않습니다) .
- 고유 한 일련 번호를 읽으면 기본적으로 게임 패드를 특정 위치에 할당하기 위해 DS를 구성하는 기능도 제공합니다 (따라서 시작+A/B를 전혀 수행 할 필요가 없습니다).
- Xbox360 게임 패드의 LED 링과 PS4 게임 패드의 RGB LED 막대는 게임 패드가 바인딩되는 드라이버 위치를 나타내는 데 사용됩니다.
- Xbox360, PS4 및 Etpark 게임 패드의 Rumble Motors는 OPMODE에서 제어 할 수 있습니다.
- PS4 게임 패드의 2 점 터치 패드는 OpModes에서 읽을 수 있습니다.
- 게임 패드의 "뒤로"및 "가이드"버튼은 이제 로봇 컨트롤에 안전하게 바인딩 될 수 있습니다 (이전의 많은 장치에서 Android는 홈 버튼을 누르고 앱을 닫습니다).
- 고급 게임 패드 기능은 기본적으로 활성화되지만 Android가 제공 한 GamePad 지원으로 되돌리기 위해 설정 메뉴를 통해 비활성화 될 수 있습니다.
- 핑 측정의 정확도를 향상시킵니다.
- 로봇에 처음 연결하거나 다시 시작할 때 핑 타임이 현실보다 높은 것으로 보이는 문제를 해결합니다.
- 전체 개선을 보려면 로봇 컨트롤러 및 드라이버 스테이션 앱을 모두 업데이트해야합니다.
- /ftcrobotcontroller/src/main/java/org/firstinspires/ftc/robotcontroller/외부/샘플에 위치한 샘플을 업데이트합니다.
- 이 새로운 Gampad 기능의 사용을 설명하기 위해 ConceptGamePadRumble 및 ConceptGamePadTouchPad 샘플을 추가했습니다.
- 기존 Vuforia 샘플을 단지 2 개의 샘플 (ConceptVuforiafieldNavigation & ConceptVuforiaFieldNavigationWebCAM)으로 보냈습니다. 이들은 현재 시즌의 대상 이미지를 사용합니다.
- 개념 Vuforia 대상으로 직접 운전할 수있는 쉬운 방법을 설명하기 위해 ConceptVuforiadrivetotArgetWebcam을 추가했습니다.
- 경고 시스템과 개인 경고를 많이 개선합니다.
- 경고는 이제 훨씬 더 간격을 두어 읽기 쉽습니다.
- 경쟁하기 전에 해결해야 할 조건에 대한 새로운 경고가 추가되었습니다.
- 불일치 한 앱 경고는 이제 버전 코드가 아닌 메이저 및 마이너 앱 버전을 사용합니다.
- 새로운 FTC 시즌의 로봇 컨트롤러 앱이 설치되면 경고는 자동으로 다시 활성화됩니다.
- 레지스터 주소를 지정하지 않고 확장 허브 / 컨트롤 허브에서 I2C 트랜잭션에 대한 지원을 추가합니다.
- TI I2C 사양의 섹션 3을 참조하십시오.
- 최신 로봇 공학 하드웨어를 사용할 때 이러한 새로운 방법을 호출하면 지원되지 않은 정보가 나타납니다.
- vuforialocalizer
close()
메소드를 공개하도록 변경합니다. - 텐서 플로우 V2 객체 감지 모델에 대한 지원을 추가합니다.
- 자체 검사 언어 및 그래픽의 모호성을 줄입니다.
- Onbotjava는 이제 잠재적으로 의도하지 않은 파일을 덮어 쓰는 것에 대해 경고합니다.
- 웹 페이지 관리에서 Wi-Fi 대역 및 채널 선택기의 동작을 향상시킵니다.
버그 수정
- 드라이버 스테이션이 연결되면 Android 9+에서 로봇 컨트롤러 앱 충돌을 수정합니다.
- Opmode가 Tensorflow tfobjectDetector에서 종료를 호출 할 책임이있는 문제 해결 문제. 이제 이것은 자동으로 수행됩니다.
- Vuforia 초기화 블록을 수정하여 사용자가 Axesorder를 선택할 수 있습니다. 업데이트 된 관련 블록 샘플 opmodes.
- FTCROBOTCONTROLLER 문제 #114 LED 블록 및 Java 클래스가 작동하지 않습니다.
- 이름에 특수 문자가 포함 된 OPMODE에 대한 일치 기록을 수정합니다.
- 수정 드라이버 스테이션 Opmode 컨트롤은 드라이버 스테이션이 조경 레이아웃으로 설정되고 Opmode가 실행 중에 Onbotjava 빌드가 트리거되면 응답하지 않습니다.
- 드라이버 스테이션 앱이 멀어 지거나 화면이 꺼질 때 자체를 닫습니다.
- 이전 장치에서 "Black Swirl of Doom"(무한 "Wi-Fi Direct"메시지 구성)을 수정합니다.
- Onbotjava 인트로 페이지에서 Wiki 의견을 업데이트합니다.
버전 6.2 (20210218-074821)
향상된 기능
- 컨트롤 허브의 내부 확장 허브가 펌웨어를 다시 플래시하여 작동하지 않는 상태를 자동으로 수정하려고 시도합니다.
- 특히 조경 모드에서 Wi-Fi 직접 페어링 화면을 다양한 개선합니다.
- 주 활동이 전경으로 가져 오면 로봇 컨트롤러 서비스를 더 이상 범주 적으로 다시 시작하지 않습니다.
- (예 : 자체 검사 화면을보고 뒤로 버튼을 누르면 서비스가 더 이상 다시 시작되지 않습니다)
- 설정 메뉴 또는 로봇 메뉴가 열리면 여전히 다시 시작됩니다.
버그 수정
- 수정 FTCROBOTCONTROLLER 문제 #71 v6.1 블록 오프라인 편집기에서 OpModes를 열 수 없습니다.
- 수정 FTCROBOTCONTROLLER 문제 #79 6.1 Motorola E5 플레이에서 소프트 재부팅을 유발합니다.
- Control Hub가 내부 확장 허브와 통신 할 수없는 경우 Control Hub OS의 Watchdog가 로봇 컨트롤러 앱을 다시 시작하는 문제를 해결합니다.
- 적절한
HardwareMap
필드에 나타나지 않는 특정 I2C 장치 (예 : hardwareMap.colorSensor
)를 수정합니다. - Control Hub에서 Wi-Fi Factory Reset을 수행하면 Wi-Fi 대역을 2.4GHz로 설정하지 않는 문제가 해결됩니다.
- "구성된 하드웨어를위한 코드 설정"옵션이 선택된 경우 Onbotjava가 새 파일을 생성하지 못할 수있는 문제 수정
- Opmode 충돌 후 특정 작업을 수행하는 경우 문제를 해결합니다. 일시적으로 제어/확장 허브 커뮤니케이션
- 확장 허브가 시작시 확장 허브가 누락 된 경우 구성된 USB 연결 확장 허브가있는 컨트롤 허브가 작동하지 않는 경우 문제를 해결합니다.
- 제어/확장 허브 펌웨어 버전이 불일치하여 발생하는 잠재적 인 문제를 해결합니다.
- 수정 FTC_APP 문제 673 최신 매치 로그가 robotlog에 의해 오래된 것 대신 삭제됩니다.
- 수정 로봇의 카메라를 올바르게 방향으로 배향하여 ConceptVuforiaultimateGoalNavigationWebCAM Opmode를 수정합니다.
- 드라이버 스테이션에서 정지를 요청할 때 LOGCAT가 중단 외상으로 스팸을 보낼 수있는 문제 (이 동작은 실수로 v5.3에 도입되었습니다). 이 변경은 기능에 영향을 미치지 않습니다.
- Teleop Opmode의 이름에 Apostrophe가 포함 된 경우 Blocks 편집기가로드되지 않는 문제를 해결합니다.
버전 6.1 (20201209-113742)
- 구성 화면에서 스캔 버튼을 만들면 RS-485를 통해 연결된 확장 허브 목록을 업데이트합니다.
- 이전 브라우저 및 Android 시스템 WebView 버전과 웹 인터페이스 호환성을 향상시킵니다.
- UVC 드라이버의 문제 해결 문제는 프레임 간격이 잘린 값 (예 : 15fps의
666667*100ns
대신 666666*100ns
)이 아닌 둥근으로보고 된 일부 카메라 (예 : 특정 MS Lifecams)가 스트리밍을 시작하지 않는 경우 문제를 해결합니다. - 가상 PTZ 제어를 위해 UVC 드라이버에서 지원을 추가합니다
- Gain (ISO) 컨트롤을위한 UVC 드라이버에서 지원을 추가합니다
- AE 우선 순위를 활성화/비활성화하기 위해 UVC 드라이버에서 지원을 추가합니다. 이 설정은 카메라 펌웨어를 알려주는 수단을 제공합니다.
- a) 이론적으로 더 나은 이미지를 제공하기 위해 요청 된 프레임 속도를 언더 슈트 할 수 있습니다 (즉, 선택한 프레임 속도의 프레임 간 기간보다 더 긴 노출이 더 길어짐)
- b) 이미지가 결과적으로 표시되지 않은 경우에도 선택된 프레임 속도에 대한 프레임 간 마감일을 충족 해야합니다 .
- Control Hub OS 1.1.2 로봇 컨트롤러 Watchdog에 대한 지원 추가
- 로봇 컨트롤러 앱이 10 초 이상 응답을 중지하면 다시 시작됩니다.
- Android 10+에서 드라이버 스테이션 앱 사용에 대한 지원이 추가됩니다.
- 자동 텔레오프 사전 선택 기능을 소개합니다
- 자세한 내용 및 사용 안내서는이 Wiki 항목을 참조하십시오.
- 드라이버 스테이션의 OpMode 목록 드롭 다운에서 OpMode 이름 옆에 아이콘이 표시되어 OpMode의 소스를 나타냅니다 (즉,이를 작성하는 데 사용되는 프로그래밍 도구).
- Wi-Fi 직접 화면 구성을 표시 한 후 드라이버 스테이션 앱이 종료되는 문제 수정 문제
- Rev 하드웨어 클라이언트를 통해 액세스 할 때 블록 및 Onbotjava 프롬프트를 수정합니다.
버전 6.0 (20200921-085816)
중요 사항
- 버전 6.0은 Ultimate 목표 시즌의 버전입니다.
- Android Studio 4.0이 필요합니다.
- Android Studio 사용자는 처음으로 앱을 구축 할 때 인터넷에 연결해야합니다 (빌드에 필요한 패키지를 다운로드하기 위해).
- 버전 5.5는 2020 년 8 월에 적당히 큰 오프 시즌이었습니다. 아래 릴리스 노트도 검토 할 가치가 있습니다.
- 버전 5.5 이상은 구형 Android 4.x 및 5.x 전화에서 작동하지 않습니다. 사용자는 승인 된 Android 6.x 장치 또는 최신 장치로 업그레이드해야합니다.
- Rev Motors의 기본 PIDF 값은 2018-2019 시즌에 사용 된 기본 PID 값으로 되돌아갔습니다.
- 이 변경은 2018-2019 값이 많은 메커니즘에 더 잘 작동하기 때문에 이루어졌습니다.
- 이것은 다른 모든 모터의 행동에 따라 Rev Motors의 행동을 가져옵니다.
- Rev Motors에 대한 2019-2020 시즌의 행동을 선호하는 경우 PIDF 값은 다음과 같습니다.
HD Hex Motors (모든 기어 박스) : 속도 PIDF 값 : P = 1.17
, I = 0.117
, F = 11.7
위치 PIDF 값 : P = 5.0
코어 육각 모터 : 속도 PIDF 값 : P = 4.96
, I = 0.496
, F = 49.6
위치 PIDF 값 : P = 5.0
새로운 기능
- 텐서 플로우 추론 모델 및 샘플 옵 모드가 포함되어 궁극적 인 골 스타터 스택 (4 링 대 단일 링 스택)을 감지합니다.
- Vuforia Ultimate Goal Vision Targets 및 Sample Opmodes를 포함합니다.
- 텐서 플로우 객체 감지를위한 디지털 줌 기능을 소개합니다 (더 먼 거리에서 물체를보다 정확하게 감지하기 위해).
- Rev UltraPlanetary HD Hex 모터에 대한 구성 항목 추가
향상된 기능
- setgain () 및 getGain () 메소드를 표준화 된 colorsensor 인터페이스에 추가합니다
- 컬러 센서의 게인을 설정하면 다양한 조명 조건에 맞게 조정할 수 있습니다. 예를 들어, 예상보다 낮은 색 값을 감지하면 게인을 증가시킬 수 있습니다.
- 게인 값은 원시 색상 방법이 아닌 argB () 및 getNormalizedColors () 메소드에만 적용됩니다. argb ()를 변환해야하므로 getNormalizedColors () 메소드는 사용 편의성과 명확성을 위해 권장됩니다.
- SensorColor Java 샘플을 업데이트하여 게인 사용량을 보여줍니다
- SensorRevColordistance Java 샘플을 SensorColor Java 샘플로 통합하여 모든 컬러 센서에 대한 모범 사례를 보여줍니다.
- Rev Color Sensor v3에서 값 검색을 향상시킵니다
- RGB 채널의 정규화 계산을 업데이트합니다
- 알파 채널의 계산을 향상시킵니다 (전체 밝기 지표로 사용될 수 있음)
- 기본 센서 해상도를 수정하여 밝은 환경에 문제가 발생했습니다.
- Broadcom 센서 칩의 해상도 및 측정 속도 변경에 대한 지원이 추가됩니다.
- Broadcom 센서 칩에 대한 IR 판독 및 계산 제거
버그 수정
- 무작위 초기화 실패를 방지하기 위해 BNO055IMU IMU 초기화의 신뢰성을 향상시킵니다 (
Problem with 'imu'
가 있음).
버전 5.5 (20200824-090813)
버전 5.5에는 Android Studio 4.0 이상이 필요합니다.
새로운 기능
- 블록 opmodes에서 사용자 정의 Java 클래스를 호출하는 데 도움이됩니다 (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, Telemetry 및 HardWaremap으로 선언 된 매개 변수는 지원되며 매개 변수의 순서에 관계없이 인수가 자동으로 제공됩니다. 블록에서는 해당 매개 변수의 소켓이 자동으로 채워집니다.
- char 또는 java.lang.character로 선언 된 매개 변수는 텍스트를 반환하는 블록을 수락하고 텍스트에서 첫 번째 문자 만 사용합니다.
- 부울 또는 java.lang.boolean으로 선언 된 매개 변수는 부울을 반환하는 블록을 수락합니다.
- 바이트, java.lang.byte, short, java.lang.short, int, java.lang.integer, long 또는 java.lang.long으로 선언 된 매개 변수는 숫자를 반환하고 그 값을 반올림하는 모든 블록을 수락합니다. 가장 가까운 정수.
- float, java.lang.float, double, java.lang.double로 선언 된 매개 변수는 숫자를 반환하는 모든 블록을 허용합니다.
- 디스플레이 형식을 설정하기위한 원격 측정 API 메소드를 추가합니다
- 권위 있는
- 모노 스페이스
- HTML (특정 태그 만)
- 카메라 스위칭에 대한 블록 지원을 추가합니다.
- 사용자 정의 모델로 텐서 플로우 객체 감지를 지원합니다.
- 관리 페이지에서 사용자 정의 텐서 플로우 객체 감지 모델 업로드에 대한 지원이 추가되며 블록 및 Onbotjava 사용자에게 특히 유용합니다.
- Control Hub의 버튼을 사용하여 Wi-Fi 대역이 전환 될 때 새로운 Control Hub Blink 코드를 보여줍니다 (Control Hub OS 1.1.2에서만 가능).
- 고급 RC 설정에서 비활성화 할 수있는 새로운 경고 추가
- 일치하지 않는 앱 버전 경고
- 불필요한 2.4GHz Wi-Fi 사용 경고
- Rev Hub는 구식 펌웨어를 실행 중입니다 (버전 1.8.2 이상)
- Sony PS4 GamePad에 대한 지원을 추가하고 운전자 스테이션에서 GamePad가 작동하는 방법을 재 작업합니다.
- 드라이버 위치에 따라 게임 패드 유형을 설정하는 환경 설정을 제거합니다. 알 수없는 VID 및 PID가있는 게임 패드의 유형을 지정할 수있는 메뉴로 대체
- USB VID 및 PID를 기반으로 게임 패드 유형을 자동화하려는 시도
- GamePad Vid와 PID가 알려지지 않은 경우 SPE 유형을 사용하십시오.