待解决

视觉伺服跑项目,有没有能直接拿来用的代码参考下

金玉满堂
金玉满堂
2026/04/23 14:27

手上有个项目要上视觉伺服,相机装在机械臂末端,目标是在运动过程中实时调整位姿去贴合工件的边缘。大致流程就是图像特征提取→算偏差→转成关节速度指令闭环回去。

现在卡在两件事:一是特征点怎么选比较稳,边缘点用 Sobel 提完噪声挺大;二是控制律用 IBVS 还是 PBVS 更合适,工件大概在视野中心±30mm 晃,相机帧率60Hz,机械臂是6轴。网上资料翻了一堆,要么是MATLAB仿真,要么是ROS里只有驱动没有伺服例程,自己从头撸又怕踩坑。

各位有没有实际跑通过的开源代码可以参考?最好是带相机标定→特征提取→控制闭环一整套的,C++或者Python都行。

13 3

全部回复 (3)

peng88
peng88#1

直接给你说我们项目里用的方案。特征点用 Shi-Tomasi 角点+ LK 光流追踪,配合 RANSAC 剔误匹配,边缘点 Sobel 在动态光照下确实容易飘。控制律用 IBVS 即可,PBVS 需要精确的深度估计,你这场景工件在动不合适。60Hz 帧率配合 1kHz 控制环没问题,我们用 ROS 的 image_proc + visp_ros 做过,visp 里有个 tutorial-servo-pixpoint 直接拿来改就行。注意 Jacobian 的计算要用图像矩,雅可比矩阵在深度变化时要在线估计,否则收敛慢。

2026/04/23 23:23
19780406
19780406#2

想问下你的相机标定用啥方法?我们这边之前用张氏标定法跑视觉伺服,标定误差到 0.1 像素以内才能稳,你这精度够不够?另外末端相机标定外参那步如果误差大了,伺服过程会一直抖。

2026/04/24 02:55
老郭
老郭#3

不同意直接上 IBVS 的观点。我们做过一个类似的工件贴合项目,最后用的是混合伺服:平移部分用 PBVS(用 PnP 解算位姿),旋转部分用 IBVS(避免深度奇异),效果比纯 IBVS 收敛快一倍,特征点只用 4 个就够了。另外提醒一句,60Hz 视觉+6轴臂,延迟控制不好容易超调,我们当时加了 Smith 预估补偿才稳的。

2026/04/26 13:50