Funcionalidades avançadas e rastreio
Este capítulo descreve em detalhe as funcionalidades de rastreio automático do sistema, incluindo o rastreio de cores, o rastreio de rostos e o rastreio de códigos QR, bem como o mecanismo de bloqueio de alvos e a afinação de parâmetros.
Visão geral dos modos de rastreio automático
O sistema suporta três modos de rastreio automático:
- Rastreio de cores: rastrear objetos de uma cor específica
- Rastreio de rostos: rastrear rostos
- Rastreio de códigos QR: rastrear códigos QR
Rastreio de cores
Seleção de cor
O sistema suporta o rastreio de várias cores:
- Vermelho
- Verde
- Azul No programa, pode alternar a cor através das teclas:
X: selecionar vermelhoY: selecionar verdeZ: selecionar azul
Fluxo de utilização do rastreio de cores
- Prima
Cpara conectar o gimbal - Prima
2para entrar no modo de rastreio de cores - Coloque o objeto com a cor pretendida no centro da imagem
- Prima
Tpara bloquear o alvo - Mova o alvo e observe o efeito de seguimento do gimbal
Exemplo simples de rastreio de cores
Também pode utilizar o programa de exemplo simples de rastreio de cores:
python examples/04_color_track_simple.py --camera 0 --port COM3 --color redEste programa disponibiliza a funcionalidade de rastreio de cores mais básica; adequado para aprendizagem.
Rastreio de rostos
Princípio do rastreio de rostos
O sistema utiliza o classificador em cascata de Haar do OpenCV para a deteção de rostos. Após detetar um rosto, o sistema calcula automaticamente a posição do alvo e controla o gimbal para o seguir.
Fluxo de utilização do rastreio de rostos
- Prima
Cpara conectar o gimbal - Prima
1para entrar no modo de rastreio de rostos - Coloque o rosto no centro da imagem
- Prima
Tpara bloquear o alvo - Mova o rosto; o gimbal segue automaticamente
Sugestões para melhorar a taxa de sucesso da deteção de rostos
- Mantenha uma iluminação adequada e evite contraluz
- O rosto deve estar virado de frente para a câmara
- Mantenha uma distância adequada (recomendado: 1-3 metros)
- Evite cenas com vários rostos ou utilize o mecanismo de bloqueio para fixar o alvo do rastreio
Rastreio de códigos QR
O modo de rastreio de códigos QR utiliza o QRCodeDetector do OpenCV para o reconhecimento e a localização de códigos QR. O método de utilização é semelhante ao dos dois modos anteriores:
- Conecte o gimbal e entre no modo de rastreio de códigos QR
- Coloque o código QR no centro da imagem e prima
Tpara bloquear - Mova o código QR e observe o efeito de seguimento do gimbal
Mecanismo de bloqueio de alvos
Função do bloqueio
O mecanismo de bloqueio de alvos é uma funcionalidade essencial do sistema e desempenha as seguintes funções:
- Regista a posição central e o tamanho do alvo no momento do bloqueio
- Quando aparecem vários alvos, dá prioridade ao alvo mais próximo do ponto de bloqueio
- Evita que o alvo mude constantemente e mantém a estabilidade do rastreio
Fluxo de bloqueio
- Coloque o objeto alvo no centro da imagem
- Prima
Tpara bloquear - Após o bloqueio bem-sucedido, o sistema dá prioridade ao alvo mais semelhante ao do momento do bloqueio
- Prima
Spara cancelar o bloqueio e parar o rastreio
Lógica de seleção no bloqueio
Ao selecionar o alvo após o bloqueio, o sistema tem em conta dois fatores:
- Distância: proximidade do centro do alvo em relação ao ponto de bloqueio (peso 70%)
- Tamanho: semelhança do tamanho do alvo com o do momento do bloqueio (peso 30%)
- O sistema escolhe para rastreio o alvo com a pontuação global mais elevada
Afinação dos parâmetros de controlo do rastreio
Em src/trackers/tracking_controller.py, existem os seguintes parâmetros ajustáveis:
| Nome do parâmetro | Valor predefinido | Descrição |
|---|---|---|
| kp_pan | 0.08 | Ganho proporcional do rastreio horizontal |
| kp_tilt | 0.12 | Ganho proporcional do rastreio vertical |
| dead_zone | 30 | Intervalo da zona morta (píxeis); dentro deste intervalo o gimbal não se move |
| min_move_interval | 0.15 | Intervalo mínimo entre movimentos (segundos); limita a frequência de movimento do gimbal |
Métodos de ajuste dos parâmetros
- Rastreio demasiado lento: aumente
kp_panekp_tilt - Rastreio demasiado sensível, que causa vibração: diminua
kp_panekp_tilt, ou aumentemin_move_interval, ou aumentedead_zone - Ajustes finos frequentes, que causam vibração: aumente
dead_zone - Direção invertida: altere o sinal de
delta_panoudelta_tiltno métodocalculate_move
Exemplo completo de utilização do rastreio
Segue-se um exemplo completo do fluxo de utilização:
- Inicie o programa:
python examples/auto_tracking_demo.py --camera 0 --port COM3 --color red- Prima
Cpara conectar o gimbal - Prima
2para selecionar o modo de rastreio de cores - Coloque o objeto vermelho no centro da imagem
- Prima
Tpara bloquear o alvo - Mova o objeto e observe o efeito de seguimento do gimbal
- Se quiser mudar para verde, prima
Ye volte a premirTpara bloquear - Prima
Spara parar o rastreio eRpara recentrar - Prima
Qpara sair
Sugestões de desenvolvimento avançado
Se precisar de personalizar funcionalidades ou desenvolver trabalho adicional, pode consultar:
src/sc_servo.py: camada de comunicação de baixo nível com os servossrc/gimbal.py: controlo do gimbalsrc/trackers/tracking_controller.py: controlador de rastreiosrc/detectors/: vários detetores de alvos

