夹爪已经靠近标签,但位置还是不对
ArUco 标签能够被相机识别,机械臂也能够执行 MoveIt2 规划出来的动作。把相机观测到的标签位置转换到机械臂基座以后,夹爪会朝着目标附近移动,却总是偏向一侧。
这个现象很容易让人先怀疑标定矩阵。我们也检查过相机坐标转换、标定点数量和标签姿态,最后发现更底层的问题出在关节方向。
程序里的正方向和真机不一样
机械臂的每个关节都有自己的旋转轴和正方向。程序需要同时处理几套定义。
- URDF 中的 joint axis
- MoveIt2 使用的关节角度
- D1 SDK 返回和接收的舵机角度
- 真机关节实际转动方向
前面的程序把部分关节绕轴转动的顺时针和逆时针方向写反了。机械臂仍然可以运动,规划器也仍然能够返回轨迹,但模型认为的姿态变化与真机实际变化并不一致。
这类错误比完全不动更难发现。程序没有报错,电机也在执行,只是每次运动都把末端带向了错误方向。
错误方向会把标定结果一起带偏
手眼标定需要两组对应数据。
一组来自机械臂。我们根据关节角和正运动学计算出末端在机械臂基座中的位置。
另一组来自相机。相机通过 ArUco 观察标签,得到标签在相机坐标系中的位置。
如果关节方向错了,第一组数据从源头就不准确。后面的矩阵求解程序即使运行正常,也会把这部分误差吸收到变换矩阵里。结果看起来像是“标定算法不稳定”,实际是输入的机械臂位姿与真机不一致。
修正之后必须重新采集
我们逐个检查关节的角度变化和真实运动方向,确认程序、URDF 和真机的正方向保持一致。修正以后,旧的标定数据不能继续直接使用,需要重新采集多组不同姿态,再重新求解相机到机械臂基座的变换。
验证时不能只看矩阵有没有生成,也不能只看求解残差。最终还是要把 ArUco 标签放到地面或目标位置,让夹爪尖端真的移动过去。
标签中心不等于夹爪尖端
关节方向修正以后,夹爪仍然可能存在固定偏移。原因是标定标签贴在夹爪上的位置,和真正要抓取的夹爪尖端不是同一个点。
如果直接把标签中心当成夹爪尖端,机械臂会稳定地移动到一个错误的参考点。这个偏移每次都差不多,反而容易被误认为是标定矩阵的平移误差。
我们还发现,URDF 根据模型几何推算出的夹爪尖端偏移约为 0.1286 m,和真机实际尖端位置存在明显差异,后续实测值接近 0.208 m。模型中的几厘米误差,到了机械臂末端就足以让抓取失败。
这次排查留下的经验
机械臂控制链路验证时,不能只确认“关节会不会动”。每个关节都需要用一个小角度变化检查正方向,角度反馈也要和真实姿态对照。
手眼标定也不能脱离末端几何单独看。标定卡片中心、机械臂末端坐标和夹爪尖端坐标需要分别定义,程序里不能用一个点代替全部参考点。
这次问题最后分成了两部分。关节方向错误影响了姿态计算,夹爪尖端偏移影响了最后的目标位置。前者修正后需要重做标定,后者则需要加入真实末端几何参数。
当前结论
ArUco 标定流程已经能够求出相机到机械臂基座的变换,也完成过真机对准验证。这个结果建立在关节方向修正和末端参考点修正之后。
抓取系统里,模型和真机之间的差异不能靠最后一步的算法补掉。越靠近末端,越应该用实测数据确认几何关系。