AXXBSolver AXXB标定法
AXXBSolver 算子通过求解 AX = XB 方程 中的最小误差转换关系,获得相机坐标系与机器人坐标系的最佳转换矩阵,即手眼标定的结果,从而实现机器人与相机之间的坐标转换。其中, A 为机器人连杆末端在机器人坐标系下的位姿数据组,B 为标定板在相机坐标系下的位姿数据组。标定结果以 Pose 类型形式呈现。
算子参数
-
结果坐标/result_pose
:设置标定结果 Pose 在 3D 视图中的可视化属性。-
打开标定结果 Pose 可视化。
-
关闭标定结果 Pose 可视化。
-
设置标定结果 Pose 的尺寸大小。取值范围:[0.001~10]。默认值:0.1。
-
数据信号输入输出
输入:
-
tcp_poses
:-
数据类型:PoseList
-
输入内容:机器人末端坐标组
-
-
chessboard_poses
:-
数据类型:PoseList
-
输入内容:标定板坐标组
-
说明:建议使用15组(或更多组)棋盘格标定板坐标组数据。最少不低于6组,否则无法保证精度。
输出:
-
result_pose
:-
数据类型:Pose
-
输出内容:手眼标定结果
-
功能演示
使用 AXXBSolver 算子获得相机坐标系与机器人坐标系的手眼标定的结果。
步骤1:算子准备
添加 Trigger、Load ( 2个 )、AXXBSolver算子至算子图。
步骤2:设置算子参数
-
设置 Load 算子参数:
-
算子名称 → chessboardPose
-
类型 → pose
-
文件 → → 选择pose文件名 ( example_data/AXXB/chessboard.txt )
-
坐标列表 → 可视
-
-
设置 Load_1 算子参数:
-
算子名称 → tcpPose
-
类型 → pose
-
文件 → → 选择pose文件名 ( example_data/AXXB/tcpPose.txt )
-
坐标 → 可视
-
-
设置 AXXBSolver 算子参数:结果坐标 → 可视
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
-
运行结果显示如下,3D 视图中分别展示了 Load(chessboardPose)、Load(tcpPose)、AXXBSolver 算子的可视化结果。
-
查看日志,显示标定结果和误差值。
以上图为例:
-
result_pose 为标定结果 Pose,与算子 AXXBSolver 输出一致。
-
positional error 为标定位置误差(与输入数据单位一致,本例中为“米”),在本例中 0.000361303 为平均误差,0.000152118 和 0.000600956 分别为最小误差和最大误差。
说明:精度误差值符合项目需求即标定完成,若误差略大,超过项目需求可再次重复标定流程,录制更多数据进行标定。若反复多次标定结果均不理想,需结合硬件设备性能考虑精度需求。手眼标定误差由相机误差和机械臂误差叠加。若标定误差巨大,有可能是录入数据格式或顺序不正确,详见 教学案例 -> 自动拆垛 -> 手眼标定部分。