고급 기능 및 트래킹
이 섹션에서는 색상 추적, 얼굴 추적, QR 코드 추적을 포함한 시스템의 자동 추적 기능과 대상 잠금 메커니즘, 파라미터 튜닝을 자세히 소개합니다.
자동 추적 모드 개요
시스템은 세 가지 자동 추적 모드를 지원합니다:
- 색상 추적: 지정한 색상의 물체를 추적합니다
- 얼굴 추적: 얼굴을 추적합니다
- QR 코드 추적: QR 코드를 추적합니다
색상 추적
색상 선택
시스템은 다양한 색상의 추적을 지원합니다:
- 빨간색
- 초록색
- 파란색 프로그램에서 키를 눌러 색상을 전환할 수 있습니다:
X: 빨간색 선택Y: 초록색 선택Z: 파란색 선택
색상 추적 사용 절차
C를 눌러 짐벌을 연결합니다2를 눌러 색상 추적 모드로 들어갑니다- 대상 색상의 물체를 화면 중앙에 놓습니다
T를 눌러 대상을 잠급니다- 대상을 움직이며 짐벌이 따라오는 효과를 관찰합니다
간단한 색상 추적 예제
간단한 색상 추적 예제 프로그램을 사용할 수도 있습니다:
python
python examples/04_color_track_simple.py --camera 0 --port COM3 --color red이 프로그램은 가장 기본적인 색상 추적 기능을 제공하므로 학습에 적합합니다.
얼굴 추적
얼굴 추적 원리
시스템은 OpenCV의 Haar 캐스케이드 분류기를 사용하여 얼굴을 검출합니다. 얼굴이 검출되면 시스템이 대상 위치를 자동으로 계산하고 짐벌을 제어하여 따라갑니다.
얼굴 추적 사용 절차
C를 눌러 짐벌을 연결합니다1을 눌러 얼굴 추적 모드로 들어갑니다- 얼굴을 화면 중앙에 놓습니다
T를 눌러 대상을 잠급니다- 얼굴을 움직이면 짐벌이 자동으로 따라갑니다
얼굴 검출 성공률을 높이는 권장 사항
- 조명을 충분히 유지하고 역광을 피합니다
- 얼굴을 카메라 정면으로 향하게 합니다
- 적절한 거리를 유지합니다(1-3m 권장)
- 여러 얼굴이 동시에 나오는 상황을 피하거나, 잠금 메커니즘으로 추적 대상을 고정합니다
QR 코드 추적
QR 코드 추적 모드는 OpenCV의 QRCodeDetector를 사용하여 QR 코드를 인식하고 위치를 찾습니다. 사용 방법은 앞의 두 추적 모드와 유사합니다:
- 짐벌을 연결하고 QR 코드 추적 모드로 들어갑니다
- QR 코드를 화면 중앙에 놓고
T를 눌러 잠급니다 - QR 코드를 움직이며 짐벌이 따라오는 효과를 관찰합니다
대상 잠금 메커니즘
잠금의 역할
대상 잠금 메커니즘은 시스템의 핵심 기능으로, 다음과 같은 역할을 합니다:
- 잠금 시 대상의 중심 위치와 크기를 기록합니다
- 여러 대상이 나타나면 잠금 지점에서 가장 가까운 대상을 우선 선택합니다
- 대상이 자주 튀는 것을 방지하여 추적의 안정성을 유지합니다
잠금 절차
- 대상 물체를 화면 중앙에 놓습니다
T를 눌러 잠급니다- 잠금에 성공하면 시스템이 잠금 시와 가장 유사한 대상을 우선 추적합니다
S를 누르면 잠금을 해제하고 추적을 중지할 수 있습니다
잠금 시 선택 로직
시스템은 잠금 후 대상 선택 시 두 가지 요소를 종합적으로 고려합니다:
- 거리: 대상 중심과 잠금 지점의 거리(가중치 70%)
- 크기: 대상 크기가 잠금 시와 유사한 정도(가중치 30%)
- 시스템은 종합 점수가 가장 높은 대상을 선택하여 추적합니다
추적 제어 파라미터 튜닝
src/trackers/tracking_controller.py에는 다음과 같이 조정할 수 있는 파라미터가 있습니다:
| 파라미터 이름 | 기본값 | 설명 |
|---|---|---|
| kp_pan | 0.08 | 좌우 추적의 비례 게인 |
| kp_tilt | 0.12 | 상하 추적의 비례 게인 |
| dead_zone | 30 | 데드존 범위(픽셀), 이 범위 내에서는 짐벌을 이동하지 않음 |
| min_move_interval | 0.15 | 최소 이동 간격(초), 짐벌 운동 주기를 제한 |
파라미터 조정 방법
- 추적이 너무 느림:
kp_pan과kp_tilt를 증가시킵니다 - 추적이 너무 민감하여 떨림 발생:
kp_pan과kp_tilt를 감소시키거나,min_move_interval을 증가시키거나,dead_zone을 증가시킵니다 - 잦은 미세 조정으로 떨림 발생:
dead_zone을 증가시킵니다 - 방향이 반대:
calculate_move메서드에서delta_pan또는delta_tilt의 부호를 수정합니다
추적 사용 전체 예제
다음은 전체 사용 절차 예제입니다:
- 프로그램을 시작합니다:
python
python examples/auto_tracking_demo.py --camera 0 --port COM3 --color redC를 눌러 짐벌을 연결합니다2를 눌러 색상 추적 모드를 선택합니다- 빨간색 물체를 화면 중앙에 놓습니다
T를 눌러 대상을 잠급니다- 물체를 움직이며 짐벌이 따라오는 효과를 관찰합니다
- 초록색으로 바꾸려면
Y를 누른 후 다시T를 눌러 잠급니다 S를 눌러 추적을 중지하고,R을 눌러 중앙으로 복귀시킵니다Q를 눌러 종료합니다
심화 개발 팁
기능을 사용자 정의하거나 2차 개발을 진행하려면 다음을 참고할 수 있습니다:
src/sc_servo.py: 서보 통신 저수준src/gimbal.py: 짐벌 제어src/trackers/tracking_controller.py: 추적 컨트롤러src/detectors/: 다양한 대상 검출기

