跳到主要内容

眼在手上标定说明

1. 内参标定

1.1 安装配置

1.1.1 标定材料准备

访问以下链接下载用于内参标定的棋盘格

https://markhedleyjones.com/projects/calibration-checkerboard-collection

将下载的文件打印出来后固定到大小合适的面板上,用游标卡尺测量方格的大小并记录数据。

或用平板显示下载的pdf,固定文件页面显示界面(如下图所示),测量棋格大小并记录数据。

1.1.2 相机位置固定

将相机固定在机械臂相机支架上,同时固定机械臂于桌面。

1.1.3 相机驱动安装

1.1.4 标定库及配置

一般情况下,ROS默认安装了camera_calibration相关的库,可以运行以下命令测试:

若输出为以下内容可跳过该步骤。

反之,根据以下命令安装及配置标定库。

1.2 内参标定启动

1.2.1 相机启动

运行成功后可看到相应的相机图像数据。

1.2.2 机械臂启动 (可选)

分别在两个终端启动以下指令:

该步骤可忽略,主要是为了调整相机到合适高度以尽可能多采集数据。

1.2.3 内参标定代码启动

将对应的sizesquare修改为对应棋盘格的数据。

1.3 标定过程

1.3.1 数据采集

在相机标定代码启动后,把标定板移动到相机视野中,会出现下图右侧所示的内容。

通过旋转和移动标定板尽可能采集更多的图像数据直至 X Y Size Skew对应的进度条颜色为绿色且接近满格,之后,点击CALIBRATION按钮,计算标定结果,计算的时长和标定数据集的大小正相关。

1.3.2 标定保存

内参标定结果计算出后,点击界面右侧的SAVE按钮保存标定结果。

运行以下命令更改标定结果存储位置:

将压缩包解压后,保存标定结果至usb-cam能自动加载内参数据文件的路径下:

若相关的文件夹不存在,需要自行创建。

1.3.3 标定验证

关闭相机程序并重新启动。

运行以下指令验证相机内参数据是否成功加载:

得到结果:

2. 外参标定

2.1 环境搭建

2.1.1 准备 Aruco 标定码

访问以下网址生成Aruco码或用文档中的PDF打印Aruco码。

https://chev.me/arucogen/

2.1.2 硬件环境搭建

将相机固定在机械臂相机支架上,机械臂固定在桌面上,同时把打印出的 Aruco 码固定于桌面。

2.1.3 软件库安装及配置

参考以下文档2.2节安装标定库

手眼标定

参考文档的第3节修改配置~/alicia_ws/src/example/logi_eye_on_hand.launch相关参数

2.2 眼在手标定启动

2.2.1 机械臂启动

roslaunch alicia_duo_driver serial_server.launch 

2.2.2 标定代码启动

cd alicia_ws/src/example
roslaunch logi_eye_on_hand.launch

2.3 标定过程

参照眼在外标定中标定具体步骤,完成眼在手外参标定。

运行上述代码后,新建终端并输入:

检测/aruco_tracker/result数据,确保Aruco ID正确识别。

  1. 点击Take Sample进行数据记录每一个机械臂位姿, 以下界面是标定数据记录窗口。

  • 更新机械臂位姿,单次数据记录后,按照下图步骤控制机械臂运动。

点击Check starting pose,测试起始位姿是否能成功标定(需多次尝试,尽量找最优的标定起始点,即能够通过测试且标定过程中无规划失败的位姿)。

  • 重复步骤1和步骤2采集标定17条数据。

  • 标定结果计算。

采集完数据后,切换Calibration algorithmOpenCV/Daniilidis并点击Compute按钮。

最终计算出以下结果并点击Save保存结果。

3. 参考资料

https://wiki.ros.org/camera_calibration

https://markhedleyjones.com/projects/calibration-checkerboard-collection

https://github.com/ros-drivers/usb_cam

https://github.com/IFL-CAMP/easy_handeye