手眼标定提供的接口: The interfaces provided by hand-eye calibration tool set: 1 - 相机内参标定工具 Tools for calibrating camera intrinsics 2 - 眼在手上标定 Tools for eye in hand calibration 3 - 眼在手外标定 Tools for eye to hand calibration 需要OpenCV版本>4 Need OpenCV version > 4 需要Boost的filesystem模块,安装boost模块的方法可以通过在 程序的安装: 程序的安装和一般的cmake项目安装方式相同,在程序根目录下创建build文件夹,在build文件夹中打开终端。 在终端输入以下指令: cmake .. make sudo make install (输入用户密码) 运行包会被安装到/usr/lib/libsparkvis.so 运行头文件会被安装到/usr/include/sparkvis/*.hpp里面 如果需要删除库,可以将以上的文件和文件夹删除就可以了(sudo rm 和 sudo rm -rf *) :) 安装完成后构造cmake工程,使用target_link_libraries去链接sparkvis 或者是可以直接使用g++ -lsparkvis 软件的使用方法暂时可以参考在example里的例程,更详细的说明文档以后会提供。 所有的软件接口都定义在sparkvis命名空间里面。 内参标定的使用说明: 内参标定 1 - 构造CamCalib对象 sparkvis::CamCalib cc; 2 - 导入图片 cc.loadImages("<DirectoryName>"); 3 - 设置结果路径,会被保存的结果包括了图像的内参,图像的畸变系数,标定板在不同图像中的姿态 cc.setResultDir("<DirectoryName>"); 4 - 调用标定函数,传入变量保存 cc.calibrateIntrinsics(<Pattern>, <Size of board>, <characteristic dimensions>, <intrinsics mat>, <distortion mat>, <rotation vecs>, <translation vecs>); Pattern - 标定板图案,包括了棋盘格,对称圆与非对称圆 Characteristic dimensions - 特征尺寸,对棋盘格而言,是每个格子的边长;对对称圆来说,是圆心与圆心之间的距离 intrinsic mat - 存储内参矩阵的cv::Mat distortion mat - 存储畸变系数的cv::Mat rotation vecs - 存储每一幅图片中标定板旋转向量 translation vecs - 存储每一幅图片中标定板平移向量 眼在手上标定的使用说明: 1 - 创建EIHCalibrator对象 sparkvis::EIHCalibrator eih; 2 - 设置手眼标定结果存储路径 eih.setResultDir(<DirectoryName>); 3 - 调用calibrateHandEye函数 eih.calibrateHandEye(<ImageDirectory>, <Camera Parameters>, <Robot Poses>, <Size of board>, <characteristic dimension>, <dimension unit>, <Calibration Pattern>); 调用时需要在Image Directory里面准备好图片,目前程序可以接受的图片格式为.jpg或者是.png,图像的命名需要严格按照{<数字>_其他表示.文件格式}去存储,这样才可以保证保存的文件按制定顺序读入。 机器人的姿态存储在一个yml文件里面,用户需要直接改写文件夹里面的内容,现阶段只能输入旋转向量,因为旋转向量是唯一的,而且在大多数的示教器上都可以直接读出来。姿态存储时需要和图片一一对应 注意:图片的数量一定要和机器人的数量一致,否则无法标定! 眼在手外标定的使用说明: 眼在手外的接口和眼在手上的接口基本一致,使用方法也基本相同。 后续开发需求: 后续的