Visual Servoing
A servoação visual é um método de controlo por realimentação que usa imagens de câmara para orientar o movimento do robô, com correções visuais contínuas em direção a um alvo.
A servovisão é uma técnica de controlo por retroalimentação que usa imagens de câmera para ajustar continuamente o movimento de um robô em direção a uma posição ou ponto de vista desejado. O robô observa características visuais, mede a diferença em relação a uma configuração-alvo e corrige o movimento à medida que novas imagens chegam. Isso conecta a visão computacional, que interpreta imagens, à robótica, que transforma essas medições em ações físicas. Controlo servo visual é um sinónimo. J. Hill e W. T. Park introduziram o termo em 1979 com Controlo em tempo real de um robô com uma câmera móvel.
Como funciona a servovisão#
Um sistema de servovisão compara as observações atuais com uma imagem desejada ou uma pose relativa. A extração de características fornece medições como pontos-chave, posições de linhas ou contornos de objetos. Um controlador converte o erro resultante em comandos de movimento. O movimento altera as observações da câmera, fechando o ciclo de retroalimentação e permitindo correções repetidas à medida que o robô se aproxima do objetivo.
Uma matriz de interação, também chamada de Jacobiana da imagem, descreve como o movimento da câmera altera as medições visuais. A sua pseudoinversa converte o erro das características em uma velocidade corretiva; o ganho do controlador define a intensidade dessa correção. A montagem da câmera determina dois arranjos comuns: eye-in-hand posiciona a câmera na ferramenta móvel, enquanto eye-to-hand usa uma câmera externa que observa a área de trabalho.
O Ultralytics YOLO fornece medições de perceção para este ciclo: YOLO26 gera caixas delimitadoras por meio da deteção de objetos, e a sua integração ROS transmite deteções derivadas da câmera e informações de profundidade entre componentes de software do robô. Um controlador posterior usa essas medições para calcular o movimento.
Servovisão baseada em imagem e baseada em posição#
Os principais métodos diferem na representação do erro de controlo:
- Servovisão baseada em imagem (IBVS): minimiza as diferenças entre as características atuais e desejadas da imagem, como as coordenadas de pontos. Os controladores baseados em características de pontos usam a geometria da câmera e estimativas de profundidade para relacionar o movimento na imagem ao movimento físico.
- Servovisão baseada em posição (PBVS): usa a estimativa de pose para recuperar a posição e a orientação tridimensionais e, em seguida, reduz a diferença em relação à pose desejada. A calibração da câmera e a reconstrução geométrica afetam a sua precisão.
- Servovisão híbrida: combina medições no espaço da imagem e medições tridimensionais. A abordagem estabelecida de servovisão 2.5D combina características da imagem com informações parciais de pose.
O rastreamento de objetos mantém a correspondência de características ou objetos entre quadros; a servovisão usa essas observações para controlar o movimento. O SLAM visual estima o movimento da câmera e constrói um mapa. Estas capacidades de perceção apoiam diferentes partes do sistema de navegação e controlo de um robô.
Aplicações e limitações práticas#
- Preensão robótica: durante a preensão a curta distância, uma câmera RGB-D pode ultrapassar o limite mínimo de distância de deteção de profundidade e perder medições de alcance válidas. A preensão visual em malha fechada usa IBVS para continuar a corrigir a aproximação final com medições de características RGB, inclusive quando o objeto se move.
- Posicionamento de robôs móveis: a demonstração ViSP Pioneer controla um robô Pioneer P3-DX equipado com câmera em relação a um alvo visual. As observações do alvo determinam o movimento corretivo do robô por meio de um controlador baseado em posição.
O tempo e a visibilidade afetam diretamente o controlo. O atraso no processamento de imagens introduz latência no rastreamento e pode desestabilizar o ciclo. Por isso, a latência de inferência é importante, assim como a precisão da deteção na inferência em tempo real. A oclusão interrompe a correspondência de características, enquanto uma geometria de características mal condicionada torna as estimativas de velocidade sensíveis ao ruído da imagem. A fusão de sensores combina medições visuais com informações como as dos codificadores de juntas para manter estimativas de estado úteis durante o movimento.
Uma simulação mínima de IBVS#
Esta simulação em Python aplica a lei de controlo padrão baseada na pseudoinversa a uma câmera que se desloca lateralmente enquanto observa um ponto estacionário. Instala NumPy com pip install numpy.
import numpy as np
point = np.array([0.0, 0.0, 2.0])
camera = np.array([-0.4, 0.2, 0.0])
desired = np.zeros(2)
gain, dt, focal_pixels = 1.0, 0.05, 800.0
initial_error = np.linalg.norm((point - camera)[:2] / point[2])
for _ in range(200):
relative = point - camera
observed = relative[:2] / relative[2]
error = observed - desired
# Interaction matrix for sideways camera translation.
interaction = -np.eye(2) / relative[2]
velocity = -gain * np.linalg.pinv(interaction) @ error
camera[:2] += velocity * dt
final_error = np.linalg.norm((point - camera)[:2] / point[2])
print(f"Pixel error: {initial_error * focal_pixels:.2f} -> {final_error * focal_pixels:.2f}")O erro da imagem diminui de aproximadamente 178.89 pixels para 0.01 pixels à medida que correções repetidas centralizam o ponto. Para características de pontos, os termos translacionais de interação são inversamente proporcionais à profundidade: duplicar a profundidade do ponto reduz para metade o deslocamento da imagem produzido pelo mesmo deslocamento lateral da câmera.










