chrisneagu/FTC-Skystone-Dark-Angels-Romania-2020
요약
이 문서는 FIRST Tech Challenge (FTC) 대회 로봇 제어에 사용되는 공개 SDK와 관련 자료를 안내합니다. Android 앱을 구축하는 데 필요한 소스 코드를 제공하며, 초보자를 위한 블록 튜토리얼부터 고급 Java 프로그래머를 위한 마이그레이션 가이드까지 단계별 학습 경로를 제시합니다.
핵심 포인트
- FTC 로봇 제어용 공개 SDK가 포함된 저장소입니다.
- 초심자는 FTC Blocks 온라인 튜토리얼로 시작하는 것이 권장됩니다.
- Android Studio 사용자를 위해 프로젝트 다운로드 및 가져오기 방법이 안내됩니다.
- 최신 정보는 '상시적(evergreen)' 온라인 문서와 Javadoc을 참고해야 합니다.
저장소: chrisneagu/FTC-Skystone-Dark-Angels-Romania-2020
언어: Java
스타: 309
포크: 91
설명:
공지사항 이 저장소는 SKYSTONE (2019-2020) 대회 시즌의 공개 FTC SDK를 포함하고 있습니다. 현재 시즌의 FTC SDK 소프트웨어를 찾고 있다면, 다음 새롭고 영구적인 공개 FTC SDK 홈인 FtcRobotController 저장소를 방문해 주십시오. 환영합니다! 이 GitHub 저장소는 FIRST Tech Challenge 대회 로봇을 제어하는 Android 앱을 구축하는 데 사용되는 소스 코드를 포함하고 있습니다. 이 SDK를 사용하려면 전체 프로젝트를 로컬 컴퓨터에 다운로드/클론해야 합니다.
시작하기 만약 로보틱스가 처음이거나 FIRST Tech Challenge가 처음이라면, 다음 FTC 블록 튜토리얼을 검토하여 제어 시스템 사용법에 익숙해지는 것을 고려해야 합니다:
FTC Blocks 온라인 튜토리얼
고급 Java 프로그래머라 할지라도, FTC 블록 튜토리얼로 시작한 다음 OnBot Java Tool 또는 Android Studio로 마이그레이션하는 것이 도움이 됩니다.
프로젝트 다운로드 만약 Android Studio 프로그래머라면 이 저장소를 다운로드할 몇 가지 방법이 있습니다. 참고로, 로봇을 프로그래밍하기 위해 블록이나 OnBot Java Tool을 사용하는 경우 이 저장소를 다운로드할 필요는 없습니다.
git 사용자인 경우, 다음 명령어로 저장소의 최신 버전을 클론할 수 있습니다:
git clone https://github.com/FIRST-Tech-Challenge/SKYSTONE.git
또는 선호하는 경우, 메인 저장소 페이지에서 사용할 수 있는 "Zip 다운로드" 버튼을 사용할 수 있습니다.".ZIP 파일로 프로젝트를 다운로드하면 다운로드 크기를 관리하기 쉽습니다.
또한 이 저장소의 릴리스(Releases) 페이지의 다운로드 섹션에서 프로젝트 폴더(zip 또는 tar.gz 압축 파일 형식)도 다운로드할 수 있습니다.
다운로드하고 (필요한 경우) 압축을 해제한 후, Android Studio를 사용하여 폴더를 가져올 수 있습니다 ("프로젝트 가져오기 (Eclipse ADT, Gradle 등)").
도움말 (Getting Help) 사용자 문서와 튜토리얼을 먼저 확인하세요(User Documentation and Tutorials FIRST). 온라인 문서는 FIRST Tech Challenge 소프트웨어 및 로봇 제어 시스템 사용 방법에 대한 정보와 튜토리얼을 제공합니다. 다음 링크를 사용하여 이 문서에 접속할 수 있습니다: SKYSTONE 온라인 문서 참고로, 온라인 문서는 지속적으로 업데이트되고 편집되는 '상시적(evergreen)' 문서입니다. 여기에는 FIRST Tech Challenge 소프트웨어 및 제어 시스템에 대한 가장 최신 정보가 포함되어 있습니다.
Javadoc 참조 자료 FTC SDK의 Javadoc 참조 문서는 이제 온라인에서 이용 가능합니다. 다음 링크를 클릭하여 FTC SDK Javadoc 문서를 라이브 웹사이트로 확인하세요: FTC Javadoc 문서 참고 FTC SDK에 대한 문서는 이 저장소에도 포함되어 있습니다.
boolean 또는 java.lang.Boolean으로 선언된 파라미터는 boolean을 반환하는 모든 블록을 허용합니다. byte, java.lang.Byte, short, java.lang.Short, int, java.lang.Integer, long, 또는 java.lang.Long으로 선언된 파라미터는 숫자를 반환하는 모든 블록을 허용하며 해당 값을 가장 가까운 정수로 반올림합니다. float, java.lang.Float, double, java.lang.Double으로 선언된 파라미터는 숫자를 반환하는 모든 블록을 허용합니다. 표시 형식을 클래식 모노스페이스(Classic Monospace) 또는 HTML(특정 태그만 가능)로 설정하는 텔레메트리 API 메서드가 추가됩니다. 카메라를 전환하는 블록 지원이 추가됩니다. 사용자 지정 모델을 사용한 TensorFlow Object Detection에 대한 블록 지원이 추가됩니다. Manage 페이지에서 사용자 지정 TensorFlow Object Detection 모델을 업로드하는 지원이 추가되었으며, 이는 Blocks 및 OnBotJava 사용자에게 특히 유용합니다. Control Hub의 버튼을 사용하여 WiFi 대역을 전환할 때 새로운 Control Hub 깜박임 코드가 표시됩니다(Control Hub OS 1.1.2에서만 가능). 고급 RC 설정(Advanced RC Settings)에서 비활성화할 수 있는 새로운 경고가 추가되었습니다. 앱 버전 불일치 경고, 불필요한 2.4 GHz WiFi 사용 경고, REV Hub의 오래된 펌웨어 실행 경고(버전 1.8.2보다 이전) 등이 있습니다. Sony PS4 게임패드 지원이 추가되었으며, 드라이버 스테이션에서 게임패드가 작동하는 방식이 재작업되었습니다. 드라이버 위치를 기반으로 게임패드 유형을 설정하던 환경설정이 제거되었습니다.
메뉴로 대체되어, VID와 PID가 알려지지 않은 게임패드의 유형을 지정할 수 있습니다. USB VID 및 PID를 기반으로 게임패드 유형을 자동 감지하려고 시도합니다. 만약 게임패드 VID와 PID가 알려져 있지 않다면, 해당 VID와 PID에 대해 사용자가 지정한 유형을 사용합니다. 게임패드 VID와 PID가 알려지지 않았고 AND 사용자가 해당 VID와 PID에 대한 유형을 지정하지 않은 경우, 게임패드를 매핑하는 방법에 대해 추정(educated guess)이 이루어집니다.
드라이버 스테이션은 이제 게임패드가 연결 해제되는 상황에서 자동으로 복구하고, 이전에 할당되었던 위치로 다시 할당하려고 시도합니다.
- 게임패드가 하나만 할당되어 있고 떨어지는 경우: 복구될 수 있습니다.
- 게임패드가 두 개가 할당되어 있고, 서로 다른 VID/PID 시그니처를 가지며, 하나만 떨어지는 경우: 복구될 것입니다.
- 게임패드가 두 개가 할당되어 있고, 서로 다른 VID/PID 시그니처를 가지며, 둘 다 떨어지는 경우: 둘 다 복구될 것입니다.
- 게임패드가 두 개가 할당되어 있고, 동일한 VID/PID 시그니처를 가지며, 하나만 떨어지는 경우: 복구될 것입니다.
- 게임패드가 두 개가 할당되어 있고, 동일한 VID/PID 시그니처를 가지며, 둘 다 떨어지는 경우: 어느 것도 복구되지 않습니다. 그 이유는 게임패드가 USB 버스에 다시 나타날 때의 모호성 때문입니다.
현재 알려진 엣지 케이스(edge case)가 하나 있습니다. 만약 동일한 VID/PID 시그니처를 가진 두 개의 게임패드가 연결되어 있지만, 하나만 할당되었고 둘 다 떨어지는 경우, 자동 복구로 할당 위치에 선택될 확률은 50%입니다. 이는 USB 버스 컨트롤러에 의해 먼저 재열거(re-enumerated)되는 장치에 따라 결정됩니다.
드라이버 스테이션에 가로 모드 사용자 인터페이스 추가 기능:
- 새 기능: 오디오 신호가 있는 연습 타이머
- 새 기능 (컨트롤 허브 전용): 무선 네트워크 연결 강도 표시기 (0-5 바)
- 새 기능 (컨트롤 허브 전용): 핑/채널 디스플레이를 탭하면 라디오 RX dBm 및 링크 속도를 보여주는 대체 디스플레이로 전환됩니다 (다시 탭하여 원래 화면으로 돌아갈 수 있습니다). 레이아웃은 자동 회전되지 않습니다. 드라이버 스테이션의 설정 메뉴에서 레이아웃을 변경할 수 있습니다.
변경 사항:
- Android 버전 4.4부터 5.1까지 지원이 제거되었습니다 (KitKat 및 Lollipop).
최소 API 레벨(minSdkVersion)이 이제 23으로 변경되었습니다. 더 이상 사용되지 않는 LinearOpMode 메서드인 waitOneFullHardwareCycle()과 waitForNextHardwareCycle()가 제거되었습니다. 향상 기능은 Control Hub의 RS485 주소를 자동으로 처리합니다. Control Hub는 예약된 주소를 자동으로 할당받습니다. 기존 설정 파일은 계속 작동합니다. 1부터 10까지의 모든 주소 범위는 Expansion Hub에 여전히 사용 가능합니다. 이제 Control Hub의 표시등은 주소를 나타내기 위해 깜빡이지 않고 정상적으로 녹색 불이 들어옵니다. Control Hub는 더 이상 Expansion Hub 주소 변경 설정 페이지에 표시되지 않습니다. REV Hub 펌웨어 업데이트기가 개선되었습니다. 사용자는 이제 사용 가능한 모든 펌웨어 업데이트 파일 중에서 선택할 수 있습니다. REV Hub 펌웨어 버전 1.8.2가 Robot Controller 앱에 번들로 포함됩니다. Expansion Hub는 USB를 통해서만 업데이트될 수 있음을 명확히 하기 위해 텍스트가 추가되었습니다. 신뢰성을 개선하기 위해 펌웨어 업데이트 속도가 조정되었습니다. REV Hub의 경우 Manage 웹페이지에서 직접 펌웨어를 업데이트할 수 있습니다. Robot Controller의 로그 뷰어가 개선되었습니다. 가로 스크롤 지원(더 이상 줄 바꿈되지 않음)이 가능합니다. 핀치-투-줌(pinch-to-zoom)을 지원합니다. 고정폭 글꼴(monospaced font)을 사용합니다. 오류 메시지가 강조 표시됩니다. 새로운 색상 구성표가 적용되었습니다. 전체 앱을 재시작하지 않고도 오작동/멈춘 OpMode를 강제 중지하려고 시도합니다. 모든 유형의 오작동 조건이 중지될 수 있는 것은 아니지만, 사용자 코드가 오작동 중에 하드웨어와 통신을 시도하는 경우 시스템이 이를 포착할 수 있어야 합니다.
Self Inspect 화면에 다양한 수정 사항을 적용했습니다. "OS 버전" 항목의 이름을 "Android 버전"으로 변경했습니다. "WiFi Direct 이름"을 "WiFi 이름"으로 변경했습니다. Control Hub OS 버전을 추가하여, Control Hub 보고서를 볼 때 표시합니다. Control Hub 보고서에서 비행기 모드 항목을 숨깁니다. ZTE Speed Channel Changer 확인 기능을 제거했습니다. 모든 확장 장치(Expansion) 및 Control Hub의 펌웨어 버전을 표시합니다. Manage 페이지의 네트워크 설정 부분을 개편했습니다. 이제 모든 네트워크 설정은 단일 클릭으로 적용됩니다. 휴대폰 기반 Robot Controller의 WiFi Direct 채널을 Manage 페이지에서 변경할 수 있습니다. WiFi 채널은 대역(2.4 GHz vs 5 GHz) 및 다른 채널과의 중복 여부에 따라 필터링됩니다. 현재 WiFi 채널이 휴대폰 기반 Robot Controller와 OS 1.1.2 이상 버전의 Control Hub에 미리 선택되어 제공됩니다. OS 1.1.2 이상 버전을 실행하는 Control Hub에서는 시스템이 5 GHz 대역에서 자동으로 채널을 선택하도록 설정할 수 있습니다. OnBotJava를 개선했습니다. 새 라이트 및 다크 테마가 이전 테마(chaos, github, chrome 등)를 대체합니다. 새로운 기본 테마는 라이트이며, 이 버전으로 처음 업데이트할 때 사용됩니다. OnBotJava에 탭 기반 에디터가 추가되었습니다. 읽기 전용 오프라인 모드를 지원합니다. Robot Controller 및 Driver Station의 "종료" 메뉴 항목 기능을 개선했습니다. 이제 완전히 중지되고 메모리에서 언로드되는 것이 보장됩니다. 시작 조건 감시 실패로 인해 LinearOpMode가 조기에 존재하는 경우 경고 메시지를 표시합니다. Driver Station과 Robot Controller가 서로 호환되지 않을 때 표시되는 오류 메시지를 개선했습니다. Driver Station OpMode 제어판은 Restart Robot이 진행 중일 때는 비활성화됩니다. Robot Controller가 Control Hub인 경우 WiFi Direct 관련 고급 설정을 비활성화합니다. 배터리가 낮거나 임계치에 도달했을 때 Driver Station의 휴대폰 배터리 아이콘을 색상으로 표시합니다. 새로운 구성 파일에서 적절한 경우 "Control Hub Portal" 및 "Control Hub"라는 이름을 사용합니다. I2C 읽기 성능을 개선했습니다. Control Hub에서 매우 큰 개선이 이루어졌으며, 작은 (예:
6 바이트) 읽기 작업이 Expansion Hub에서는 그렇게 눈에 띄지 않습니다. 휴대폰에 연결된 경우 업데이트/새로고침 빌드 인프라를 사용합니다. 'com.android.support:appcompat'에서 지원하는 라이브러리(androidx)로 업데이트했습니다. 타겟 SDK 버전 및 컴파일 SDK 버전을 28로 업데이트했습니다. Android Studio의 Android 플러그인을 최신 버전으로 수정했습니다. '정보' 화면에 보고된 빌드 타임스탬프를 수정했습니다. 수동 웹캠 사용을 보여주는 샘플 추가: ConceptWebcam 버그 수정 SkyStone 이슈 #248 수정 SkyStone 이슈 #232를 수정하고, 캐시 보존(cache-preserving) MANUAL/AUTO 전환이 가능하도록 벌크 캐싱 의미론(semantics)을 변경했습니다. REV 2M 거리 센서가 분리되었을 때 성능이 향상됩니다. 특정 장치에서 Toast 메시지의 가독성이 높아집니다. 다른 컨트롤러가 연결 해제된 후에도 Driver Station이 Robot Controller에 연결할 수 있도록 개선되었습니다. 실제 시리얼 번호를 제공하지 않는 UVC 카메라의 가짜 시리얼 번호 생성을 개선했습니다. 이전에 일부 장치는 이러한 카메라에 0:0의 시리얼을 할당하여 열거나 스트리밍을 시작하는 데 실패했습니다. ftc_app 이슈 #638을 수정했습니다. Vuforia 카메라 모니터와 관련된 다수의 버그를 수정했습니다. 미리보기가 잘못된 화면 비율로 표시될 수 있던 버그를 수정했습니다. 가로 모드에서 미리보기가 잘릴 수 있던 버그를 수정했습니다. 휴대폰 회전 시 미리보기가 완전히 엉망이 되던 버그를 수정했습니다. 웹캠 사용 시 크로스헤어가 목표물에서 벗어날 수 있던 버그를 수정했습니다. 일부 장치에서 UVC 드라이버에 문제가 발생하던 이슈(ftc_app 681)는, 스트리밍을 여러 번 연속으로 시작/중지할 때 발생했습니다. 이 문제는 해당 커널 패치가 없는 장치에서는 커널 패닉(kernel panic)으로 나타났습니다. 패치가 적용된 영향을 받는 장치에서는 단순히 스트리밍 시작 실패로 나타났습니다. Tech Team은 문제의 근본 원인이 Linux 커널 XHCI 드라이버의 버그라고 생각합니다. SDK UVC 드라이버에 대한 임시 해결책(workaround)이 구현되었습니다. 카메라에서 나오는 프레임 중 절반가량이 손실되던 UVC 드라이버의 버그를 수정했습니다 (예: 30FPS로 설정된 스트리밍 세션 동안 15FPS만 전송되는 경우).
TensorFlow Object Detection에서 최소 신뢰도 매개변수보다 낮은 신뢰도를 가진 결과를 표시하는 문제를 수정했습니다. 잠재적인
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기