<aside> 🧭
노트북을 ELRS 조종기처럼 만들고, War Thunder 마우스 조준 방식으로 비행기를 조종하는 프로그램의 개발 기록. 시간은 한국 시간(KST), 대화 로그와 코드 수정 시각 기준.
</aside>
마우스·키보드
→ flight_ui.py (조준 → 정렬 PID → 뱅크/피치 명령, 짐벌 CH7/CH8)
→ crsf_link.py (CRSF 0x16 채널 프레임 50~100Hz, 400000bps)
→ FT232R (신호 반전) → Ranger CRSF 핀 → ELRS 2.4GHz → SuperD → F405 INAV (ANGLE)
F405 텔레메트리 (자세·배터리·GPS·고도·LQ)
→ Ranger → FT232R RX → crsf_link.py 수신 스레드 → HUD·정렬 PID
카메라 → F405 OSD → VTX → VRX → 캡처보드 → flight_ui.py 배경 영상
| 파일 | 역할 |
|---|---|
crsf_test.py |
처음 만든 송신 테스트 (고정/사인파 채널, COM 자동 탐색) |
crsf_link.py |
CRSF 인코더 + 송신 스레드 + 텔레메트리 파서(자세·배터리·링크·GPS·바리오·기압) |
raw_dump.py |
수신 바이트를 그대로 찍는 진단 도구 |
telemetry_viewer.py |
텔레메트리 값과 자세를 눈으로 확인하는 미니 앱 |
flight_ui.py → FlightUI.exe |
메인 UI: 워썬더 HUD, 마우스 조준, 정렬 PID, 짐벌, F2 튜닝 |
sim/pyflyt_sim.py |
PyFlyt/PyBullet 가상 기체 + INAV 흉내 제어기 + 자동 튜너 |
sim/camera_setup.py |
시뮬 시작 전 카메라 위치·고정/짐벌 설정 화면 |
sim/models/biplane/build_biplane.py |
Fusion 복엽기 → OBJ/URDF 변환 |
I 모드에서 마우스로 실제 GM3 짐벌을 돌리는 화면. 오른쪽 F2 패널에 짐벌 보정값(끝각·방향·지연·시정수·화각), 아래 LOOK 팬/틸트 표시, 위쪽 깨진 글자는 폰트 업로드 전 INAV OSD
| 날짜 | 증상 | 원인 | 해결 |
|---|---|---|---|
| 9/22 | 송신 몇 초 뒤 링크 끊김 | ELRS 핸드셋 baud 후보에 420000 없음 | 400000 고정 |
| 9/29 | 디버그 덤프 중 바인드 끊김 | 아무것도 안 보내면 Ranger가 핸드셋을 잃음 | 중립 프레임 송신 스레드 |
| 9/29 | 마우스를 움직일수록 트림 밀림 | Windows 200% DPI 배율 | DPI-aware 선언 |
| 10/06 | 텔레메트리 프레임 누락 | 0xEA 시작 프레임을 버림 | 주소 목록 추가 |
| 10/22 | 텔레메트리 안 옴 | TX 직렬 저항 + FT232R 약한 출력 | TX·RX 저항 없이 직결 |
| 10/22 | RSSI −247dBm | 부호 있는/없는 값 혼용 | 부호 처리 수정 |
| 10/24 | 피치 반대 | INAV CRSF는 기수 위 = 음수 | 부호 반전 |
| 10/24 | 자세 뚝뚝 끊김 | 자세 10Hz | 예측 스무더 |
| 10/24 | 조준이 일정 높이 이상 안 감 | ±80° 고도 제한 | NED 단위벡터 |
| 11/05 | 시뮬 기체가 뒤집힘 | PyFlyt 셋포인트 순서 문서 오류 | 실측 재매핑 |
| 11/05 | 모델 못 열음 | PyBullet 한글 경로 | 영문 캐시 |
| 11/05 | 정렬 PID 진동 | 요 미분 잡음 | D에 뱅크 기반 선회율 |
| 11/05 | 짐벌 영상이 도는 화면 | 짐벌 영상을 롤만큼 회전 | 회전 없이 짐벌 방향에 배치 |
| 11/06 | exe 튜닝값 저장 안 됨 | PyInstaller 임시 폴더 | exe 폴더에 저장 |
| 11/07 | 영상 대신 웹캠 | 캡처 장치 번호 변경 | 번호 재지정 (이름 탐색 사용 권장) |
| 11/07 | 짐벌 표시 지연 | 짐벌 응답 시간 | 지연 + 1차 지연 모델로 추정해 표시 |
| 11/13 | 짐벌이 마우스 반대로 감 | 방향값 −1 | 팬·틸트 +1 |
| 11/13 | 크게 돌리면 +와 실제 물체가 벌어짐 | 화각 120°·끝각 추정값 | 녹화 분석: 화각 72°, 끝각 160° |
| 11/14 | 짐벌 틸트 때 플래퍼론 작동 가능 | FLAPERON 모드가 CH7 | CH10으로 이동 |
| 11/14 | 짐벌이 뚝뚝 끊기며 따라옴 | ELRS 보조 채널 저해상도 | Ranger 333Hz Full (예정) |
| 11/14 | 링크 없을 때 짐벌이 아래로 숙임 | CH7 페일세이프 값 | CH7 1500 지정 (예정) |