Visual Servoing
视觉伺服是一种反馈控制方法,它利用摄像头图像引导机器人运动,并通过持续的视觉校正使机器人朝目标移动。
视觉伺服是一种反馈控制技术,它利用相机图像持续调整机器人的运动,使其朝目标位置或视角移动。机器人会观察视觉特征,测量这些特征与目标配置之间的差异,并随着新图像到达不断修正运动。这将负责解读图像的计算机视觉与负责将测量结果转化为实际动作的机器人技术联系起来。视觉伺服控制是它的同义词。J. Hill 和 W. T. Park 于 1979 年在《移动相机机器人的实时控制》中提出了这一术语。
视觉伺服的工作原理#
视觉伺服系统会将当前观测结果与目标图像或相对位姿进行比较。特征提取会提供关键点、线条位置或对象轮廓等测量结果。控制器将由此得到的误差转换为运动指令。运动会改变相机的观测结果,从而形成反馈回路;随着机器人接近目标,系统可以反复进行修正。
交互矩阵也称为图像雅可比矩阵,用于描述相机运动如何改变视觉测量值。其伪逆可将特征误差映射为校正速度;控制器增益决定校正力度。相机的安装方式决定了两种常见配置:手眼配置将相机安装在移动工具上,眼在手外配置则使用外部相机观测工作空间。
Ultralytics YOLO 为这一控制回路提供感知测量结果:YOLO26通过目标检测生成边界框,其 ROS 集成则在机器人软件组件之间传递相机获取的检测结果和深度信息。下游控制器会使用这些测量结果计算运动。
基于图像和基于位置的视觉伺服#
主要方法的区别在于控制误差的表示方式:
- 基于图像的视觉伺服 (IBVS):最小化当前图像特征与目标图像特征之间的差异,例如点坐标。点特征控制器会使用相机几何信息和深度估计,将图像运动与物理运动联系起来。
- 基于位置的视觉伺服 (PBVS):使用位姿估计恢复三维位置和方向,然后减小当前位姿与目标位姿之间的差异。相机标定和几何重建会影响其精度。
- 混合视觉伺服:结合图像空间和三维测量结果。成熟的2.5D 视觉伺服方法将图像特征与部分位姿信息结合起来。
目标跟踪会在不同帧之间保持特征或对象的对应关系;视觉伺服则利用这些观测结果控制运动。视觉 SLAM会估计相机运动并构建地图。这些感知能力支持机器人导航和控制系统中的不同环节。
应用场景与实际限制#
- 机器人抓取:在近距离抓取过程中,RGB-D 相机可能超出其最小深度感知距离,无法再提供有效的距离测量。闭环视觉抓取使用 IBVS,通过 RGB 特征测量继续修正最后阶段的接近动作,包括对象移动时的情况。
- 移动机器人定位:ViSP Pioneer 演示控制一台配备相机的 Pioneer P3-DX 机器人,使其相对于视觉目标移动。目标观测结果通过基于位置的控制器决定机器人的校正运动。
时序和可见性会直接影响控制。图像处理延迟会造成跟踪滞后,并可能使控制回路不稳定。因此,在实时推理中,推理延迟与检测精度同样重要。遮挡会中断特征对应关系,而条件不佳的特征几何关系会使速度估计容易受到图像噪声的影响。传感器融合会将视觉测量结果与关节编码器等信息结合起来,以便在运动过程中维持有用的状态估计。
一个最简 IBVS 仿真#
此 Python 仿真将标准伪逆控制律应用于一台观察单个静止点并横向平移的相机。使用 pip install numpy 安装 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}")随着反复修正使该点居中,图像误差会从约 178.89 像素降至 0.01 像素。对于点特征,平移交互项与深度成反比:点的深度加倍时,同样的相机横向平移所产生的图像位移会减半。










